From 21033357358f8a9196867141c00a0c13e41a6d09 Mon Sep 17 00:00:00 2001 From: Teddy Middleton-Smith Date: Tue, 14 Jan 2025 10:53:24 +0000 Subject: [PATCH] Fix: Remove keys etc. for public demo repo. --- README.md | 72 +- app.log.1 | 83 - app.log.2 | 132 - app.log.3 | 147 - .../datastore_store_product_category.py | 23 +- pay_stripe.py | 2 +- .../000_init_tables_authentication.sql | 824 - .../deprecated/000_init_tables_product.sql | 1520 -- .../108_tbl_Shop_Recurrence_Interval.sql | 20 - ...109_tbl_Shop_Recurrence_Interval_Audit.sql | 22 - ...1_tbl_Shop_Product_Variation_Type_Link.sql | 28 - ...Shop_Product_Variation_Type_Link_Audit.sql | 23 - .../116_tbl_Shop_Product_Variation_Link.sql | 35 - ..._tbl_Shop_Product_Variation_Link_Audit.sql | 23 - ..._tbl_Shop_Product_Delivery_Region_Link.sql | 32 - ...hop_Product_Delivery_Region_Link_Audit.sql | 23 - .../deprecated/170_ish_tbl_ERP_Order.sql | 19 - .../deprecated/171_tbl_Shop_User_Order.sql | 39 - .../172_tbl_Shop_User_Order_Audit.sql | 27 - .../173_tbl_Shop_User_Order_Product_Link.sql | 33 - ...tbl_Shop_User_Order_Product_Link_Audit.sql | 22 - .../308_tri_Shop_Recurrence_Interval.sql | 56 - ...1_tri_Shop_Product_Variation_Type_Link.sql | 61 - .../316_tri_Shop_Product_Variation_Link.sql | 61 - .../MySQL/deprecated/322_tri_Shop_Price.sql | 93 - ..._tri_Shop_Product_Delivery_Region_Link.sql | 57 - .../deprecated/371_tri_Shop_User_Order.sql | 67 - .../373_tri_Shop_User_Order_Product_Link.sql | 55 - .../7000_p_shop_get_many_role_permission.sql | 131 - .../7000_p_shop_get_many_user_order.sql | 285 - .../deprecated/706_p_shop_get_product.sql | 657 - .../deprecated/9020_edit_permissions.sql | 83 - static/MySQL/deprecated/dump.sql | 8235 --------- static/MySQL/deprecated/dump2.sql | 8235 --------- static/PostgreSQL/000_combine.sql | 15113 ---------------- static/PostgreSQL/001_destroy.sql | 293 - .../100.0_tbl_Shop_Product_Change_Set.sql | 13 - .../100.1_tbl_Shop_User_Change_Set.sql | 13 - .../100.2_tbl_Shop_Access_Level.sql | 21 - ...l_Shop_Sales_And_Purchasing_Change_Set.sql | 13 - .../100.3_tbl_Shop_Access_Level_Audit.sql | 22 - static/PostgreSQL/100_tbl_Msg_Error_Type.sql | 13 - static/PostgreSQL/102_tbl_File_Type.sql | 17 - static/PostgreSQL/103_tbl_File_Type_Audit.sql | 22 - static/PostgreSQL/104_tbl_Shop_General.sql | 17 - .../PostgreSQL/105_tbl_Shop_General_Audit.sql | 22 - static/PostgreSQL/106_tbl_Shop_Category.sql | 21 - .../107_tbl_Shop_Category_Audit.sql | 22 - .../108_tbl_Shop_Recurrence_Interval.sql | 20 - ...109_tbl_Shop_Recurrence_Interval_Audit.sql | 22 - static/PostgreSQL/110.0_tbl_Shop_Region.sql | 20 - .../110.1_tbl_Shop_Region_Audit.sql | 22 - .../110.2_tbl_Shop_Region_Branch.sql | 29 - .../110.3_tbl_Shop_Region_Branch_Audit.sql | 22 - static/PostgreSQL/110.4_tbl_Shop_Currency.sql | 23 - .../110.5_tbl_Shop_Currency_Audit.sql | 23 - .../110.6_tbl_Shop_Tax_Or_Surcharge.sql | 38 - .../110.7_tbl_Shop_Tax_Or_Surcharge_Audit.sql | 23 - static/PostgreSQL/110.8_tbl_Shop_Product.sql | 48 - .../110.9_tbl_Shop_Product_Audit.sql | 22 - .../112_tbl_Shop_Variation_Type.sql | 21 - .../113.0_tbl_Shop_Variation_Type_Audit.sql | 22 - static/PostgreSQL/114_tbl_Shop_Variation.sql | 25 - .../115_tbl_Shop_Variation_Audit.sql | 22 - .../117.1_tbl_Shop_Product_Permutation.sql | 47 - ...7.2_tbl_Shop_Product_Permutation_Audit.sql | 23 - ...hop_Product_Permutation_Variation_Link.sql | 28 - ...oduct_Permutation_Variation_Link_Audit.sql | 23 - ..._tbl_Shop_Product_Currency_Region_Link.sql | 40 - ...hop_Product_Currency_Region_Link_Audit.sql | 22 - static/PostgreSQL/118_tbl_Shop_Image_Type.sql | 21 - .../119_tbl_Shop_Image_Type_Audit.sql | 22 - static/PostgreSQL/120_tbl_Shop_Image.sql | 35 - .../PostgreSQL/121_tbl_Shop_Image_Audit.sql | 21 - .../122_tbl_Shop_Delivery_Option.sql | 25 - .../123_tbl_Shop_Delivery_Option_Audit.sql | 22 - ..._tbl_Shop_Product_Delivery_Option_Link.sql | 44 - ...hop_Product_Delivery_Option_Link_Audit.sql | 22 - static/PostgreSQL/130.4_tbl_Shop_Discount.sql | 48 - .../131_tbl_Shop_Discount_Audit.sql | 23 - ...tbl_Shop_Discount_Region_Currency_Link.sql | 32 - ...op_Discount_Region_Currency_Link_Audit.sql | 23 - .../153_tbl_Shop_Permission_Group.sql | 21 - .../154_tbl_Shop_Permission_Group_Audit.sql | 23 - static/PostgreSQL/155_tbl_Shop_Permission.sql | 29 - .../156_tbl_Shop_Permission_Audit.sql | 23 - static/PostgreSQL/157_tbl_Shop_Role.sql | 20 - static/PostgreSQL/158_tbl_Shop_Role_Audit.sql | 23 - .../159_tbl_Shop_Role_Permission_Link.sql | 31 - ...60_tbl_Shop_Role_Permission_Link_Audit.sql | 22 - static/PostgreSQL/161_tbl_Shop_User.sql | 22 - static/PostgreSQL/162_tbl_Shop_User_Audit.sql | 23 - .../163_tbl_Shop_User_Role_Link.sql | 26 - .../164_tbl_Shop_User_Role_Link_Audit.sql | 22 - static/PostgreSQL/165_tbl_Shop_Address.sql | 33 - .../PostgreSQL/166_tbl_Shop_Address_Audit.sql | 23 - .../PostgreSQL/167_tbl_Shop_User_Basket.sql | 39 - .../168_tbl_Shop_User_Basket_Audit.sql | 27 - .../169_tbl_Shop_User_Order_Status.sql | 21 - .../170_tbl_Shop_User_Order_Status_Audit.sql | 22 - static/PostgreSQL/181.0_tbl_Shop_Supplier.sql | 32 - .../181.1_tbl_Shop_Supplier_Audit.sql | 22 - .../181.2_tbl_Shop_Unit_Measurement.sql | 22 - .../181.3_tbl_Shop_Unit_Measurement_Audit.sql | 22 - ...4_tbl_Shop_Unit_Measurement_Conversion.sql | 22 - ...Shop_Unit_Measurement_Conversion_Audit.sql | 22 - ...181.6_tbl_Shop_Supplier_Purchase_Order.sql | 41 - ...tbl_Shop_Supplier_Purchase_Order_Audit.sql | 22 - ...p_Supplier_Purchase_Order_Product_Link.sql | 37 - ...lier_Purchase_Order_Product_Link_Audit.sql | 22 - ...plier_Purchase_Order_Product_Link_Temp.sql | 34 - ..._tbl_Shop_Manufacturing_Purchase_Order.sql | 33 - ...hop_Manufacturing_Purchase_Order_Audit.sql | 22 - ...ufacturing_Purchase_Order_Product_Link.sql | 38 - ...uring_Purchase_Order_Product_Link_Temp.sql | 35 - ...ring_Purchase_Order_Product_Link_Audit.sql | 22 - static/PostgreSQL/187.0_tbl_Shop_Customer.sql | 29 - .../187.1_tbl_Shop_Customer_Audit.sql | 22 - .../187.2_tbl_Shop_Customer_Sales_Order.sql | 35 - ...88_tbl_Shop_Customer_Sales_Order_Audit.sql | 22 - ...Shop_Customer_Sales_Order_Product_Link.sql | 38 - ...ustomer_Sales_Order_Product_Link_Audit.sql | 22 - ...Customer_Sales_Order_Product_Link_Temp.sql | 34 - ...i_Shop_Sales_And_Purchasing_Change_Set.sql | 26 - .../301.1_tri_Shop_User_Change_Set.sql | 20 - .../301.2_tri_Shop_Access_Level.sql | 66 - .../301_tri_Shop_Product_Change_Set.sql | 22 - static/PostgreSQL/302_tri_File_Type.sql | 48 - static/PostgreSQL/303_tri_File_Type_Audit.sql | 33 - static/PostgreSQL/304_tri_Shop_General.sql | 47 - static/PostgreSQL/306_tri_Shop_Category.sql | 63 - .../308_tri_Shop_Recurrence_Interval.sql | 59 - static/PostgreSQL/310.0_tri_Shop_Region.sql | 59 - .../310.2_tri_Shop_Region_Branch.sql | 57 - static/PostgreSQL/310.4_tri_Shop_Currency.sql | 71 - .../310.6_tri_Shop_Tax_Or_Surcharge.sql | 80 - static/PostgreSQL/310.8_tri_Shop_Product.sql | 173 - .../312_tri_Shop_Variation_Type.sql | 63 - static/PostgreSQL/314_tri_Shop_Variation.sql | 59 - .../317.1_tri_Shop_Product_Permutation.sql | 133 - ...hop_Product_Permutation_Variation_Link.sql | 65 - ..._tri_Shop_Product_Currency_Region_Link.sql | 97 - static/PostgreSQL/318_tri_Shop_Image_Type.sql | 63 - static/PostgreSQL/320_tri_Shop_Image.sql | 75 - .../322_tri_Shop_Delivery_Option.sql | 75 - ..._tri_Shop_Product_Delivery_Option_Link.sql | 77 - static/PostgreSQL/330_tri_Shop_Discount.sql | 87 - ...tri_Shop_Discount_Region_Currency_Link.sql | 61 - .../353_tri_Shop_Permission_Group.sql | 63 - static/PostgreSQL/355_tri_Shop_Permission.sql | 71 - static/PostgreSQL/357_tri_Shop_Role.sql | 63 - .../359_tri_Shop_Role_Permission_Link.sql | 65 - static/PostgreSQL/361_tri_Shop_User.sql | 71 - .../363_tri_Shop_User_Role_Link.sql | 51 - static/PostgreSQL/365_tri_Shop_Address.sql | 83 - .../PostgreSQL/367_tri_Shop_User_Basket.sql | 63 - .../369_tri_Shop_User_Order_Status.sql | 63 - static/PostgreSQL/381.0_tri_Shop_Supplier.sql | 83 - .../381.2_tri_Shop_Unit_Measurement.sql | 67 - ...ri_Shop_Unit_Of_Measurement_Conversion.sql | 71 - ...381.6_tri_Shop_Supplier_Purchase_Order.sql | 78 - ...p_Supplier_Purchase_Order_Product_Link.sql | 87 - ..._tri_Shop_Manufacturing_Purchase_Order.sql | 63 - ...ufacturing_Purchase_Order_Product_Link.sql | 87 - static/PostgreSQL/387.0_tri_Shop_Customer.sql | 79 - .../387.2_tri_Shop_Customer_Sales_Order.sql | 62 - ...Shop_Customer_Sales_Order_Product_Link.sql | 86 - static/PostgreSQL/600_p_shop_save_product.sql | 257 - static/PostgreSQL/600_p_shop_user_eval.sql | 730 - .../602_p_save_supplier_purchase_order.sql | 515 - .../PostgreSQL/602_p_shop_save_supplier.sql | 306 - ...shop_save_manufacturing_purchase_order.sql | 606 - .../PostgreSQL/605_p_shop_save_customer.sql | 313 - .../606_p_shop_save_customer_sales_order.sql | 555 - static/PostgreSQL/610_p_shop_save_user.sql | 166 - .../611_p_shop_save_user_basket.sql | 833 - .../700_p_shop_get_many_product.sql | 1231 -- .../701_p_shop_get_many_role_permission.sql | 152 - .../702.1_p_shop_get_many_currency.sql | 57 - .../702.2_p_shop_get_many_region.sql | 60 - .../703_p_shop_get_many_user_order.sql | 283 - ...704_p_shop_get_many_stripe_product_new.sql | 316 - .../705_p_shop_get_many_stripe_price_new.sql | 253 - .../706_p_shop_get_many_supplier.sql | 247 - ..._shop_get_many_supplier_purchase_order.sql | 709 - ..._get_many_manufacturing_purchase_order.sql | 601 - .../709_p_shop_get_many_customer.sql | 249 - ...0_p_shop_get_many_customer_sales_order.sql | 718 - static/PostgreSQL/900_populate.sql | 656 - static/PostgreSQL/901_view.sql | 188 - static/PostgreSQL/910_anal.sql | 26 - static/PostgreSQL/920_edit_permissions.sql | 83 - static/PostgreSQL/temp.txt | 153 - static/docs/Kitchen Stock Take.xlsx | Bin 12360 -> 0 bytes static/docs/Logo.png | Bin 14273 -> 0 bytes static/docs/PARTS ERP.xlsx | Bin 17618 -> 0 bytes static/docs/example abstract base class.py | 88 - static/docs/server.py | 124 - static/docs/template webpage.html | 63 - static/docs/test.py | 1 - static/js/pages/store/product_categories.js | 28 - templates/layouts/layout.html | 102 +- templates/pages/core/_admin_home.html | 29 - templates/pages/store/_supplier.html | 25 +- 204 files changed, 49 insertions(+), 52579 deletions(-) delete mode 100644 app.log.1 delete mode 100644 app.log.2 delete mode 100644 app.log.3 delete mode 100644 static/MySQL/deprecated/000_init_tables_authentication.sql delete mode 100644 static/MySQL/deprecated/000_init_tables_product.sql delete mode 100644 static/MySQL/deprecated/108_tbl_Shop_Recurrence_Interval.sql delete mode 100644 static/MySQL/deprecated/109_tbl_Shop_Recurrence_Interval_Audit.sql delete mode 100644 static/MySQL/deprecated/113.1_tbl_Shop_Product_Variation_Type_Link.sql delete mode 100644 static/MySQL/deprecated/113.2_tbl_Shop_Product_Variation_Type_Link_Audit.sql delete mode 100644 static/MySQL/deprecated/116_tbl_Shop_Product_Variation_Link.sql delete mode 100644 static/MySQL/deprecated/117.0_tbl_Shop_Product_Variation_Link_Audit.sql delete mode 100644 static/MySQL/deprecated/128_tbl_Shop_Product_Delivery_Region_Link.sql delete mode 100644 static/MySQL/deprecated/129_tbl_Shop_Product_Delivery_Region_Link_Audit.sql delete mode 100644 static/MySQL/deprecated/170_ish_tbl_ERP_Order.sql delete mode 100644 static/MySQL/deprecated/171_tbl_Shop_User_Order.sql delete mode 100644 static/MySQL/deprecated/172_tbl_Shop_User_Order_Audit.sql delete mode 100644 static/MySQL/deprecated/173_tbl_Shop_User_Order_Product_Link.sql delete mode 100644 static/MySQL/deprecated/174_tbl_Shop_User_Order_Product_Link_Audit.sql delete mode 100644 static/MySQL/deprecated/308_tri_Shop_Recurrence_Interval.sql delete mode 100644 static/MySQL/deprecated/313.1_tri_Shop_Product_Variation_Type_Link.sql delete mode 100644 static/MySQL/deprecated/316_tri_Shop_Product_Variation_Link.sql delete mode 100644 static/MySQL/deprecated/322_tri_Shop_Price.sql delete mode 100644 static/MySQL/deprecated/328_tri_Shop_Product_Delivery_Region_Link.sql delete mode 100644 static/MySQL/deprecated/371_tri_Shop_User_Order.sql delete mode 100644 static/MySQL/deprecated/373_tri_Shop_User_Order_Product_Link.sql delete mode 100644 static/MySQL/deprecated/7000_p_shop_get_many_role_permission.sql delete mode 100644 static/MySQL/deprecated/7000_p_shop_get_many_user_order.sql delete mode 100644 static/MySQL/deprecated/706_p_shop_get_product.sql delete mode 100644 static/MySQL/deprecated/9020_edit_permissions.sql delete mode 100644 static/MySQL/deprecated/dump.sql delete mode 100644 static/MySQL/deprecated/dump2.sql delete mode 100644 static/PostgreSQL/000_combine.sql delete mode 100644 static/PostgreSQL/001_destroy.sql delete mode 100644 static/PostgreSQL/100.0_tbl_Shop_Product_Change_Set.sql delete mode 100644 static/PostgreSQL/100.1_tbl_Shop_User_Change_Set.sql delete mode 100644 static/PostgreSQL/100.2_tbl_Shop_Access_Level.sql delete mode 100644 static/PostgreSQL/100.2_tbl_Shop_Sales_And_Purchasing_Change_Set.sql delete mode 100644 static/PostgreSQL/100.3_tbl_Shop_Access_Level_Audit.sql delete mode 100644 static/PostgreSQL/100_tbl_Msg_Error_Type.sql delete mode 100644 static/PostgreSQL/102_tbl_File_Type.sql delete mode 100644 static/PostgreSQL/103_tbl_File_Type_Audit.sql delete mode 100644 static/PostgreSQL/104_tbl_Shop_General.sql delete mode 100644 static/PostgreSQL/105_tbl_Shop_General_Audit.sql delete mode 100644 static/PostgreSQL/106_tbl_Shop_Category.sql delete mode 100644 static/PostgreSQL/107_tbl_Shop_Category_Audit.sql delete mode 100644 static/PostgreSQL/108_tbl_Shop_Recurrence_Interval.sql delete mode 100644 static/PostgreSQL/109_tbl_Shop_Recurrence_Interval_Audit.sql delete mode 100644 static/PostgreSQL/110.0_tbl_Shop_Region.sql delete mode 100644 static/PostgreSQL/110.1_tbl_Shop_Region_Audit.sql delete mode 100644 static/PostgreSQL/110.2_tbl_Shop_Region_Branch.sql delete mode 100644 static/PostgreSQL/110.3_tbl_Shop_Region_Branch_Audit.sql delete mode 100644 static/PostgreSQL/110.4_tbl_Shop_Currency.sql delete mode 100644 static/PostgreSQL/110.5_tbl_Shop_Currency_Audit.sql delete mode 100644 static/PostgreSQL/110.6_tbl_Shop_Tax_Or_Surcharge.sql delete mode 100644 static/PostgreSQL/110.7_tbl_Shop_Tax_Or_Surcharge_Audit.sql delete mode 100644 static/PostgreSQL/110.8_tbl_Shop_Product.sql delete mode 100644 static/PostgreSQL/110.9_tbl_Shop_Product_Audit.sql delete mode 100644 static/PostgreSQL/112_tbl_Shop_Variation_Type.sql delete mode 100644 static/PostgreSQL/113.0_tbl_Shop_Variation_Type_Audit.sql delete mode 100644 static/PostgreSQL/114_tbl_Shop_Variation.sql delete mode 100644 static/PostgreSQL/115_tbl_Shop_Variation_Audit.sql delete mode 100644 static/PostgreSQL/117.1_tbl_Shop_Product_Permutation.sql delete mode 100644 static/PostgreSQL/117.2_tbl_Shop_Product_Permutation_Audit.sql delete mode 100644 static/PostgreSQL/117.3_tbl_Shop_Product_Permutation_Variation_Link.sql delete mode 100644 static/PostgreSQL/117.4_tbl_Shop_Product_Permutation_Variation_Link_Audit.sql delete mode 100644 static/PostgreSQL/117.5_tbl_Shop_Product_Currency_Region_Link.sql delete mode 100644 static/PostgreSQL/117.6_tbl_Shop_Product_Currency_Region_Link_Audit.sql delete mode 100644 static/PostgreSQL/118_tbl_Shop_Image_Type.sql delete mode 100644 static/PostgreSQL/119_tbl_Shop_Image_Type_Audit.sql delete mode 100644 static/PostgreSQL/120_tbl_Shop_Image.sql delete mode 100644 static/PostgreSQL/121_tbl_Shop_Image_Audit.sql delete mode 100644 static/PostgreSQL/122_tbl_Shop_Delivery_Option.sql delete mode 100644 static/PostgreSQL/123_tbl_Shop_Delivery_Option_Audit.sql delete mode 100644 static/PostgreSQL/124_tbl_Shop_Product_Delivery_Option_Link.sql delete mode 100644 static/PostgreSQL/125_tbl_Shop_Product_Delivery_Option_Link_Audit.sql delete mode 100644 static/PostgreSQL/130.4_tbl_Shop_Discount.sql delete mode 100644 static/PostgreSQL/131_tbl_Shop_Discount_Audit.sql delete mode 100644 static/PostgreSQL/132_tbl_Shop_Discount_Region_Currency_Link.sql delete mode 100644 static/PostgreSQL/133_tbl_Shop_Discount_Region_Currency_Link_Audit.sql delete mode 100644 static/PostgreSQL/153_tbl_Shop_Permission_Group.sql delete mode 100644 static/PostgreSQL/154_tbl_Shop_Permission_Group_Audit.sql delete mode 100644 static/PostgreSQL/155_tbl_Shop_Permission.sql delete mode 100644 static/PostgreSQL/156_tbl_Shop_Permission_Audit.sql delete mode 100644 static/PostgreSQL/157_tbl_Shop_Role.sql delete mode 100644 static/PostgreSQL/158_tbl_Shop_Role_Audit.sql delete mode 100644 static/PostgreSQL/159_tbl_Shop_Role_Permission_Link.sql delete mode 100644 static/PostgreSQL/160_tbl_Shop_Role_Permission_Link_Audit.sql delete mode 100644 static/PostgreSQL/161_tbl_Shop_User.sql delete mode 100644 static/PostgreSQL/162_tbl_Shop_User_Audit.sql delete mode 100644 static/PostgreSQL/163_tbl_Shop_User_Role_Link.sql delete mode 100644 static/PostgreSQL/164_tbl_Shop_User_Role_Link_Audit.sql delete mode 100644 static/PostgreSQL/165_tbl_Shop_Address.sql delete mode 100644 static/PostgreSQL/166_tbl_Shop_Address_Audit.sql delete mode 100644 static/PostgreSQL/167_tbl_Shop_User_Basket.sql delete mode 100644 static/PostgreSQL/168_tbl_Shop_User_Basket_Audit.sql delete mode 100644 static/PostgreSQL/169_tbl_Shop_User_Order_Status.sql delete mode 100644 static/PostgreSQL/170_tbl_Shop_User_Order_Status_Audit.sql delete mode 100644 static/PostgreSQL/181.0_tbl_Shop_Supplier.sql delete mode 100644 static/PostgreSQL/181.1_tbl_Shop_Supplier_Audit.sql delete mode 100644 static/PostgreSQL/181.2_tbl_Shop_Unit_Measurement.sql delete mode 100644 static/PostgreSQL/181.3_tbl_Shop_Unit_Measurement_Audit.sql delete mode 100644 static/PostgreSQL/181.4_tbl_Shop_Unit_Measurement_Conversion.sql delete mode 100644 static/PostgreSQL/181.5_tbl_Shop_Unit_Measurement_Conversion_Audit.sql delete mode 100644 static/PostgreSQL/181.6_tbl_Shop_Supplier_Purchase_Order.sql delete mode 100644 static/PostgreSQL/181.7_tbl_Shop_Supplier_Purchase_Order_Audit.sql delete mode 100644 static/PostgreSQL/181.8_tbl_Shop_Supplier_Purchase_Order_Product_Link.sql delete mode 100644 static/PostgreSQL/181.9_tbl_Shop_Supplier_Purchase_Order_Product_Link_Audit.sql delete mode 100644 static/PostgreSQL/182.0_tbl_Shop_Supplier_Purchase_Order_Product_Link_Temp.sql delete mode 100644 static/PostgreSQL/183_tbl_Shop_Manufacturing_Purchase_Order.sql delete mode 100644 static/PostgreSQL/184_tbl_Shop_Manufacturing_Purchase_Order_Audit.sql delete mode 100644 static/PostgreSQL/185_tbl_Shop_Manufacturing_Purchase_Order_Product_Link.sql delete mode 100644 static/PostgreSQL/186.1_tbl_Shop_Manufacturing_Purchase_Order_Product_Link_Temp.sql delete mode 100644 static/PostgreSQL/186_tbl_Shop_Manufacturing_Purchase_Order_Product_Link_Audit.sql delete mode 100644 static/PostgreSQL/187.0_tbl_Shop_Customer.sql delete mode 100644 static/PostgreSQL/187.1_tbl_Shop_Customer_Audit.sql delete mode 100644 static/PostgreSQL/187.2_tbl_Shop_Customer_Sales_Order.sql delete mode 100644 static/PostgreSQL/188_tbl_Shop_Customer_Sales_Order_Audit.sql delete mode 100644 static/PostgreSQL/189_tbl_Shop_Customer_Sales_Order_Product_Link.sql delete mode 100644 static/PostgreSQL/190_tbl_Shop_Customer_Sales_Order_Product_Link_Audit.sql delete mode 100644 static/PostgreSQL/191_tbl_Shop_Customer_Sales_Order_Product_Link_Temp.sql delete mode 100644 static/PostgreSQL/300.2_tri_Shop_Sales_And_Purchasing_Change_Set.sql delete mode 100644 static/PostgreSQL/301.1_tri_Shop_User_Change_Set.sql delete mode 100644 static/PostgreSQL/301.2_tri_Shop_Access_Level.sql delete mode 100644 static/PostgreSQL/301_tri_Shop_Product_Change_Set.sql delete mode 100644 static/PostgreSQL/302_tri_File_Type.sql delete mode 100644 static/PostgreSQL/303_tri_File_Type_Audit.sql delete mode 100644 static/PostgreSQL/304_tri_Shop_General.sql delete mode 100644 static/PostgreSQL/306_tri_Shop_Category.sql delete mode 100644 static/PostgreSQL/308_tri_Shop_Recurrence_Interval.sql delete mode 100644 static/PostgreSQL/310.0_tri_Shop_Region.sql delete mode 100644 static/PostgreSQL/310.2_tri_Shop_Region_Branch.sql delete mode 100644 static/PostgreSQL/310.4_tri_Shop_Currency.sql delete mode 100644 static/PostgreSQL/310.6_tri_Shop_Tax_Or_Surcharge.sql delete mode 100644 static/PostgreSQL/310.8_tri_Shop_Product.sql delete mode 100644 static/PostgreSQL/312_tri_Shop_Variation_Type.sql delete mode 100644 static/PostgreSQL/314_tri_Shop_Variation.sql delete mode 100644 static/PostgreSQL/317.1_tri_Shop_Product_Permutation.sql delete mode 100644 static/PostgreSQL/317.3_tri_Shop_Product_Permutation_Variation_Link.sql delete mode 100644 static/PostgreSQL/317.5_tri_Shop_Product_Currency_Region_Link.sql delete mode 100644 static/PostgreSQL/318_tri_Shop_Image_Type.sql delete mode 100644 static/PostgreSQL/320_tri_Shop_Image.sql delete mode 100644 static/PostgreSQL/322_tri_Shop_Delivery_Option.sql delete mode 100644 static/PostgreSQL/324_tri_Shop_Product_Delivery_Option_Link.sql delete mode 100644 static/PostgreSQL/330_tri_Shop_Discount.sql delete mode 100644 static/PostgreSQL/332_tri_Shop_Discount_Region_Currency_Link.sql delete mode 100644 static/PostgreSQL/353_tri_Shop_Permission_Group.sql delete mode 100644 static/PostgreSQL/355_tri_Shop_Permission.sql delete mode 100644 static/PostgreSQL/357_tri_Shop_Role.sql delete mode 100644 static/PostgreSQL/359_tri_Shop_Role_Permission_Link.sql delete mode 100644 static/PostgreSQL/361_tri_Shop_User.sql delete mode 100644 static/PostgreSQL/363_tri_Shop_User_Role_Link.sql delete mode 100644 static/PostgreSQL/365_tri_Shop_Address.sql delete mode 100644 static/PostgreSQL/367_tri_Shop_User_Basket.sql delete mode 100644 static/PostgreSQL/369_tri_Shop_User_Order_Status.sql delete mode 100644 static/PostgreSQL/381.0_tri_Shop_Supplier.sql delete mode 100644 static/PostgreSQL/381.2_tri_Shop_Unit_Measurement.sql delete mode 100644 static/PostgreSQL/381.4_tri_Shop_Unit_Of_Measurement_Conversion.sql delete mode 100644 static/PostgreSQL/381.6_tri_Shop_Supplier_Purchase_Order.sql delete mode 100644 static/PostgreSQL/381.8_tri_Shop_Supplier_Purchase_Order_Product_Link.sql delete mode 100644 static/PostgreSQL/383_tri_Shop_Manufacturing_Purchase_Order.sql delete mode 100644 static/PostgreSQL/385_tri_Shop_Manufacturing_Purchase_Order_Product_Link.sql delete mode 100644 static/PostgreSQL/387.0_tri_Shop_Customer.sql delete mode 100644 static/PostgreSQL/387.2_tri_Shop_Customer_Sales_Order.sql delete mode 100644 static/PostgreSQL/389_tri_Shop_Customer_Sales_Order_Product_Link.sql delete mode 100644 static/PostgreSQL/600_p_shop_save_product.sql delete mode 100644 static/PostgreSQL/600_p_shop_user_eval.sql delete mode 100644 static/PostgreSQL/602_p_save_supplier_purchase_order.sql delete mode 100644 static/PostgreSQL/602_p_shop_save_supplier.sql delete mode 100644 static/PostgreSQL/604_p_shop_save_manufacturing_purchase_order.sql delete mode 100644 static/PostgreSQL/605_p_shop_save_customer.sql delete mode 100644 static/PostgreSQL/606_p_shop_save_customer_sales_order.sql delete mode 100644 static/PostgreSQL/610_p_shop_save_user.sql delete mode 100644 static/PostgreSQL/611_p_shop_save_user_basket.sql delete mode 100644 static/PostgreSQL/700_p_shop_get_many_product.sql delete mode 100644 static/PostgreSQL/701_p_shop_get_many_role_permission.sql delete mode 100644 static/PostgreSQL/702.1_p_shop_get_many_currency.sql delete mode 100644 static/PostgreSQL/702.2_p_shop_get_many_region.sql delete mode 100644 static/PostgreSQL/703_p_shop_get_many_user_order.sql delete mode 100644 static/PostgreSQL/704_p_shop_get_many_stripe_product_new.sql delete mode 100644 static/PostgreSQL/705_p_shop_get_many_stripe_price_new.sql delete mode 100644 static/PostgreSQL/706_p_shop_get_many_supplier.sql delete mode 100644 static/PostgreSQL/706_p_shop_get_many_supplier_purchase_order.sql delete mode 100644 static/PostgreSQL/708_p_shop_get_many_manufacturing_purchase_order.sql delete mode 100644 static/PostgreSQL/709_p_shop_get_many_customer.sql delete mode 100644 static/PostgreSQL/710_p_shop_get_many_customer_sales_order.sql delete mode 100644 static/PostgreSQL/900_populate.sql delete mode 100644 static/PostgreSQL/901_view.sql delete mode 100644 static/PostgreSQL/910_anal.sql delete mode 100644 static/PostgreSQL/920_edit_permissions.sql delete mode 100644 static/PostgreSQL/temp.txt delete mode 100644 static/docs/Kitchen Stock Take.xlsx delete mode 100644 static/docs/Logo.png delete mode 100644 static/docs/PARTS ERP.xlsx delete mode 100644 static/docs/example abstract base class.py delete mode 100644 static/docs/server.py delete mode 100644 static/docs/template webpage.html delete mode 100644 static/docs/test.py diff --git a/README.md b/README.md index 4be183be..420799e2 100644 --- a/README.md +++ b/README.md @@ -1,41 +1,55 @@ Precision and Research Technology Systems Limited -Website with online store +ERP system with e-commerce store -Powered by flask -enter virtual environment: +# Run +1. enter virtual environment: python -m venv VIRTUAL_ENVIRONMENT_NAME -run module bundler: +2. install required packages: +pip install -r requirements.txt + +3. run module bundler: npm run build -host for machine: +4. host for machine: python -m flask run -host for local network: +(or 4.) host for local network: python -m flask run --host=0.0.0.0 -files dedicated to each page: -CSS - page -HTML - page - row -JavaScript - page - api - router - base - navigation buttons -MySQL - get - save - table - staging table - audit table -Python - business object - controller - datastore - form - model \ No newline at end of file +# Code review +Sample files: +CSS: +Page styles + static/css/pages/store/supplier.css +JavaScript: +Page object + static/js/pages/store/product_categories.js +Router + static/js/router.js + +HTML: +Layout template + templates/layouts/layout.html +Page template + templates/pages/store/_supplier.html + +Python: +Business object: + business_objects/store/product_price.py +Controller: + controllers/core.py +Datastore: + datastores/datastore_store_product_category.py +Model: + models/model_view_store_product_permutation.py + +SQL: +Table: + static/MySQL/1403_tbl_Shop_Supplier_Address.sql +Trigger + static/MySQL/3000_tri_Shop_Access_Level.sql +Save procedure + static/MySQL/7200_p_shop_save_product_category.sql diff --git a/app.log.1 b/app.log.1 deleted file mode 100644 index 76006504..00000000 --- a/app.log.1 +++ /dev/null @@ -1,83 +0,0 @@ -User.from_json_auth0 -json: {'access_token': 'eyJhbGciOiJkaXIiLCJlbmMiOiJBMjU2R0NNIiwiaXNzIjoiaHR0cHM6Ly9kZXYtbndhazIwNjZlZjZoOGl4bi51cy5hdXRoMC5jb20vIn0..arWSrpDU5354qDI7.IbRrkeXan6irbNYnEDXOKgV_Qa3HW58e-q-pxzyQmALiaHX4FboD-AWN6FnDtS_npGpuWgyRf8mYfC9alfD72K5nYQDNcWFrMaQGEY_uz4dlGsariyQD27XoEl6S7Uq9e8junqKbS2miQZ7VOu79MfkpgyM-Q8sTRXE8bs2KjjDtJLAhK0RWz-hsIqlUgNTPMA5Ir1gcm-uA_sKEC51kAnqQxV2WCZtvaj9cMl_Zjt11KeuVKPOS_gbL8cTR9V5gUlJCF6rLWgVVvS75H19eGnHdv0jJ5DwW_XaN_l_wojQigBTjDKKXz4J184vB1ivvtNWQuINEGUe5lIt7j-a-ZALw._IMfFUmvPE-89DHDRhhbVg', 'id_token': 'eyJhbGciOiJSUzI1NiIsInR5cCI6IkpXVCIsImtpZCI6InVveXZURk44bjJvZHg1VkFLMFh1RyJ9.eyJuaWNrbmFtZSI6ImVkd2FyZC5taWRkbGV0b25zbWl0aCIsIm5hbWUiOiJlZHdhcmQubWlkZGxldG9uc21pdGhAZ21haWwuY29tIiwicGljdHVyZSI6Imh0dHBzOi8vcy5ncmF2YXRhci5jb20vYXZhdGFyLzUzZDNmMjQ0MDdkNTI1N2Y4NGYyN2NhMDc4NzRiZDY0P3M9NDgwJnI9cGcmZD1odHRwcyUzQSUyRiUyRmNkbi5hdXRoMC5jb20lMkZhdmF0YXJzJTJGZWQucG5nIiwidXBkYXRlZF9hdCI6IjIwMjQtMTEtMjJUMTI6NTI6MTEuMzI1WiIsImVtYWlsIjoiZWR3YXJkLm1pZGRsZXRvbnNtaXRoQGdtYWlsLmNvbSIsImVtYWlsX3ZlcmlmaWVkIjpmYWxzZSwiaXNzIjoiaHR0cHM6Ly9kZXYtbndhazIwNjZlZjZoOGl4bi51cy5hdXRoMC5jb20vIiwiYXVkIjoiZ0dqeXRxTk1XQ2hTaXhxTzcyUlF6VkhXQWFlSkp6UmkiLCJpYXQiOjE3MzIyNzk5MzMsImV4cCI6MTczMjMxNTkzMywic3ViIjoiYXV0aDB8NjU4MmI5NWM4OTVkMDlhNzBiYTEwZmVmIiwic2lkIjoiX3VySVJlQjVJcW53czF4MXQxU08wT3lETzAyTzFyamgiLCJub25jZSI6IjdCRWV1UHlqOERZdkVTZnc0RkdNIn0.ApLWH6u8EUDhqkFo72vCdHv6IqHqGKzTi4vUe6w2NFvgFobAvsacwWTmirMM1Cj4CGkpXVTgau4pyURtxX0ubOfrLR-Xtj9TN1FXZ-l6ddmgpSt7rjbnRsQIEPlGUal9Gx44J36_4qI7fPc8Vo6U7mPKcpKCzcmHJTMrMZ0yMjYDEporwX0gf-DJ41_VbuFeLTjiYLABub_waSoNOqMVgq3pJmvcx-fq_6tj8cRULUWUl4S0zdv8KZIm59z--V45fhOEqRgqJshWZONNl3Y8Btcl8TvU0gCGEzUV9BI80gUYM42w9WS9G3zGiXneXgkld4dxebivgwmgqAQWhNQZ0g', 'scope': 'openid profile email', 'expires_in': 86400, 'token_type': 'Bearer', 'expires_at': 1732366332, 'userinfo': {'nickname': 'edward.middletonsmith', 'name': 'edward.middletonsmith@gmail.com', 'picture': 'https://s.gravatar.com/avatar/53d3f24407d5257f84f27ca07874bd64?s=480&r=pg&d=https%3A%2F%2Fcdn.auth0.com%2Favatars%2Fed.png', 'updated_at': '2024-11-22T12:52:11.325Z', 'email': 'edward.middletonsmith@gmail.com', 'email_verified': False, 'iss': 'https://dev-nwak2066ef6h8ixn.us.auth0.com/', 'aud': 'gGjytqNMWChSixqO72RQzVHWAaeJJzRi', 'iat': 1732279933, 'exp': 1732315933, 'sub': 'auth0|6582b95c895d09a70ba10fef', 'sid': '_urIReB5Iqnws1x1t1SO0OyDO02O1rjh', 'nonce': '7BEeuPyj8DYvESfw4FGM'}} -user: - id_user: None - id_user_auth0: auth0|6582b95c895d09a70ba10fef - firstname: None - surname: None - email: edward.middletonsmith@gmail.com - is_email_verified: False - is_super_user: None - id_currency_default: None - id_region_default: None - is_included_VAT_default: None - can_admin_store: None - can_admin_user: None - -user: - id_user: None - id_user_auth0: auth0|6582b95c895d09a70ba10fef - firstname: None - surname: None - email: edward.middletonsmith@gmail.com - is_email_verified: False - is_super_user: None - id_currency_default: None - id_region_default: None - is_included_VAT_default: None - can_admin_store: None - can_admin_user: None - -DataStore_User.get_many_user -DataStore_Base.db_procedure_execute -proc_string: CALL p_get_many_user(:a_id_user, :a_id_user_auth0, :get_all_user, :get_inactive_user, :ids_user, :ids_user_auth0, :a_debug) -args: {'a_id_user': None, 'a_id_user_auth0': 'auth0|6582b95c895d09a70ba10fef', 'get_all_user': False, 'get_inactive_user': False, 'ids_user': '', 'ids_user_auth0': 'auth0|6582b95c895d09a70ba10fef', 'a_debug': 0} -result: -raw users: ((1, 'auth0|6582b95c895d09a70ba10fef', 'Teddy', 'Middleton-Smith', 'edward.middletonsmith@gmail.com', b'\x00', None, None, b'\x01', b'\x01', b'\x01', b'\x01', b'\x00'),) -type result set: -len result set: 1 -row: (1, 'auth0|6582b95c895d09a70ba10fef', 'Teddy', 'Middleton-Smith', 'edward.middletonsmith@gmail.com', b'\x00', None, None, b'\x01', b'\x01', b'\x01', b'\x01', b'\x00') -user : - id_user: 1 - id_user_auth0: auth0|6582b95c895d09a70ba10fef - firstname: Teddy - surname: Middleton-Smith - email: edward.middletonsmith@gmail.com - is_email_verified: False - is_super_user: True - id_currency_default: None - id_region_default: None - is_included_VAT_default: True - can_admin_store: True - can_admin_user: True - -type users: - type user 0: -raw errors: () -new result set: () -User logged in -user (): - id_user: 1 - id_user_auth0: auth0|6582b95c895d09a70ba10fef - firstname: Teddy - surname: Middleton-Smith - email: edward.middletonsmith@gmail.com - is_email_verified: False - is_super_user: True - id_currency_default: None - id_region_default: None - is_included_VAT_default: True - can_admin_store: True - can_admin_user: True - -user key: authorisedUser -as_json: {'id_user': 1, 'id_user_auth0': 'auth0|6582b95c895d09a70ba10fef', 'firstname': 'Teddy', 'surname': 'Middleton-Smith', 'email': 'edward.middletonsmith@gmail.com', 'is_email_verified': False, 'is_super_user': True, 'id_currency_default': None, 'id_region_default': None, 'is_included_VAT_default': True, 'can_admin_store': True, 'can_admin_user': True} -user stored on session -hash is none -state: / -hash_callback: / -user session: {'id_user': 1, 'id_user_auth0': 'auth0|6582b95c895d09a70ba10fef', 'firstname': 'Teddy', 'surname': 'Middleton-Smith', 'email': 'edward.middletonsmith@gmail.com', 'is_email_verified': False, 'is_super_user': True, 'id_currency_default': None, 'id_region_default': None, 'is_included_VAT_default': True, 'can_admin_store': True, 'can_admin_user': True} -session: -DataStore_Base.get_user_session -User.from_json -json: {'can_admin_store': True, 'can_admin_user': True, 'email': 'edward.middletonsmith@gmail.com', 'firstname': 'Teddy', 'id_currency_default': None, 'id_region_default': None, 'id_user': 1, 'id_user_auth0': 'auth0|6582b95c895d09a70ba10fef', 'is_email_verified': False, 'is_included_VAT_default': True, 'is_super_user': True, 'surname': 'Middleton-Smith'} diff --git a/app.log.2 b/app.log.2 deleted file mode 100644 index 77b2cc16..00000000 --- a/app.log.2 +++ /dev/null @@ -1,132 +0,0 @@ -user : - id_user: 1 - id_user_auth0: auth0|6582b95c895d09a70ba10fef - firstname: Teddy - surname: Middleton-Smith - email: edward.middletonsmith@gmail.com - is_email_verified: False - is_super_user: True - id_currency_default: None - id_region_default: None - is_included_VAT_default: True - can_admin_store: True - can_admin_user: True - -type users: - type user 0: -raw errors: () -new result set: () -User logged in -user (): - id_user: 1 - id_user_auth0: auth0|6582b95c895d09a70ba10fef - firstname: Teddy - surname: Middleton-Smith - email: edward.middletonsmith@gmail.com - is_email_verified: False - is_super_user: True - id_currency_default: None - id_region_default: None - is_included_VAT_default: True - can_admin_store: True - can_admin_user: True - -user key: authorisedUser -as_json: {'id_user': 1, 'id_user_auth0': 'auth0|6582b95c895d09a70ba10fef', 'firstname': 'Teddy', 'surname': 'Middleton-Smith', 'email': 'edward.middletonsmith@gmail.com', 'is_email_verified': False, 'is_super_user': True, 'id_currency_default': None, 'id_region_default': None, 'is_included_VAT_default': True, 'can_admin_store': True, 'can_admin_user': True} -user stored on session -hash is none -state: / -hash_callback: / -user session: {'id_user': 1, 'id_user_auth0': 'auth0|6582b95c895d09a70ba10fef', 'firstname': 'Teddy', 'surname': 'Middleton-Smith', 'email': 'edward.middletonsmith@gmail.com', 'is_email_verified': False, 'is_super_user': True, 'id_currency_default': None, 'id_region_default': None, 'is_included_VAT_default': True, 'can_admin_store': True, 'can_admin_user': True} -session: -DataStore_Base.get_user_session -User.from_json -json: {'can_admin_store': True, 'can_admin_user': True, 'email': 'edward.middletonsmith@gmail.com', 'firstname': 'Teddy', 'id_currency_default': None, 'id_region_default': None, 'id_user': 1, 'id_user_auth0': 'auth0|6582b95c895d09a70ba10fef', 'is_email_verified': False, 'is_included_VAT_default': True, 'is_super_user': True, 'surname': 'Middleton-Smith'} -user: - id_user: 1 - id_user_auth0: auth0|6582b95c895d09a70ba10fef - firstname: Teddy - surname: Middleton-Smith - email: edward.middletonsmith@gmail.com - is_email_verified: False - is_super_user: True - id_currency_default: None - id_region_default: None - is_included_VAT_default: True - can_admin_store: True - can_admin_user: True - -User.from_json -json: {'can_admin_store': True, 'can_admin_user': True, 'email': 'edward.middletonsmith@gmail.com', 'firstname': 'Teddy', 'id_currency_default': None, 'id_region_default': None, 'id_user': 1, 'id_user_auth0': 'auth0|6582b95c895d09a70ba10fef', 'is_email_verified': False, 'is_included_VAT_default': True, 'is_super_user': True, 'surname': 'Middleton-Smith'} -user: - id_user: 1 - id_user_auth0: auth0|6582b95c895d09a70ba10fef - firstname: Teddy - surname: Middleton-Smith - email: edward.middletonsmith@gmail.com - is_email_verified: False - is_super_user: True - id_currency_default: None - id_region_default: None - is_included_VAT_default: True - can_admin_store: True - can_admin_user: True - -argument_dict: {'a_id_user': 1, 'a_id_user_auth0': 'auth0|6582b95c895d09a70ba10fef', 'get_all_user': False, 'get_inactive_user': False, 'ids_user': 1, 'ids_user_auth0': '', 'a_debug': 0} -executing p_get_many_user -DataStore_Base.db_procedure_execute -proc_string: CALL p_get_many_user(:a_id_user, :a_id_user_auth0, :get_all_user, :get_inactive_user, :ids_user, :ids_user_auth0, :a_debug) -args: {'a_id_user': 1, 'a_id_user_auth0': 'auth0|6582b95c895d09a70ba10fef', 'get_all_user': False, 'get_inactive_user': False, 'ids_user': 1, 'ids_user_auth0': '', 'a_debug': 0} -result: -data received -raw users: ((1, 'auth0|6582b95c895d09a70ba10fef', 'Teddy', 'Middleton-Smith', 'edward.middletonsmith@gmail.com', b'\x00', None, None, b'\x01', b'\x01', b'\x01', b'\x01', b'\x00'),) -raw errors: () -new result set: () -model_view_base init end - model.user: - id_user: 1 - id_user_auth0: auth0|6582b95c895d09a70ba10fef - firstname: Teddy - surname: Middleton-Smith - email: edward.middletonsmith@gmail.com - is_email_verified: False - is_super_user: True - id_currency_default: None - id_region_default: None - is_included_VAT_default: True - can_admin_store: True - can_admin_user: True - -Redirecting to https://dev-nwak2066ef6h8ixn.us.auth0.com/v2/logout?returnTo=http%3A%2F%2F127.0.0.1%3A5000%2Flogout_callback&client_id=gGjytqNMWChSixqO72RQzVHWAaeJJzRi -session: -DataStore_Base.get_user_session -model_view_base init end - model.user: - id_user: 0 - id_user_auth0: None - firstname: None - surname: None - email: None - is_email_verified: None - is_super_user: None - id_currency_default: None - id_region_default: None - is_included_VAT_default: None - can_admin_store: None - can_admin_user: None - -login -method=POST -data={'callback': '/', 'X-CSRFToken': 'IjE2ODlhNTlkY2VmYzMwODRlZDAzYzhkYmNlOGU3Y2EyODA3NjhmODEi.Z0B-cw.7GSddkmtZoja9ghsAUue88aIHVc'} -hash_callback: / -redirect uri: http://127.0.0.1:5000/login_callback -Before red -redirect: -headers: https://dev-nwak2066ef6h8ixn.us.auth0.com/authorize?response_type=code&client_id=gGjytqNMWChSixqO72RQzVHWAaeJJzRi&redirect_uri=http%3A%2F%2F127.0.0.1%3A5000%2Flogin_callback&scope=openid+profile+email&state=%2F&nonce=7BEeuPyj8DYvESfw4FGM - - OAuth Authorize Redirect URL: - - Base URL: https://dev-nwak2066ef6h8ixn.us.auth0.com/authorize - ParseResult(scheme='https', netloc='dev-nwak2066ef6h8ixn.us.auth0.com', path='/authorize', params='', query='response_type=code&client_id=gGjytqNMWChSixqO72RQzVHWAaeJJzRi&redirect_uri=http%3A%2F%2F127.0.0.1%3A5000%2Flogin_callback&scope=openid+profile+email&state=%2F&nonce=7BEeuPyj8DYvESfw4FGM', fragment='') - - Query Parameters: {'response_type': ['code'], 'client_id': ['gGjytqNMWChSixqO72RQzVHWAaeJJzRi'], 'redirect_uri': ['http://127.0.0.1:5000/login_callback'], 'scope': ['openid profile email'], 'state': ['/'], 'nonce': ['7BEeuPyj8DYvESfw4FGM']} - -login_callback diff --git a/app.log.3 b/app.log.3 deleted file mode 100644 index 31211e51..00000000 --- a/app.log.3 +++ /dev/null @@ -1,147 +0,0 @@ -user: - id_user: 1 - id_user_auth0: auth0|6582b95c895d09a70ba10fef - firstname: Teddy - surname: Middleton-Smith - email: edward.middletonsmith@gmail.com - is_email_verified: False - is_super_user: True - id_currency_default: None - id_region_default: None - is_included_VAT_default: True - can_admin_store: True - can_admin_user: True - -argument_dict: {'a_id_user': 1, 'a_id_user_auth0': 'auth0|6582b95c895d09a70ba10fef', 'get_all_user': False, 'get_inactive_user': False, 'ids_user': 1, 'ids_user_auth0': '', 'a_debug': 0} -executing p_get_many_user -DataStore_Base.db_procedure_execute -proc_string: CALL p_get_many_user(:a_id_user, :a_id_user_auth0, :get_all_user, :get_inactive_user, :ids_user, :ids_user_auth0, :a_debug) -args: {'a_id_user': 1, 'a_id_user_auth0': 'auth0|6582b95c895d09a70ba10fef', 'get_all_user': False, 'get_inactive_user': False, 'ids_user': 1, 'ids_user_auth0': '', 'a_debug': 0} -result: -data received -raw users: ((1, 'auth0|6582b95c895d09a70ba10fef', 'Teddy', 'Middleton-Smith', 'edward.middletonsmith@gmail.com', b'\x00', None, None, b'\x01', b'\x01', b'\x01', b'\x01', b'\x00'),) -raw errors: () -new result set: () -model_view_base init end - model.user: - id_user: 1 - id_user_auth0: auth0|6582b95c895d09a70ba10fef - firstname: Teddy - surname: Middleton-Smith - email: edward.middletonsmith@gmail.com - is_email_verified: False - is_super_user: True - id_currency_default: None - id_region_default: None - is_included_VAT_default: True - can_admin_store: True - can_admin_user: True - -Redirecting to https://dev-nwak2066ef6h8ixn.us.auth0.com/v2/logout?returnTo=http%3A%2F%2F127.0.0.1%3A5000%2Flogout_callback&client_id=gGjytqNMWChSixqO72RQzVHWAaeJJzRi -Redirecting to https://dev-nwak2066ef6h8ixn.us.auth0.com/v2/logout?returnTo=http%3A%2F%2F127.0.0.1%3A5000%2Flogout_callback&client_id=gGjytqNMWChSixqO72RQzVHWAaeJJzRi -session: -DataStore_Base.get_user_session -model_view_base init end - model.user: - id_user: 0 - id_user_auth0: None - firstname: None - surname: None - email: None - is_email_verified: None - is_super_user: None - id_currency_default: None - id_region_default: None - is_included_VAT_default: None - can_admin_store: None - can_admin_user: None - -session: -DataStore_Base.get_user_session -model_view_base init end - model.user: - id_user: 0 - id_user_auth0: None - firstname: None - surname: None - email: None - is_email_verified: None - is_super_user: None - id_currency_default: None - id_region_default: None - is_included_VAT_default: None - can_admin_store: None - can_admin_user: None - -config_env: development -config_env: development -config_env: development -session: -DataStore_Base.get_user_session -model_view_base init end - model.user: - id_user: 0 - id_user_auth0: None - firstname: None - surname: None - email: None - is_email_verified: None - is_super_user: None - id_currency_default: None - id_region_default: None - is_included_VAT_default: None - can_admin_store: None - can_admin_user: None - -login -method=POST -data={'callback': '/', 'X-CSRFToken': 'IjYwOWFhNTg5MGI2MWVjMjFjYzY2NTUwMTA5Y2EzMWNjN2UzZWFhM2Qi.Z0B-CQ.TTYIfFRtsGgQfnlBDsEy9k9ixBk'} -hash_callback: / -redirect uri: http://127.0.0.1:5000/login_callback -Before red -redirect: -headers: https://dev-nwak2066ef6h8ixn.us.auth0.com/authorize?response_type=code&client_id=gGjytqNMWChSixqO72RQzVHWAaeJJzRi&redirect_uri=http%3A%2F%2F127.0.0.1%3A5000%2Flogin_callback&scope=openid+profile+email&state=%2F&nonce=vf38RyCZQ4ePtJFhZMGX - - OAuth Authorize Redirect URL: - - Base URL: https://dev-nwak2066ef6h8ixn.us.auth0.com/authorize - ParseResult(scheme='https', netloc='dev-nwak2066ef6h8ixn.us.auth0.com', path='/authorize', params='', query='response_type=code&client_id=gGjytqNMWChSixqO72RQzVHWAaeJJzRi&redirect_uri=http%3A%2F%2F127.0.0.1%3A5000%2Flogin_callback&scope=openid+profile+email&state=%2F&nonce=vf38RyCZQ4ePtJFhZMGX', fragment='') - - Query Parameters: {'response_type': ['code'], 'client_id': ['gGjytqNMWChSixqO72RQzVHWAaeJJzRi'], 'redirect_uri': ['http://127.0.0.1:5000/login_callback'], 'scope': ['openid profile email'], 'state': ['/'], 'nonce': ['vf38RyCZQ4ePtJFhZMGX']} - -login_callback -User.from_json_auth0 -json: {'access_token': 'eyJhbGciOiJkaXIiLCJlbmMiOiJBMjU2R0NNIiwiaXNzIjoiaHR0cHM6Ly9kZXYtbndhazIwNjZlZjZoOGl4bi51cy5hdXRoMC5jb20vIn0..PT10sdrXdrY56k-9.rU-DfkB98x5UEnQYnVi7819a1BotlXjB9IR3yCeRHKL3iVCQIcCm8-Cld93CGXBk9-74i_xFgke7wuY-K8hmzNt-R6XG8tikkKZDPvQzKQjsykgDOXxIHK2VQfIacOJILmLIa9XTB93gnKUUha9besm2nrRIluOSfe_sJgU7AhYQ3lWpoWyh-oGzjsO5ObGepcDuzikz5zK7kst90DYFHezFrDEPJwSXU8bBkm0DN6WNGOg3wumMG7BZvoi5TNhgGUleoxlr1w3RFgJZg_7ra_eNWXY9_d_dbF9Hc7F_Enhr1ZtSpW2LsX7MOlReoDEzM---S-3hbXVXuEfgufISqkbV.bRWgAFRVOFi8SejsOC3i3Q', 'id_token': 'eyJhbGciOiJSUzI1NiIsInR5cCI6IkpXVCIsImtpZCI6InVveXZURk44bjJvZHg1VkFLMFh1RyJ9.eyJuaWNrbmFtZSI6ImVkd2FyZC5taWRkbGV0b25zbWl0aCIsIm5hbWUiOiJlZHdhcmQubWlkZGxldG9uc21pdGhAZ21haWwuY29tIiwicGljdHVyZSI6Imh0dHBzOi8vcy5ncmF2YXRhci5jb20vYXZhdGFyLzUzZDNmMjQ0MDdkNTI1N2Y4NGYyN2NhMDc4NzRiZDY0P3M9NDgwJnI9cGcmZD1odHRwcyUzQSUyRiUyRmNkbi5hdXRoMC5jb20lMkZhdmF0YXJzJTJGZWQucG5nIiwidXBkYXRlZF9hdCI6IjIwMjQtMTEtMjJUMTI6NTA6MjUuMjI2WiIsImVtYWlsIjoiZWR3YXJkLm1pZGRsZXRvbnNtaXRoQGdtYWlsLmNvbSIsImVtYWlsX3ZlcmlmaWVkIjpmYWxzZSwiaXNzIjoiaHR0cHM6Ly9kZXYtbndhazIwNjZlZjZoOGl4bi51cy5hdXRoMC5jb20vIiwiYXVkIjoiZ0dqeXRxTk1XQ2hTaXhxTzcyUlF6VkhXQWFlSkp6UmkiLCJpYXQiOjE3MzIyNzk4MjYsImV4cCI6MTczMjMxNTgyNiwic3ViIjoiYXV0aDB8NjU4MmI5NWM4OTVkMDlhNzBiYTEwZmVmIiwic2lkIjoia2FtQUprQW1SaF9va0w3T2x0aFJvTEtkR0JKbjhYMGUiLCJub25jZSI6InZmMzhSeUNaUTRlUHRKRmhaTUdYIn0.oMQD6ejzlZXR4wLToNnK_G6W9mbfAAMYOpOMce4B9ZRSwvCCIvHY--RyNNxFvpRDVgZaZylE1IHddNavNuCuk9v0LEg6y-25m1AwNo2ff3SlQsOQvqRlFO60MhzFnwIW2SZeTzufsD2qMVbvBcVbqKVYQSm8TyxyFsoGINroeQmBeAc82_m_OPUjPgHUkUi2kWTmVWSCVvbh7G25JwQjkBJvdwLDr-d4_HNuzUNFCjFtCvGpFtByi4w_eNq8E1KseJWh7dS_0z6J7tJWt_pBPHG_UISXcxo27kkREkB0aVbj4zzVfUU0Ta-NneEr4VTyz3KNo7r1574rIPrfVWzMsQ', 'scope': 'openid profile email', 'expires_in': 86400, 'token_type': 'Bearer', 'expires_at': 1732366225, 'userinfo': {'nickname': 'edward.middletonsmith', 'name': 'edward.middletonsmith@gmail.com', 'picture': 'https://s.gravatar.com/avatar/53d3f24407d5257f84f27ca07874bd64?s=480&r=pg&d=https%3A%2F%2Fcdn.auth0.com%2Favatars%2Fed.png', 'updated_at': '2024-11-22T12:50:25.226Z', 'email': 'edward.middletonsmith@gmail.com', 'email_verified': False, 'iss': 'https://dev-nwak2066ef6h8ixn.us.auth0.com/', 'aud': 'gGjytqNMWChSixqO72RQzVHWAaeJJzRi', 'iat': 1732279826, 'exp': 1732315826, 'sub': 'auth0|6582b95c895d09a70ba10fef', 'sid': 'kamAJkAmRh_okL7OlthRoLKdGBJn8X0e', 'nonce': 'vf38RyCZQ4ePtJFhZMGX'}} -user: - id_user: None - id_user_auth0: auth0|6582b95c895d09a70ba10fef - firstname: None - surname: None - email: edward.middletonsmith@gmail.com - is_email_verified: False - is_super_user: None - id_currency_default: None - id_region_default: None - is_included_VAT_default: None - can_admin_store: None - can_admin_user: None - -user: - id_user: None - id_user_auth0: auth0|6582b95c895d09a70ba10fef - firstname: None - surname: None - email: edward.middletonsmith@gmail.com - is_email_verified: False - is_super_user: None - id_currency_default: None - id_region_default: None - is_included_VAT_default: None - can_admin_store: None - can_admin_user: None - -DataStore_User.get_many_user -DataStore_Base.db_procedure_execute -proc_string: CALL p_get_many_user(:a_id_user, :a_id_user_auth0, :get_all_user, :get_inactive_user, :ids_user, :ids_user_auth0, :a_debug) -args: {'a_id_user': None, 'a_id_user_auth0': 'auth0|6582b95c895d09a70ba10fef', 'get_all_user': False, 'get_inactive_user': False, 'ids_user': '', 'ids_user_auth0': 'auth0|6582b95c895d09a70ba10fef', 'a_debug': 0} -result: -raw users: ((1, 'auth0|6582b95c895d09a70ba10fef', 'Teddy', 'Middleton-Smith', 'edward.middletonsmith@gmail.com', b'\x00', None, None, b'\x01', b'\x01', b'\x01', b'\x01', b'\x00'),) -type result set: -len result set: 1 -row: (1, 'auth0|6582b95c895d09a70ba10fef', 'Teddy', 'Middleton-Smith', 'edward.middletonsmith@gmail.com', b'\x00', None, None, b'\x01', b'\x01', b'\x01', b'\x01', b'\x00') diff --git a/datastores/datastore_store_product_category.py b/datastores/datastore_store_product_category.py index 6a32c4e9..9dc50493 100644 --- a/datastores/datastore_store_product_category.py +++ b/datastores/datastore_store_product_category.py @@ -14,14 +14,12 @@ Datastore for Store Product Categories import lib.argument_validation as av from business_objects.store.product_category import Product_Category_Container, Product_Category, Product_Category_Temp from business_objects.sql_error import SQL_Error -# from datastores.datastore_base import Table_Shop_Product_Category, Table_Shop_Product_Category_Temp from datastores.datastore_store_base import DataStore_Store_Base from helpers.helper_app import Helper_App from helpers.helper_db_mysql import Helper_DB_MySQL # from models.model_view_store_checkout import Model_View_Store_Checkout # circular! from extensions import db # external -# from abc import ABC, abstractmethod, abstractproperty from flask_sqlalchemy import SQLAlchemy from sqlalchemy import text import stripe @@ -40,8 +38,6 @@ class DataStore_Store_Product_Category(DataStore_Store_Base): _m = 'DataStore_Store_Product_Category.save_categories' Helper_App.console_log(f'{_m}\nstarting...') Helper_App.console_log(f'comment: {comment}\ncategories: {categories}') - # av.val_str(comment, 'comment', _m) - # av.val_list_instances(categories, 'categories', _m, Product_Category, 1) guid = Helper_DB_MySQL.create_guid() now = datetime.now() @@ -50,32 +46,15 @@ class DataStore_Store_Product_Category(DataStore_Store_Base): id_category_new = 0 for category in categories: row = Product_Category_Temp.from_product_category(category) - # row = category.to_temporary_record() - # id_tmp = if row.id_category == '': id_category_new -= 1 row.id_category = id_category_new else: Helper_App.console_log(f'row.id_category: {row.id_category}') row.guid = guid - # row.created_on = now - # row.created_by = user.id_user rows.append(row) Helper_App.console_log(f'rows: {rows}') - """ - cursor = db.cursor() - Helper_App.console_log('cursor created') - cursor.executemany( - 'INSERT INTO Shop_Product_Category_Temp (id_category, code, name, description, active, display_order, guid, created_on, created_by) VALUES (%s, %s, %s, %s, %s, %s, %s, %s, %s, %s, %s, %s, %s, %s, %s, %s, %s, %s)', - categories - ) - Helper_App.console_log('bulk upload executed') - db.commit() - Helper_App.console_log('bulk upload committed') - cursor.close() - Helper_App.console_log('cursor closed') - """ DataStore_Store_Base.upload_bulk(Product_Category_Temp.__tablename__, rows, 1000) argument_dict_list = { @@ -92,7 +71,7 @@ class DataStore_Store_Product_Category(DataStore_Store_Base): Helper_App.console_log(f'raw errors: {result_set_e}') errors = [] if len(result_set_e) > 0: - errors = [SQL_Error.from_DB_record(row) for row in result_set_e] # (row[0], row[1]) + errors = [SQL_Error.from_DB_record(row) for row in result_set_e] for error in errors: Helper_App.console_log(f"Error [{error.code}]: {error.msg}") diff --git a/pay_stripe.py b/pay_stripe.py index 821e3bde..26fa0412 100644 --- a/pay_stripe.py +++ b/pay_stripe.py @@ -25,7 +25,7 @@ from config import app_config # VARIABLE INSTANTIATION key_secret = os.environ.get("KEY_SECRET_STRIPE") -key_public = os.environ.get("KEY_PUBLIC_STRIPE") # 'pk_test_51OGrxlL7BuLKjoMpfpfw7bSmZZK1MhqMoQ5VhW2jUj7YtoEejO4vqnxKPiqTHHuh9U4qqkywbPCSI9TpFKtr4SYH007KHMWs68' +key_public = os.environ.get("KEY_PUBLIC_STRIPE") # METHODS def create_product_price(): diff --git a/static/MySQL/deprecated/000_init_tables_authentication.sql b/static/MySQL/deprecated/000_init_tables_authentication.sql deleted file mode 100644 index 6aa48bcf..00000000 --- a/static/MySQL/deprecated/000_init_tables_authentication.sql +++ /dev/null @@ -1,824 +0,0 @@ -/* Store */ - - -# Drop dependencies -# DROP PROCEDURE IF EXISTS p_shop_user_eval; -DROP TABLE IF EXISTS User_Eval_Temp; - -# Delete old tables -DROP TABLE IF EXISTS Shop_Address_Audit; -DROP TABLE IF EXISTS Shop_Address; - -DROP TABLE IF EXISTS Shop_User_Role_Link_Audit; -DROP TABLE IF EXISTS Shop_User_Role_Link; - -DROP TABLE IF EXISTS Shop_User_Audit; -DROP TABLE IF EXISTS Shop_User; - -DROP TABLE IF EXISTS Shop_Role_Permission_Link_Audit; -DROP TABLE IF EXISTS Shop_Role_Permission_Link; - -DROP TABLE IF EXISTS Shop_Role_Audit; -DROP TABLE IF EXISTS Shop_Role; - -DROP TABLE IF EXISTS Shop_Permission_Audit; -DROP TABLE IF EXISTS Shop_Permission; - -DROP TABLE IF EXISTS Shop_Permission_Group_Audit; -DROP TABLE IF EXISTS Shop_Permission_Group; - -DROP TABLE IF EXISTS Shop_Access_Level_Audit; -DROP TABLE IF EXISTS Shop_Access_Level; - -DROP TABLE IF EXISTS Shop_User_Change_Set; - - - -# User Change Sets -CREATE TABLE Shop_User_Change_Set ( - id_change_set INT NOT NULL AUTO_INCREMENT PRIMARY KEY, - comment VARCHAR(500), - updated_last_on DATETIME, - updated_last_by VARCHAR(100) -); - -DELIMITER // -CREATE TRIGGER before_insert_Shop_User_Change_Set -BEFORE INSERT ON Shop_User_Change_Set -FOR EACH ROW -BEGIN - IF NEW.updated_last_on <=> NULL THEN - SET NEW.updated_last_on = NOW(); - END IF; - IF NEW.updated_last_by <=> NULL THEN - SET NEW.updated_last_by = CURRENT_USER(); - END IF; -END // -DELIMITER ;; - -SELECT * FROM Shop_User_Change_Set; - - - -# Access Levels -CREATE TABLE Shop_Access_Level ( - id_access_level INT NOT NULL AUTO_INCREMENT PRIMARY KEY, - code VARCHAR(50), - name VARCHAR(255), - priority INT NOT NULL, - active BIT NOT NULL DEFAULT 1, - display_order INT NOT NULL, - created_on DATETIME, - created_by INT, - id_change_set INT, - CONSTRAINT FK_Shop_Access_Level_id_change_set - FOREIGN KEY (id_change_set) - REFERENCES Shop_User_Change_Set(id_change_set) -); - -DELIMITER // -CREATE TRIGGER before_insert_Shop_Access_Level -BEFORE INSERT ON Shop_Access_Level -FOR EACH ROW -BEGIN - IF NEW.created_on <=> NULL THEN - SET NEW.created_on := IFNULL(NEW.created_on, NOW()); - END IF; - IF NEW.created_by <=> NULL THEN - SET NEW.created_by := IFNULL(NEW.created_by, IFNULL((SELECT id_user FROM Shop_User WHERE firstname = CURRENT_USER()), -1)); - END IF; -END // -DELIMITER ;; - -CREATE TABLE Shop_Access_Level_Audit ( - id_audit INT NOT NULL AUTO_INCREMENT PRIMARY KEY, - id_access_level INT NOT NULL, - CONSTRAINT FK_Shop_Access_Level_Audit_id_access_level - FOREIGN KEY (id_access_level) - REFERENCES Shop_Access_Level(id_access_level) - ON UPDATE RESTRICT, - name_field VARCHAR(50), - value_prev VARCHAR(500), - value_new VARCHAR(500), - id_change_set INT NOT NULL, - CONSTRAINT FK_Shop_Access_Level_Audit_id_change_set - FOREIGN KEY (id_change_set) - REFERENCES Shop_User_Change_Set(id_change_set) -); - -DELIMITER // -CREATE TRIGGER before_update_Shop_Access_Level -BEFORE UPDATE ON Shop_Access_Level -FOR EACH ROW -BEGIN - INSERT INTO Shop_Access_Level_Audit ( - id_access_level, - name_field, - value_prev, - value_new, - id_change_set - ) - # Changed code - SELECT NEW.id_access_level, 'code', OLD.code, NEW.code, NEW.id_change_set - WHERE NOT (OLD.code <=> NEW.code) - UNION - # Changed name - SELECT NEW.id_access_level, 'name', OLD.name, NEW.name, NEW.id_change_set - WHERE NOT (OLD.name <=> NEW.name) - UNION - # Changed priority - SELECT NEW.id_access_level, 'priority', CONVERT(OLD.priority, CHAR), CONVERT(NEW.priority, CHAR), NEW.id_change_set - WHERE NOT (OLD.priority <=> NEW.priority) - UNION - # Changed active - SELECT NEW.id_access_level, 'active', CONVERT(CONVERT(OLD.active, SIGNED), CHAR), CONVERT(CONVERT(NEW.active, SIGNED), CHAR), NEW.id_change_set - WHERE NOT (OLD.active <=> NEW.active) - ; -END // -DELIMITER ;; - -INSERT INTO Shop_Access_Level ( - display_order, code, name, priority -) -VALUES - (1, 'VIEW', 'View', 3), - (2, 'EDIT', 'Edit', 2), - (3, 'ADMIN', 'Admin', 1) -; - -SELECT * FROM Shop_Access_Level; -SELECT * FROM Shop_Access_Level_Audit; - - - -# Permission Groups -CREATE TABLE Shop_Permission_Group ( - id_group INT NOT NULL AUTO_INCREMENT PRIMARY KEY, - code VARCHAR(50), - name VARCHAR(255), - active BIT NOT NULL DEFAULT 1, - display_order INT NOT NULL, - created_on DATETIME, - created_by INT, - id_change_set INT, - CONSTRAINT FK_Shop_Permission_Group_id_change_set - FOREIGN KEY (id_change_set) - REFERENCES Shop_User_Change_Set(id_change_set) - ON UPDATE RESTRICT -); - -DELIMITER // -CREATE TRIGGER before_insert_Shop_Permission_Group -BEFORE INSERT ON Shop_Permission_Group -FOR EACH ROW -BEGIN - IF NEW.created_on <=> NULL THEN - SET NEW.created_on := IFNULL(NEW.created_on, NOW()); - END IF; - IF NEW.created_by <=> NULL THEN - SET NEW.created_by := IFNULL(NEW.created_by, IFNULL((SELECT id_user FROM Shop_User WHERE firstname = CURRENT_USER()), -1)); - END IF; -END // -DELIMITER ;; - -CREATE TABLE Shop_Permission_Group_Audit ( - id_audit INT NOT NULL AUTO_INCREMENT PRIMARY KEY, - id_group INT NOT NULL, - CONSTRAINT FK_Shop_Permission_Group_Audit_id_group - FOREIGN KEY (id_group) - REFERENCES Shop_Permission_Group(id_group) - ON UPDATE RESTRICT, - name_field VARCHAR(50), - value_prev VARCHAR(500), - value_new VARCHAR(500), - id_change_set INT NOT NULL, - CONSTRAINT FK_Shop_Permission_Group_Audit_id_change_set - FOREIGN KEY (id_change_set) - REFERENCES Shop_User_Change_Set(id_change_set) - ON UPDATE RESTRICT -); - -DELIMITER // -CREATE TRIGGER before_update_Shop_Permission_Group -BEFORE UPDATE ON Shop_Permission_Group -FOR EACH ROW -BEGIN - INSERT INTO Shop_Permission_Group_Audit ( - id_group, - name_field, - value_prev, - value_new, - id_change_set - ) - # Changed code - SELECT NEW.id_group, 'code', OLD.code, NEW.code, NEW.id_change_set - WHERE NOT OLD.code <=> NEW.code - UNION - # Changed name - SELECT NEW.id_group, 'name', OLD.name, NEW.name, NEW.id_change_set - WHERE NOT OLD.name <=> NEW.name - UNION - # Changed active - SELECT NEW.id_group, 'active', CONVERT(CONVERT(OLD.active, SIGNED), CHAR), CONVERT(CONVERT(NEW.active, SIGNED), CHAR), NEW.id_change_set - WHERE NOT (OLD.active <=> NEW.active) - ; -END // -DELIMITER ;; - -INSERT INTO Shop_Permission_Group ( - display_order, code, name -) -VALUES - (1, 'STORE', 'Store Home') -; - -SELECT * FROM Shop_Permission_Group; -SELECT * FROM Shop_Permission_Group_Audit; - - - -# Permissions -CREATE TABLE Shop_Permission ( - id_permission INT NOT NULL AUTO_INCREMENT PRIMARY KEY, - code VARCHAR(50), - name VARCHAR(255), - id_permission_group INT NOT NULL, - CONSTRAINT FK_Shop_Permission_id_permission_group - FOREIGN KEY (id_permission_group) - REFERENCES Shop_Permission_Group(id_group) - ON UPDATE RESTRICT, - required_access_level INT NOT NULL, - CONSTRAINT FK_Shop_Permission_id_access_level - FOREIGN KEY (required_access_level) - REFERENCES Shop_Access_Level(id_access_level), - active BIT NOT NULL DEFAULT 1, - display_order INT NOT NULL, - created_on DATETIME, - created_by INT, - id_change_set INT, - CONSTRAINT FK_Shop_Permission_id_change_set - FOREIGN KEY (id_change_set) - REFERENCES Shop_User_Change_Set(id_change_set) -); - -DELIMITER // -CREATE TRIGGER before_insert_Shop_Permission -BEFORE INSERT ON Shop_Permission -FOR EACH ROW -BEGIN - IF NEW.created_on <=> NULL THEN - SET NEW.created_on := IFNULL(NEW.created_on, NOW()); - END IF; - IF NEW.created_by <=> NULL THEN - SET NEW.created_by := IFNULL(NEW.created_by, IFNULL((SELECT id_user FROM Shop_User WHERE firstname = CURRENT_USER()), -1)); - END IF; -END // -DELIMITER ;; - -CREATE TABLE Shop_Permission_Audit ( - id_audit INT NOT NULL AUTO_INCREMENT PRIMARY KEY, - id_permission INT NOT NULL, - CONSTRAINT FK_Shop_Permission_Audit_id_permission - FOREIGN KEY (id_permission) - REFERENCES Shop_Permission(id_permission) - ON UPDATE RESTRICT, - name_field VARCHAR(50), - value_prev VARCHAR(500), - value_new VARCHAR(500), - id_change_set INT NOT NULL, - CONSTRAINT FK_Shop_Permission_Audit_id_change_set - FOREIGN KEY (id_change_set) - REFERENCES Shop_User_Change_Set(id_change_set) - ON UPDATE RESTRICT -); - -DELIMITER // -CREATE TRIGGER before_update_Shop_Permission -BEFORE UPDATE ON Shop_Permission -FOR EACH ROW -BEGIN - INSERT INTO Shop_Permission_Audit ( - id_permission, - name_field, - value_prev, - value_new, - id_change_set - ) - # Changed code - SELECT NEW.id_permission, 'code', OLD.code, NEW.code, NEW.id_change_set - WHERE NOT OLD.code <=> NEW.code - UNION - # Changed name - SELECT NEW.id_permission, 'name', OLD.name, NEW.name, NEW.id_change_set - WHERE NOT OLD.name <=> NEW.name - UNION - # Changed id_permission_group - SELECT NEW.id_permission, 'id_permission_group', CONVERT(OLD.id_permission_group, CHAR), CONVERT(NEW.id_permission_group, CHAR), NEW.id_change_set - WHERE NOT OLD.id_permission_group <=> NEW.id_permission_group - UNION - # Changed required_access_level - SELECT NEW.id_permission, 'required_access_level', CONVERT(OLD.required_access_level, CHAR), CONVERT(NEW.required_access_level, CHAR), NEW.id_change_set - WHERE NOT OLD.required_access_level <=> NEW.required_access_level - UNION - # Changed active - SELECT NEW.id_permission, 'active', CONVERT(CONVERT(OLD.active, SIGNED), CHAR), CONVERT(CONVERT(NEW.active, SIGNED), CHAR), NEW.id_change_set - WHERE NOT (OLD.active <=> NEW.active) - ; -END // -DELIMITER ;; - -INSERT INTO Shop_Permission ( - display_order, code, name, id_permission_group, required_access_level -) -VALUES - (1, 'STORE_PRODUCT', 'Store Product Page', 1, 1), - (2, 'STORE_SERVICES', 'Store Services Page', 1, 1), - (3, 'CONTACT_US', 'Contact Us Page', 1, 1) -; - -SELECT * FROM Shop_Permission; -SELECT * FROM Shop_Permission_Audit; - - - -# Roles -CREATE TABLE Shop_Role ( - id_role INT NOT NULL AUTO_INCREMENT PRIMARY KEY, - code VARCHAR(50), - name VARCHAR(255), - active BIT NOT NULL DEFAULT 1, - display_order INT NOT NULL, - created_on DATETIME, - created_by INT, - id_change_set INT, - CONSTRAINT FK_Shop_Role_id_change_set - FOREIGN KEY (id_change_set) - REFERENCES Shop_User_Change_Set(id_change_set) -); - -DELIMITER // -CREATE TRIGGER before_insert_Shop_Role -BEFORE INSERT ON Shop_Role -FOR EACH ROW -BEGIN - IF NEW.created_on <=> NULL THEN - SET NEW.created_on := IFNULL(NEW.created_on, NOW()); - END IF; - IF NEW.created_by <=> NULL THEN - SET NEW.created_by := IFNULL(NEW.created_by, IFNULL((SELECT id_user FROM Shop_User WHERE firstname = CURRENT_USER()), -1)); - END IF; -END // -DELIMITER ;; - -CREATE TABLE Shop_Role_Audit ( - id_audit INT NOT NULL AUTO_INCREMENT PRIMARY KEY, - id_role INT NOT NULL, - CONSTRAINT FK_Shop_Role_Audit_id_role - FOREIGN KEY (id_role) - REFERENCES Shop_Role(id_role) - ON UPDATE RESTRICT, - name_field VARCHAR(50), - value_prev VARCHAR(500), - value_new VARCHAR(500), - id_change_set INT NOT NULL, - CONSTRAINT FK_Shop_Role_Audit_id_change_set - FOREIGN KEY (id_change_set) - REFERENCES Shop_User_Change_Set(id_change_set) - ON UPDATE RESTRICT -); - -DELIMITER // -CREATE TRIGGER before_update_Shop_Role -BEFORE UPDATE ON Shop_Role -FOR EACH ROW -BEGIN - INSERT INTO Shop_Role_Audit ( - id_role, - name_field, - value_prev, - value_new, - id_change_set - ) - # Changed code - SELECT NEW.id_role, 'code', OLD.code, NEW.code, NEW.id_change_set - WHERE NOT OLD.code <=> NEW.code - UNION - # Changed name - SELECT NEW.id_role, 'name', OLD.name, NEW.name, NEW.id_change_set - WHERE NOT OLD.name <=> NEW.name - UNION - # Changed active - SELECT NEW.id_role, 'active', CONVERT(CONVERT(OLD.active, SIGNED), CHAR), CONVERT(CONVERT(NEW.active, SIGNED), CHAR), NEW.id_change_set - WHERE NOT (OLD.active <=> NEW.active) - ; -END // -DELIMITER ;; - -INSERT INTO Shop_Role ( - display_order, - code, - name -) -VALUES - (1, 'DIRECTOR', 'Director'), - (2, 'USER', 'User') -; - -SELECT * FROM Shop_Role; -SELECT * FROM Shop_Role_Audit; - - - -# Role Permission link -CREATE TABLE Shop_Role_Permission_Link ( - id_link INT NOT NULL AUTO_INCREMENT PRIMARY KEY, - id_role INT, - CONSTRAINT FK_Shop_Role_Permission_Link_id_role - FOREIGN KEY (id_role) - REFERENCES Shop_Role(id_role) - ON UPDATE RESTRICT, - id_permission INT, - CONSTRAINT FK_Shop_Role_Permission_Link_id_permission - FOREIGN KEY (id_permission) - REFERENCES Shop_Permission(id_permission) - ON UPDATE RESTRICT, - id_access_level INT, - CONSTRAINT FK_Shop_Role_Permission_Link_id_access_level - FOREIGN KEY (id_access_level) - REFERENCES Shop_Access_Level(id_access_level) - ON UPDATE RESTRICT, - active BIT NOT NULL DEFAULT 1, - created_on DATETIME, - created_by INT, - id_change_set INT, - CONSTRAINT FK_Shop_Role_Permission_Link_id_change_set - FOREIGN KEY (id_change_set) - REFERENCES Shop_User_Change_Set(id_change_set) -); - -DELIMITER // -CREATE TRIGGER before_insert_Shop_Role_Permission_Link -BEFORE INSERT ON Shop_Role_Permission_Link -FOR EACH ROW -BEGIN - IF NEW.created_on <=> NULL THEN - SET NEW.created_on := IFNULL(NEW.created_on, NOW()); - END IF; - IF NEW.created_by <=> NULL THEN - SET NEW.created_by := IFNULL(NEW.created_by, IFNULL((SELECT id_user FROM Shop_User WHERE firstname = CURRENT_USER()), -1)); - END IF; -END // -DELIMITER ;; - -CREATE TABLE Shop_Role_Permission_Link_Audit ( - id_audit INT NOT NULL AUTO_INCREMENT PRIMARY KEY, - id_link INT NOT NULL, - CONSTRAINT FK_Shop_Role_Permission_Link_Audit_id_link - FOREIGN KEY (id_link) - REFERENCES Shop_Role_Permission_Link(id_link) - ON UPDATE RESTRICT, - name_field VARCHAR(50), - value_prev VARCHAR(500), - value_new VARCHAR(500), - id_change_set INT NOT NULL, - CONSTRAINT FK_Shop_Role_Permission_Link_Audit_id_change_set - FOREIGN KEY (id_change_set) - REFERENCES Shop_User_Change_Set(id_change_set) - ON UPDATE RESTRICT -); - -DELIMITER // -CREATE TRIGGER before_update_Shop_Role_Permission_Link -BEFORE UPDATE ON Shop_Role_Permission_Link -FOR EACH ROW -BEGIN - INSERT INTO Shop_Role_Permission_Link_Audit ( - id_link, - name_field, - value_prev, - value_new, - id_change_set - ) - # Changed id_role - SELECT NEW.id_link, 'id_role', CONVERT(OLD.id_role, CHAR), CONVERT(NEW.id_role, CHAR), NEW.id_change_set - WHERE NOT OLD.id_role <=> NEW.id_role - UNION - # Changed id_permission - SELECT NEW.id_link, 'id_permission', CONVERT(OLD.id_permission, CHAR), CONVERT(NEW.id_permission, CHAR), NEW.id_change_set - WHERE NOT OLD.id_permission <=> NEW.id_permission - UNION - # Changed id_access_level - SELECT NEW.id_link, 'id_access_level', CONVERT(OLD.id_access_level, CHAR), CONVERT(NEW.id_access_level, CHAR), NEW.id_change_set - WHERE NOT OLD.id_access_level <=> NEW.id_access_level - UNION - # Changed active - SELECT NEW.id_link, 'active', CONVERT(CONVERT(OLD.active, SIGNED), CHAR), CONVERT(CONVERT(NEW.active, SIGNED), CHAR), NEW.id_change_set - WHERE NOT (OLD.active <=> NEW.active) - ; -END // -DELIMITER ;; - -INSERT INTO Shop_Role_Permission_Link ( - id_role, id_permission, id_access_level -) -VALUES - (1, 1, 3), - (1, 2, 3), - (1, 3, 3), - (2, 1, 1), - (2, 2, 1), - (2, 3, 1) -; - -SELECT * FROM Shop_Role_Permission_Link; -SELECT * FROM Shop_Role_Permission_Link_Audit; - - - -# Users -CREATE TABLE Shop_User ( - id_user INT NOT NULL AUTO_INCREMENT PRIMARY KEY, - name VARCHAR(255), - is_super_user BIT NOT NULL DEFAULT 0, - active BIT NOT NULL DEFAULT 1, - created_on DATETIME, - created_by INT, - id_change_set INT, - CONSTRAINT FK_Shop_User_id_change_set - FOREIGN KEY (id_change_set) - REFERENCES Shop_User_Change_Set(id_change_set) -); - -DELIMITER // -CREATE TRIGGER before_insert_Shop_User -BEFORE INSERT ON Shop_User -FOR EACH ROW -BEGIN - IF NEW.created_on <=> NULL THEN - SET NEW.created_on := IFNULL(NEW.created_on, NOW()); - END IF; - IF NEW.created_by <=> NULL THEN - SET NEW.created_by := IFNULL(NEW.created_by, IFNULL((SELECT id_user FROM Shop_User WHERE firstname = CURRENT_USER()), -1)); - END IF; -END // -DELIMITER ;; - -CREATE TABLE Shop_User_Audit ( - id_audit INT NOT NULL AUTO_INCREMENT PRIMARY KEY, - id_user INT NOT NULL, - CONSTRAINT FK_Shop_User_Audit_id_user - FOREIGN KEY (id_user) - REFERENCES Shop_User(id_user) - ON UPDATE RESTRICT, - name_field VARCHAR(50), - value_prev VARCHAR(500), - value_new VARCHAR(500), - id_change_set INT NOT NULL, - CONSTRAINT FK_Shop_User_Audit_id_change_set - FOREIGN KEY (id_change_set) - REFERENCES Shop_User_Change_Set(id_change_set) - ON UPDATE RESTRICT -); - -DELIMITER // -CREATE TRIGGER before_update_Shop_User -BEFORE UPDATE ON Shop_User -FOR EACH ROW -BEGIN - INSERT INTO Shop_User_Audit ( - id_user, - name_field, - value_prev, - value_new, - id_change_set - ) - # Changed name - SELECT NEW.id_user, 'name', OLD.name, NEW.name, NEW.id_change_set - WHERE NOT (OLD.name <=> NEW.name) - UNION - # Changed is_super_user - SELECT NEW.id_user, 'is_super_user', CONVERT(CONVERT(OLD.is_super_user, SIGNED), CHAR), CONVERT(CONVERT(NEW.is_super_user, SIGNED), CHAR), NEW.id_change_set - WHERE NOT (OLD.is_super_user <=> NEW.is_super_user) - UNION - # Changed active - SELECT NEW.id_user, 'active', CONVERT(CONVERT(OLD.active, SIGNED), CHAR), CONVERT(CONVERT(NEW.active, SIGNED), CHAR), NEW.id_change_set - WHERE NOT (OLD.active <=> NEW.active) - ; -END // -DELIMITER ;; - -INSERT INTO Shop_User ( - name, - is_super_user -) -VALUES ( - 'Teddy', - 1 -); - -SELECT * FROM Shop_User; -SELECT * FROM Shop_User_Audit; - - - -# User Role link -CREATE TABLE Shop_User_Role_Link ( - id_link INT NOT NULL AUTO_INCREMENT PRIMARY KEY, - id_user INT, - CONSTRAINT FK_Shop_User_Role_Link_id_user - FOREIGN KEY (id_user) - REFERENCES Shop_User(id_user) - ON UPDATE RESTRICT, - id_role INT, - CONSTRAINT FK_Shop_User_Role_Link_id_role - FOREIGN KEY (id_role) - REFERENCES Shop_Role(id_role) - ON UPDATE RESTRICT, - active BIT NOT NULL DEFAULT 1, - created_on DATETIME, - created_by INT, - id_change_set INT, - CONSTRAINT FK_Shop_User_Role_Link_id_change_set - FOREIGN KEY (id_change_set) - REFERENCES Shop_User_Change_Set(id_change_set) -); - -DELIMITER // -CREATE TRIGGER before_insert_Shop_User_Role_Link -BEFORE INSERT ON Shop_User_Role_Link -FOR EACH ROW -BEGIN - IF NEW.created_on <=> NULL THEN - SET NEW.created_on := IFNULL(NEW.created_on, NOW()); - END IF; - IF NEW.created_by <=> NULL THEN - SET NEW.created_by := IFNULL(NEW.created_by, IFNULL((SELECT id_user FROM Shop_User WHERE firstname = CURRENT_USER()), -1)); - END IF; -END // -DELIMITER ;; - -CREATE TABLE Shop_User_Role_Link_Audit ( - id_audit INT NOT NULL AUTO_INCREMENT PRIMARY KEY, - id_link INT NOT NULL, - CONSTRAINT FK_Shop_User_Role_Link_Audit_id_link - FOREIGN KEY (id_link) - REFERENCES Shop_User_Role_Link(id_link) - ON UPDATE RESTRICT, - name_field VARCHAR(50), - value_prev VARCHAR(500), - value_new VARCHAR(500), - id_change_set INT NOT NULL, - CONSTRAINT FK_Shop_User_Role_Link_Audit_id_change_set - FOREIGN KEY (id_change_set) - REFERENCES Shop_User_Change_Set(id_change_set) - ON UPDATE RESTRICT -); - -DELIMITER // -CREATE TRIGGER before_update_Shop_User_Role_Link -BEFORE UPDATE ON Shop_User_Role_Link -FOR EACH ROW -BEGIN - INSERT INTO Shop_User_Role_Link_Audit ( - id_link, - name_field, - value_prev, - value_new, - id_change_set - ) - # Changed active - SELECT NEW.id_link, 'active', CONVERT(CONVERT(OLD.active, SIGNED), CHAR), CONVERT(CONVERT(NEW.active, SIGNED), CHAR), NEW.id_change_set - WHERE NOT (OLD.active <=> NEW.active) - ; -END // -DELIMITER ;; - -INSERT INTO Shop_User_Role_Link ( - id_user, id_role -) -VALUES - (1, 1) -; - -SELECT * FROM Shop_User_Role_Link; -SELECT * FROM Shop_User_Role_Link_Audit; - - - -# Addresses -CREATE TABLE Shop_Address ( - id_address INT NOT NULL AUTO_INCREMENT PRIMARY KEY, - id_user INT NOT NULL, - CONSTRAINT FK_Shop_Address_id_user - FOREIGN KEY (id_user) - REFERENCES Shop_User(id_user) - ON UPDATE RESTRICT, - region VARCHAR(100) NOT NULL, - name_full VARCHAR(255) NOT NULL, - phone_number VARCHAR(20) NOT NULL, - postcode VARCHAR(20) NOT NULL, - address_line_1 VARCHAR(100) NOT NULL, - address_line_2 VARCHAR(100) NOT NULL, - city VARCHAR(50) NOT NULL, - county VARCHAR(100) NOT NULL, - active BIT NOT NULL DEFAULT 1, - created_on DATETIME, - created_by INT, - id_change_set INT, - CONSTRAINT FK_Shop_Address_id_change_set - FOREIGN KEY (id_change_set) - REFERENCES Shop_User_Change_Set(id_change_set) -); - -DELIMITER // -CREATE TRIGGER before_insert_Shop_Address -BEFORE INSERT ON Shop_Address -FOR EACH ROW -BEGIN - IF NEW.created_on <=> NULL THEN - SET NEW.created_on := IFNULL(NEW.created_on, NOW()); - END IF; - IF NEW.created_by <=> NULL THEN - SET NEW.created_by := IFNULL(NEW.created_by, IFNULL((SELECT id_user FROM Shop_User WHERE firstname = CURRENT_USER()), -1)); - END IF; -END // -DELIMITER ;; - -CREATE TABLE Shop_Address_Audit ( - id_audit INT NOT NULL AUTO_INCREMENT PRIMARY KEY, - id_address INT NOT NULL, - CONSTRAINT FK_Shop_Address_Audit_id_address - FOREIGN KEY (id_address) - REFERENCES Shop_Address(id_address) - ON UPDATE RESTRICT, - name_field VARCHAR(50), - value_prev VARCHAR(500), - value_new VARCHAR(500), - id_change_set INT NOT NULL, - CONSTRAINT FK_Shop_Address_Audit_id_change_set - FOREIGN KEY (id_change_set) - REFERENCES Shop_User_Change_Set(id_change_set) - ON UPDATE RESTRICT -); - -DELIMITER // -CREATE TRIGGER before_update_Shop_Address -BEFORE UPDATE ON Shop_Address -FOR EACH ROW -BEGIN - INSERT INTO Shop_Address_Audit ( - id_address, - name_field, - value_prev, - value_new, - id_change_set - ) - # Changed region - SELECT NEW.id_address, 'region', OLD.region, NEW.region, NEW.id_change_set - WHERE NOT OLD.region <=> NEW.region - UNION - # Changed name_full - SELECT NEW.id_address, 'name_full', OLD.name_full, NEW.name_full, NEW.id_change_set - WHERE NOT OLD.name_full <=> NEW.name_full - UNION - # Changed phone_number - SELECT NEW.id_address, 'phone_number', OLD.phone_number, NEW.phone_number, NEW.id_change_set - WHERE NOT OLD.phone_number <=> NEW.phone_number - UNION - # Changed postcode - SELECT NEW.id_address, 'postcode', OLD.postcode, NEW.postcode, NEW.id_change_set - WHERE NOT OLD.postcode <=> NEW.postcode - UNION - # Changed address_line_1 - SELECT NEW.id_address, 'address_line_1', OLD.address_line_1, NEW.address_line_1, NEW.id_change_set - WHERE NOT OLD.address_line_1 <=> NEW.address_line_1 - UNION - # Changed address_line_2 - SELECT NEW.id_address, 'address_line_2', OLD.address_line_2, NEW.address_line_2, NEW.id_change_set - WHERE NOT OLD.address_line_2 <=> NEW.address_line_2 - UNION - # Changed city - SELECT NEW.id_address, 'city', OLD.city, NEW.city, NEW.id_change_set - WHERE NOT OLD.city <=> NEW.city - UNION - # Changed county - SELECT NEW.id_address, 'county', OLD.county, NEW.county, NEW.id_change_set - WHERE NOT OLD.county <=> NEW.county - UNION - # Changed active - SELECT NEW.id_address, 'active', CONVERT(CONVERT(OLD.active, SIGNED), CHAR), CONVERT(CONVERT(NEW.active, SIGNED), CHAR), NEW.id_change_set - WHERE NOT (OLD.active <=> NEW.active) - ; -END // -DELIMITER ;; - -INSERT INTO Shop_Address ( - id_user, region, name_full, phone_number, postcode, address_line_1, address_line_2, city, county -) -SELECT U.id_user, 'United Kingdom', U.name, '07375 571430', 'NN6 6EB', 'The Laurels', 'Cold Ashby Road', 'Cold Ashby', 'Northamptonshire' - FROM Shop_User U; - -SELECT * FROM Shop_Address; -SELECT * FROM Shop_Address_Audit; - - diff --git a/static/MySQL/deprecated/000_init_tables_product.sql b/static/MySQL/deprecated/000_init_tables_product.sql deleted file mode 100644 index 214fb6ac..00000000 --- a/static/MySQL/deprecated/000_init_tables_product.sql +++ /dev/null @@ -1,1520 +0,0 @@ -/* Store */ - - - -# Delete old tables -DROP TABLE IF EXISTS Shop_Product_Delivery_Region_Link_Audit; -DROP TABLE IF EXISTS Shop_Product_Delivery_Region_Link; - -DROP TABLE IF EXISTS Shop_Delivery_Region_Audit; -DROP TABLE IF EXISTS Shop_Delivery_Region; - -DROP TABLE IF EXISTS Shop_Delivery_Option_Audit; -DROP TABLE IF EXISTS Shop_Delivery_Option; - -DROP TABLE IF EXISTS Shop_Delivery_Option_Type_Audit; -DROP TABLE IF EXISTS Shop_Delivery_Option_Type; - -DROP TABLE IF EXISTS Shop_Product_Image_Link_Audit; -DROP TABLE IF EXISTS Shop_Product_Image_Link; - -DROP TABLE IF EXISTS Shop_Image_Audit; -DROP TABLE IF EXISTS Shop_Image; - -DROP TABLE IF EXISTS Shop_Image_Type_Audit; -DROP TABLE IF EXISTS Shop_Image_Type; - -DROP TABLE IF EXISTS Shop_Product_Variation_Link_Audit; -DROP TABLE IF EXISTS Shop_Product_Variation_Link; - -DROP TABLE IF EXISTS Shop_Variation_Audit; -DROP TABLE IF EXISTS Shop_Variation; - -DROP TABLE IF EXISTS Shop_Variation_Type_Audit; -DROP TABLE IF EXISTS Shop_Variation_Type; - -DROP TABLE IF EXISTS Shop_Product_Audit; -DROP TABLE IF EXISTS Shop_Product; - -DROP TABLE IF EXISTS Shop_Interval_Recurrence_Audit; -DROP TABLE IF EXISTS Shop_Interval_Recurrence; - -DROP TABLE IF EXISTS Shop_Product_Category_Audit; -DROP TABLE IF EXISTS Shop_Product_Category; - -DROP TABLE IF EXISTS Shop_General_Audit; -DROP TABLE IF EXISTS Shop_General; - -DROP TABLE IF EXISTS File_Type_Audit; -DROP TABLE IF EXISTS File_Type; - -DROP TABLE IF EXISTS Shop_Product_Change_Set; - - - -# Product Change Sets -CREATE TABLE Shop_Product_Change_Set ( - id_change_set INT NOT NULL AUTO_INCREMENT PRIMARY KEY, - comment VARCHAR(500), - updated_last_on DATETIME, - updated_last_by VARCHAR(100) -); - -DELIMITER // -CREATE TRIGGER before_insert_Shop_Product_Change_Set -BEFORE INSERT ON Shop_Product_Change_Set -FOR EACH ROW -BEGIN - IF NEW.updated_last_on <=> NULL THEN - SET NEW.updated_last_on = NOW(); - END IF; - IF NEW.updated_last_by <=> NULL THEN - SET NEW.updated_last_by = CURRENT_USER(); - END IF; -END // -DELIMITER ;; - -SELECT * FROM Shop_Product_Change_Set; - - - -# File Types -CREATE TABLE File_Type ( - id_type INT NOT NULL AUTO_INCREMENT PRIMARY KEY, - code VARCHAR(50), - name VARCHAR(100), - extension VARCHAR(50), - created_on DATETIME, - created_by INT, - updated_last_on DATETIME, - updated_last_by VARCHAR(100) -); - -DELIMITER // -CREATE TRIGGER before_insert_File_Type -BEFORE INSERT ON File_Type -FOR EACH ROW -BEGIN - SET NEW.created_on := IFNULL(NEW.created_on, NOW()); - SET NEW.created_by := IFNULL(NEW.created_by, IFNULL((SELECT id_user FROM Shop_User WHERE firstname = CURRENT_USER()), -1)); -END // -DELIMITER ;; - -CREATE TABLE File_Type_Audit ( - id_audit INT NOT NULL AUTO_INCREMENT PRIMARY KEY, - id_type INT NOT NULL, - CONSTRAINT FK_File_Type_Audit_id_type - FOREIGN KEY (id_type) - REFERENCES File_Type(id_type) - ON UPDATE RESTRICT, - name_field VARCHAR(50), - value_prev VARCHAR(500), - value_new VARCHAR(500), - created_on DATETIME, - created_by INT, - updated_last_on DATETIME, - updated_last_by VARCHAR(100) -); - -DELIMITER // -CREATE TRIGGER before_insert_File_Type_Audit -BEFORE INSERT ON File_Type_Audit -FOR EACH ROW -BEGIN - SET NEW.created_on := IFNULL(NEW.created_on, NOW()); - SET NEW.created_by := IFNULL(NEW.created_by, IFNULL((SELECT id_user FROM Shop_User WHERE firstname = CURRENT_USER()), -1)); -END // -DELIMITER ;; - -DELIMITER // -CREATE TRIGGER before_update_File_Type_Audit -BEFORE UPDATE ON File_Type_Audit -FOR EACH ROW -BEGIN - SET NEW.updated_last_on = NOW(); - SET NEW.updated_last_by = CURRENT_USER(); -END // -DELIMITER ;; - -DELIMITER // -CREATE TRIGGER before_update_File_Type -BEFORE UPDATE ON File_Type -FOR EACH ROW -BEGIN - INSERT INTO File_Type_Audit ( - id_type, - name_field, - value_prev, - value_new - ) - # Changed code - SELECT NEW.id_type, 'code', OLD.code, NEW.code - WHERE NOT OLD.code <=> NEW.code - UNION - # Changed name - SELECT NEW.id_type, 'name', OLD.name, NEW.name - WHERE NOT OLD.name <=> NEW.name - UNION - # Changed extension - SELECT NEW.id_type, 'extension', CONVERT(OLD.extension, CHAR), CONVERT(NEW.extension, CHAR) - WHERE NOT OLD.extension <=> NEW.extension - ; -END // -DELIMITER ;; - -INSERT INTO File_Type ( - code, name, extension -) -VALUES - ('JPEG', 'Joint Photographic Export Group', 'jpg'), - ('PNG', 'Portable Network Graphic', 'png'), - ('GIF', 'GIF', 'gif'), - ('MPEG-4', 'Multimedia Photographic Export Group 4', 'mp4') -; - -SELECT * FROM File_Type; -SELECT * FROM File_Type_Audit; - - - -# Generic / shared properties -CREATE TABLE Shop_General ( - id_general INT NOT NULL AUTO_INCREMENT PRIMARY KEY, - quantity_max FLOAT, - created_on DATETIME, - created_by INT, - id_change_set INT, - CONSTRAINT FK_Shop_General_id_change_set - FOREIGN KEY (id_change_set) - REFERENCES Shop_Product_Change_Set(id_change_set) -); - -DELIMITER // -CREATE TRIGGER before_insert_Shop_General -BEFORE INSERT ON Shop_General -FOR EACH ROW -BEGIN - SET NEW.created_on := IFNULL(NEW.created_on, NOW()); - SET NEW.created_by := IFNULL(NEW.created_by, IFNULL((SELECT id_user FROM Shop_User WHERE firstname = CURRENT_USER()), -1)); -END // -DELIMITER ;; - -CREATE TABLE Shop_General_Audit ( - id_audit INT NOT NULL AUTO_INCREMENT PRIMARY KEY, - id_general INT NOT NULL, - CONSTRAINT FK_Shop_General_Audit_id_general - FOREIGN KEY (id_general) - REFERENCES Shop_General(id_general) - ON UPDATE RESTRICT, - name_field VARCHAR(50), - value_prev VARCHAR(500), - value_new VARCHAR(500), - id_change_set INT NOT NULL, - CONSTRAINT FK_Shop_General_Audit_id_change_set - FOREIGN KEY (id_change_set) - REFERENCES Shop_Product_Change_Set(id_change_set) -); - -DELIMITER // -CREATE TRIGGER before_update_Shop_General -BEFORE UPDATE ON Shop_General -FOR EACH ROW -BEGIN - INSERT INTO Shop_General_Audit ( - id_general, - name_field, - value_prev, - value_new, - id_change_set - ) - # Changed quantity max - SELECT NEW.id_general, 'quantity_max', CONVERT(OLD.quantity_max, CHAR), CONVERT(NEW.quantity_max, CHAR), NEW.id_change_set - WHERE NOT OLD.quantity_max <=> NEW.quantity_max - ; -END // -DELIMITER ;; - -INSERT INTO Shop_General ( - quantity_max -) -VALUES ( - 10 -); - -SELECT * FROM Shop_General; -SELECT * FROM Shop_General_Audit; - - - -# Categories -CREATE TABLE Shop_Product_Category ( - id_category INT NOT NULL AUTO_INCREMENT PRIMARY KEY, - code VARCHAR(50), - name VARCHAR(255), - description VARCHAR(4000), - active BIT NOT NULL DEFAULT 1, - display_order INT NOT NULL, - created_on DATETIME, - created_by INT, - id_change_set INT, - CONSTRAINT FK_Shop_Product_Category_id_change_set - FOREIGN KEY (id_change_set) - REFERENCES Shop_Product_Change_Set(id_change_set) -); - -DELIMITER // -CREATE TRIGGER before_insert_Shop_Product_Category -BEFORE INSERT ON Shop_Product_Category -FOR EACH ROW -BEGIN - SET NEW.created_on := IFNULL(NEW.created_on, NOW()); - SET NEW.created_by := IFNULL(NEW.created_by, IFNULL((SELECT id_user FROM Shop_User WHERE firstname = CURRENT_USER()), -1)); -END // -DELIMITER ;; - -CREATE TABLE Shop_Product_Category_Audit ( - id_audit INT NOT NULL AUTO_INCREMENT PRIMARY KEY, - id_category INT NOT NULL, - CONSTRAINT FK_Shop_Product_Category_Audit_id_category - FOREIGN KEY (id_category) - REFERENCES Shop_Product_Category(id_category) - ON UPDATE RESTRICT, - name_field VARCHAR(50), - value_prev VARCHAR(500), - value_new VARCHAR(500), - id_change_set INT NOT NULL, - CONSTRAINT FK_Shop_Product_Category_Audit_id_change_set - FOREIGN KEY (id_change_set) - REFERENCES Shop_Product_Change_Set(id_change_set) -); - -DELIMITER // -CREATE TRIGGER before_update_Shop_Product_Category -BEFORE UPDATE ON Shop_Product_Category -FOR EACH ROW -BEGIN - INSERT INTO Shop_Product_Category_Audit ( - id_category, - name_field, - value_prev, - value_new, - id_change_set - ) - # Changed code - SELECT NEW.id_category, 'code', OLD.code, NEW.code, NEW.id_change_set - WHERE NOT OLD.code <=> NEW.code - UNION - # Changed name - SELECT NEW.id_category, 'name', OLD.name, NEW.name, NEW.id_change_set - WHERE NOT OLD.name <=> NEW.name - UNION - # Changed description - SELECT NEW.id_category, 'description', OLD.description, NEW.description, NEW.id_change_set - WHERE NOT OLD.description <=> NEW.description - UNION - # Changed active - SELECT NEW.id_category, 'active', CONVERT(CONVERT(OLD.active, SIGNED), CHAR), CONVERT(CONVERT(NEW.active, SIGNED), CHAR), NEW.id_change_set - WHERE NOT (OLD.active <=> NEW.active) - UNION - # Changed display_order - SELECT NEW.id_category, 'display_order', CONVERT(OLD.display_order, CHAR), CONVERT(NEW.display_order, CHAR), NEW.id_change_set - WHERE NOT OLD.display_order <=> NEW.display_order - ; -END // -DELIMITER ;; - -INSERT INTO Shop_Product_Category ( - display_order, - code, - name, - description -) -VALUES ( - 1, - 'MISC', - 'Miscellaneous', - 'Not category allocated products' -); - -SELECT * FROM Shop_Product_Category; -SELECT * FROM Shop_Product_Category_Audit; - - - -# Recurrence Interval -CREATE TABLE Shop_Interval_Recurrence ( - id_interval INT NOT NULL AUTO_INCREMENT PRIMARY KEY, - code VARCHAR(50), - name VARCHAR(255), - name_plural VARCHAR(256), - created_on DATETIME, - created_by INT, - id_change_set INT, - CONSTRAINT FK_Shop_Interval_Recurrence_id_change_set - FOREIGN KEY (id_change_set) - REFERENCES Shop_Product_Change_Set(id_change_set) -); - -DELIMITER // -CREATE TRIGGER before_insert_Shop_Interval_Recurrence -BEFORE INSERT ON Shop_Interval_Recurrence -FOR EACH ROW -BEGIN - SET NEW.created_on := IFNULL(NEW.created_on, NOW()); - SET NEW.created_by := IFNULL(NEW.created_by, IFNULL((SELECT id_user FROM Shop_User WHERE firstname = CURRENT_USER()), -1)); -END // -DELIMITER ;; - -CREATE TABLE Shop_Interval_Recurrence_Audit ( - id_audit INT NOT NULL AUTO_INCREMENT PRIMARY KEY, - id_interval INT NOT NULL, - CONSTRAINT FK_Shop_Interval_Recurrence_Audit_id_interval - FOREIGN KEY (id_interval) - REFERENCES Shop_Interval_Recurrence(id_interval) - ON UPDATE RESTRICT, - name_field VARCHAR(50), - value_prev VARCHAR(256), - value_new VARCHAR(256), - id_change_set INT NOT NULL, - CONSTRAINT FK_Shop_Interval_Recurrence_Audit_id_change_set - FOREIGN KEY (id_change_set) - REFERENCES Shop_Product_Change_Set(id_change_set) -); - -DELIMITER // -CREATE TRIGGER before_update_Shop_Interval_Recurrence -BEFORE UPDATE ON Shop_Interval_Recurrence -FOR EACH ROW -BEGIN - INSERT INTO Shop_Interval_Recurrence_Audit ( - id_interval, - name_field, - value_prev, - value_new, - id_change_set - ) - # Changed code - SELECT NEW.id_interval, 'code', OLD.code, NEW.code, NEW.id_change_set - WHERE NOT OLD.code <=> NEW.code - UNION - # Changed name - SELECT NEW.id_interval, 'name', OLD.name, NEW.name, NEW.id_change_set - WHERE NOT OLD.name <=> NEW.name - UNION - # Changed name_plural - SELECT NEW.id_interval, 'name_plural', OLD.name_plural, NEW.name_plural, NEW.id_change_set - WHERE NOT OLD.name_plural <=> NEW.name_plural - ; -END // -DELIMITER ;; - -INSERT INTO Shop_Interval_Recurrence ( - code, name, name_plural -) -VALUES - ('WEEK', 'Week', 'Weeks'), - ('MONTH', 'Month', 'Months'), - ('YEAR', 'Year', 'Years') -; - -SELECT * FROM Shop_Interval_Recurrence; -SELECT * FROM Shop_Interval_Recurrence_Audit; - - - -# Products -CREATE TABLE Shop_Product ( - id_product INT NOT NULL AUTO_INCREMENT PRIMARY KEY, - name VARCHAR(255), - description VARCHAR(4000), - price_GBP FLOAT, - id_category INT NOT NULL, - CONSTRAINT FK_Shop_Product_id_category - FOREIGN KEY (id_category) - REFERENCES Shop_Product_Category(id_category) - ON UPDATE RESTRICT, - latency_manuf INT NOT NULL DEFAULT 14, - quantity_min FLOAT NOT NULL DEFAULT 1, - quantity_max FLOAT NOT NULL DEFAULT 1, # @_quantity_max, - quantity_step FLOAT NOT NULL DEFAULT 1, - quantity_stock FLOAT NOT NULL DEFAULT 0, - is_subscription BIT NOT NULL DEFAULT 0, - id_unit_measurement_interval_recurrence INT, - CONSTRAINT FK_Shop_Product_id_unit_measurement_interval_recurrence - FOREIGN KEY (id_unit_measurement_interval_recurrence) - REFERENCES Shop_Interval_Recurrence(id_interval), - count_interval_recurrence INT, - id_stripe_product VARCHAR(100), - id_stripe_price VARCHAR(100), - active BIT NOT NULL DEFAULT 1, - display_order INT NOT NULL, - created_on DATETIME, - created_by INT, - id_change_set INT, - CONSTRAINT FK_Shop_Product_id_change_set - FOREIGN KEY (id_change_set) - REFERENCES Shop_Product_Change_Set(id_change_set) -); - -DELIMITER // -CREATE TRIGGER before_insert_Shop_Product -BEFORE INSERT ON Shop_Product -FOR EACH ROW -BEGIN - SET NEW.created_on := IFNULL(NEW.created_on, NOW()); - SET NEW.created_by := IFNULL(NEW.created_by, IFNULL((SELECT id_user FROM Shop_User WHERE firstname = CURRENT_USER()), -1)); -END // -DELIMITER ;; - -CREATE TABLE Shop_Product_Audit ( - id_audit INT NOT NULL AUTO_INCREMENT PRIMARY KEY, - id_product INT NOT NULL, - CONSTRAINT FK_Shop_Product_Audit_id_product - FOREIGN KEY (id_product) - REFERENCES Shop_Product(id_product) - ON UPDATE RESTRICT, - name_field VARCHAR(50), - value_prev VARCHAR(500), - value_new VARCHAR(500), - id_change_set INT NOT NULL, - CONSTRAINT FK_Shop_Product_Audit_id_change_set - FOREIGN KEY (id_change_set) - REFERENCES Shop_Product_Change_Set(id_change_set) -); - -DELIMITER // -CREATE TRIGGER before_update_Shop_Product -BEFORE UPDATE ON Shop_Product -FOR EACH ROW -BEGIN - INSERT INTO Shop_Product_Audit ( - id_product, - name_field, - value_prev, - value_new, - id_change_set - ) - # Changed name - SELECT NEW.id_product, 'name', OLD.name, NEW.name, NEW.id_change_set - WHERE NOT OLD.name <=> NEW.name - UNION - # Changed description - SELECT NEW.id_product, 'description', OLD.description, NEW.description, NEW.id_change_set - WHERE NOT OLD.description <=> NEW.description - UNION - # Changed price_GBP - SELECT NEW.id_product, 'price_GBP', CONVERT(OLD.price_GBP, CHAR), CONVERT(NEW.price_GBP, CHAR), NEW.id_change_set - WHERE NOT OLD.price_GBP <=> NEW.price_GBP - UNION - # Changed id_category - SELECT NEW.id_product, 'id_category', CONVERT(OLD.id_category, CHAR), CONVERT(NEW.id_category, CHAR), NEW.id_change_set - WHERE NOT OLD.id_category <=> NEW.id_category - UNION - # Changed latency_manuf - SELECT NEW.id_product, 'latency_manuf', CONVERT(OLD.latency_manuf, CHAR), CONVERT(NEW.latency_manuf, CHAR), NEW.id_change_set - WHERE NOT OLD.latency_manuf <=> NEW.latency_manuf - UNION - # Changed quantity_min - SELECT NEW.id_product, 'quantity_min', CONVERT(OLD.quantity_min, CHAR), CONVERT(NEW.quantity_min, CHAR), NEW.id_change_set - WHERE NOT OLD.quantity_min <=> NEW.quantity_min - UNION - # Changed quantity_max - SELECT NEW.id_product, 'quantity_max', CONVERT(OLD.quantity_max, CHAR), CONVERT(NEW.quantity_max, CHAR), NEW.id_change_set - WHERE NOT OLD.quantity_max <=> NEW.quantity_max - UNION - # Changed quantity_step - SELECT NEW.id_product, 'quantity_step', CONVERT(OLD.quantity_step, CHAR), CONVERT(NEW.quantity_step, CHAR), NEW.id_change_set - WHERE NOT OLD.quantity_step <=> NEW.quantity_step - UNION - # Changed quantity_stock - SELECT NEW.id_product, 'quantity_stock', CONVERT(OLD.quantity_stock, CHAR), CONVERT(NEW.quantity_stock, CHAR), NEW.id_change_set - WHERE NOT OLD.quantity_stock <=> NEW.quantity_stock - UNION - # Changed is_subscription - SELECT NEW.id_product, 'is_subscription', CONVERT(CONVERT(OLD.is_subscription, SIGNED), CHAR), CONVERT(CONVERT(NEW.is_subscription, SIGNED), CHAR), NEW.id_change_set - WHERE NOT OLD.is_subscription <=> NEW.is_subscription - UNION - # Changed id_unit_measurement_interval_recurrence - SELECT NEW.id_product, 'id_unit_measurement_interval_recurrence', CONVERT(OLD.id_unit_measurement_interval_recurrence, CHAR), CONVERT(NEW.id_unit_measurement_interval_recurrence, CHAR), NEW.id_change_set - WHERE NOT OLD.id_unit_measurement_interval_recurrence <=> NEW.id_unit_measurement_interval_recurrence - UNION - # Changed count_interval_recurrence - SELECT NEW.id_product, 'count_interval_recurrence', CONVERT(OLD.count_interval_recurrence, CHAR), CONVERT(NEW.count_interval_recurrence, CHAR), NEW.id_change_set - WHERE NOT OLD.count_interval_recurrence <=> NEW.count_interval_recurrence - UNION - # Changed id_stripe_product - SELECT NEW.id_product, 'id_stripe_product', OLD.id_stripe_product, NEW.id_stripe_product, NEW.id_change_set - WHERE NOT OLD.id_stripe_product <=> NEW.id_stripe_product - UNION - # Changed id_stripe_price - SELECT NEW.id_product, 'id_stripe_price', OLD.id_stripe_price, NEW.id_stripe_price, NEW.id_change_set - WHERE NOT OLD.id_stripe_price <=> NEW.id_stripe_price - UNION - # Changed active - SELECT NEW.id_product, 'active', CONVERT(CONVERT(OLD.active, SIGNED), CHAR), CONVERT(CONVERT(NEW.active, SIGNED), CHAR), NEW.id_change_set - WHERE NOT (OLD.active <=> NEW.active) - UNION - # Changed display_order - SELECT NEW.id_product, 'display_order', CONVERT(OLD.display_order, CHAR), CONVERT(NEW.display_order, CHAR), NEW.id_change_set - WHERE NOT OLD.display_order <=> NEW.display_order - ; -END // -DELIMITER ;; - -INSERT INTO Shop_Product ( - display_order, - name, - description, - price_GBP, - id_category, - latency_manuf, - quantity_stock, - id_stripe_product, - id_stripe_price -) -VALUES ( - 1, - 'Braille Keyboard Translator', - 'Translate text into 3D Braille keyboard.', - 25, - 1, - 14, - 99, - 'prod_PB0NUOSEs06ymG', - 'price_1OMeN9L7BuLKjoMpyMY6Aae4' -); - -SELECT * FROM Shop_Product; -SELECT * FROM Shop_Product_Audit; - - - -# Variation Types -CREATE TABLE 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 - FOREIGN KEY (id_change_set) - REFERENCES Shop_Product_Change_Set(id_change_set) -); - -DELIMITER // -CREATE TRIGGER before_insert_Shop_Variation_Type -BEFORE INSERT ON Shop_Variation_Type -FOR EACH ROW -BEGIN - SET NEW.created_on := IFNULL(NEW.created_on, NOW()); - SET NEW.created_by := IFNULL(NEW.created_by, IFNULL((SELECT id_user FROM Shop_User WHERE firstname = CURRENT_USER()), -1)); -END // -DELIMITER ;; - -CREATE TABLE Shop_Variation_Type_Audit ( - id_audit INT NOT NULL AUTO_INCREMENT PRIMARY KEY, - id_type INT NOT NULL, - CONSTRAINT FK_Shop_Variation_Type_Audit_id_type - FOREIGN KEY (id_type) - REFERENCES Shop_Variation_Type(id_type) - ON UPDATE RESTRICT, - name_field VARCHAR(50), - value_prev VARCHAR(500), - value_new VARCHAR(500), - id_change_set INT NOT NULL, - CONSTRAINT FK_Shop_Variation_Type_Audit_id_change_set - FOREIGN KEY (id_change_set) - REFERENCES Shop_Product_Change_Set(id_change_set) -); - -DELIMITER // -CREATE TRIGGER before_update_Shop_Variation_Type -BEFORE UPDATE ON Shop_Variation_Type -FOR EACH ROW -BEGIN - INSERT INTO Shop_Variation_Type_Audit ( - id_type, - name_field, - value_prev, - value_new, - id_change_set - ) - # Changed code - SELECT NEW.id_type, 'code', OLD.code, NEW.code, NEW.id_change_set - WHERE NOT OLD.code <=> NEW.code - UNION - # Changed name - SELECT NEW.id_type, 'name', OLD.name, NEW.name, NEW.id_change_set - WHERE NOT OLD.name <=> NEW.name - UNION - # Changed name_plural - SELECT NEW.id_type, 'name_plural', OLD.name_plural, NEW.name_plural, NEW.id_change_set - WHERE NOT OLD.name_plural <=> NEW.name_plural - UNION - # Changed active - SELECT NEW.id_type, 'active', CONVERT(CONVERT(OLD.active, SIGNED), CHAR), CONVERT(CONVERT(NEW.active, SIGNED), CHAR), NEW.id_change_set - WHERE NOT (OLD.active <=> NEW.active) - UNION - # Changed display_order - SELECT NEW.id_type, 'display_order', CONVERT(OLD.display_order, CHAR), CONVERT(NEW.display_order, CHAR), NEW.id_change_set - WHERE NOT (OLD.display_order <=> NEW.display_order) - ; -END // -DELIMITER ;; - -INSERT INTO Shop_Variation_Type ( - display_order, code, name, name_plural -) -VALUES - (1, 'COLOUR', 'Colour', 'Colours') -; - -SELECT * FROM Shop_Variation_Type; -SELECT * FROM Shop_Variation_Type_Audit; - - - -# Variations -CREATE TABLE Shop_Variation ( - id_variation INT NOT NULL AUTO_INCREMENT PRIMARY KEY, - id_type INT NOT NULL, - CONSTRAINT FK_Shop_Variation_id_type - FOREIGN KEY (id_type) - REFERENCES Shop_Variation_Type(id_type) - ON UPDATE RESTRICT, - code VARCHAR(50), - name VARCHAR(255), - 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_id_change_set - FOREIGN KEY (id_change_set) - REFERENCES Shop_Product_Change_Set(id_change_set) -); - -DELIMITER // -CREATE TRIGGER before_insert_Shop_Variation -BEFORE INSERT ON Shop_Variation -FOR EACH ROW -BEGIN - SET NEW.created_on := IFNULL(NEW.created_on, NOW()); - SET NEW.created_by := IFNULL(NEW.created_by, IFNULL((SELECT id_user FROM Shop_User WHERE firstname = CURRENT_USER()), -1)); -END // -DELIMITER ;; - -CREATE TABLE Shop_Variation_Audit ( - id_audit INT NOT NULL AUTO_INCREMENT PRIMARY KEY, - id_variation INT NOT NULL, - CONSTRAINT FK_Shop_Variation_Audit_id_variation - FOREIGN KEY (id_variation) - REFERENCES Shop_Variation(id_variation) - ON UPDATE RESTRICT, - name_field VARCHAR(50), - value_prev VARCHAR(500), - value_new VARCHAR(500), - id_change_set INT NOT NULL, - CONSTRAINT FK_Shop_Variation_Audit_id_change_set - FOREIGN KEY (id_change_set) - REFERENCES Shop_Product_Change_Set(id_change_set) -); - -DELIMITER // -CREATE TRIGGER before_update_Shop_Variation -BEFORE UPDATE ON Shop_Variation -FOR EACH ROW -BEGIN - INSERT INTO Shop_Variation_Audit ( - id_variation, - name_field, - value_prev, - value_new, - id_change_set - ) - # Changed code - SELECT NEW.id_variation, 'code', OLD.code, NEW.code, NEW.id_change_set - WHERE NOT OLD.code <=> NEW.code - UNION - # Changed name - SELECT NEW.id_variation, 'name', OLD.name, NEW.name, NEW.id_change_set - WHERE NOT OLD.name <=> NEW.name - UNION - # Changed active - SELECT NEW.id_variation, 'active', CONVERT(CONVERT(OLD.active, SIGNED), CHAR), CONVERT(CONVERT(NEW.active, SIGNED), CHAR), NEW.id_change_set - WHERE NOT (OLD.active <=> NEW.active) - UNION - # Changed display_order - SELECT NEW.id_variation, 'display_order', CONVERT(OLD.display_order, CHAR), CONVERT(NEW.display_order, CHAR), NEW.id_change_set - WHERE NOT (OLD.display_order <=> NEW.display_order) - ; -END // -DELIMITER ;; - -INSERT INTO Shop_Variation ( - display_order, id_type, code, name -) -VALUES - (1, 1, 'RED', 'Red') -; - -SELECT * FROM Shop_Variation_Type; -SELECT * FROM Shop_Variation_Type_Audit; - - - -# Product Variation Link -CREATE TABLE Shop_Product_Variation_Link ( - id_link INT NOT NULL AUTO_INCREMENT PRIMARY KEY, - id_product INT, - CONSTRAINT FK_Shop_Product_Variation_Link_id_product - FOREIGN KEY (id_product) - REFERENCES Shop_Product(id_product) - ON UPDATE RESTRICT, - id_variation INT, - CONSTRAINT FK_Shop_Product_Variation_Link_id_variation - FOREIGN KEY (id_variation) - REFERENCES Shop_Variation(id_variation) - ON UPDATE RESTRICT, - active BIT NOT NULL DEFAULT 1, - display_order INT NOT NULL, - created_on DATETIME, - created_by INT, - id_change_set INT, - CONSTRAINT FK_Shop_Product_Variation_Link_id_change_set - FOREIGN KEY (id_change_set) - REFERENCES Shop_Product_Change_Set(id_change_set) -); - -DELIMITER // -CREATE TRIGGER before_insert_Shop_Product_Variation_Link -BEFORE INSERT ON Shop_Product_Variation_Link -FOR EACH ROW -BEGIN - IF NEW.created_on <=> NULL THEN - SET NEW.created_on := IFNULL(NEW.created_on, NOW()); - END IF; - IF NEW.created_by <=> NULL THEN - SET NEW.created_by := IFNULL(NEW.created_by, IFNULL((SELECT id_user FROM Shop_User WHERE firstname = CURRENT_USER()), -1)); - END IF; -END // -DELIMITER ;; - -CREATE TABLE Shop_Product_Variation_Link_Audit ( - id_audit INT NOT NULL AUTO_INCREMENT PRIMARY KEY, - id_link INT NOT NULL, - CONSTRAINT FK_Shop_Product_Variation_Link_Audit_id_link - FOREIGN KEY (id_link) - REFERENCES Shop_Product_Variation_Link(id_link) - ON UPDATE RESTRICT, - name_field VARCHAR(50), - value_prev VARCHAR(500), - value_new VARCHAR(500), - id_change_set INT NOT NULL, - CONSTRAINT FK_Shop_Product_Variation_Link_Audit_id_change_set - FOREIGN KEY (id_change_set) - REFERENCES Shop_Product_Change_Set(id_change_set) - ON UPDATE RESTRICT -); - -DELIMITER // -CREATE TRIGGER before_update_Shop_Product_Variation_Link -BEFORE UPDATE ON Shop_Product_Variation_Link -FOR EACH ROW -BEGIN - INSERT INTO Shop_Product_Variation_Link_Audit ( - id_link, - name_field, - value_prev, - value_new, - id_change_set - ) - # Changed id_product - SELECT NEW.id_link, 'id_product', OLD.id_product, NEW.id_product, NEW.id_change_set - WHERE NOT OLD.id_product <=> NEW.id_product - UNION - # Changed id_variation - SELECT NEW.id_link, 'id_variation', OLD.id_variation, NEW.id_variation, NEW.id_change_set - WHERE NOT OLD.id_variation <=> NEW.id_variation - UNION - # Changed active - SELECT NEW.id_link, 'active', CONVERT(CONVERT(OLD.active, SIGNED), CHAR), CONVERT(CONVERT(NEW.active, SIGNED), CHAR), NEW.id_change_set - WHERE NOT (OLD.active <=> NEW.active) - UNION - # Changed display_order - SELECT NEW.id_link, 'display_order', CONVERT(OLD.display_order, CHAR), CONVERT(NEW.display_order, CHAR), NEW.id_change_set - WHERE NOT (OLD.display_order <=> NEW.display_order) - ; -END // -DELIMITER ;; - -INSERT INTO Shop_Product_Variation_Link ( - display_order, id_product, id_variation -) -VALUES - (1, 1, 1) -; - -SELECT * FROM Shop_Product_Variation_Link; -SELECT * FROM Shop_Product_Variation_Link_Audit; - - - -# Image Types -CREATE TABLE Shop_Image_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_Image_Type_id_change_set - FOREIGN KEY (id_change_set) - REFERENCES Shop_Product_Change_Set(id_change_set) -); - -DELIMITER // -CREATE TRIGGER before_insert_Shop_Image_Type -BEFORE INSERT ON Shop_Image_Type -FOR EACH ROW -BEGIN - SET NEW.created_on := IFNULL(NEW.created_on, NOW()); - SET NEW.created_by := IFNULL(NEW.created_by, IFNULL((SELECT id_user FROM Shop_User WHERE firstname = CURRENT_USER()), -1)); -END // -DELIMITER ;; - -CREATE TABLE Shop_Image_Type_Audit ( - id_audit INT NOT NULL AUTO_INCREMENT PRIMARY KEY, - id_type INT NOT NULL, - CONSTRAINT FK_Shop_Image_Type_Audit_id_type - FOREIGN KEY (id_type) - REFERENCES Shop_Image_Type(id_type) - ON UPDATE RESTRICT, - name_field VARCHAR(50), - value_prev VARCHAR(500), - value_new VARCHAR(500), - id_change_set INT NOT NULL, - CONSTRAINT FK_Shop_Image_Type_Audit_id_change_set - FOREIGN KEY (id_change_set) - REFERENCES Shop_Product_Change_Set(id_change_set) -); - -DELIMITER // -CREATE TRIGGER before_update_Shop_Image_Type -BEFORE UPDATE ON Shop_Image_Type -FOR EACH ROW -BEGIN - INSERT INTO Shop_Image_Type_Audit ( - id_type, - name_field, - value_prev, - value_new, - id_change_set - ) - # Changed code - SELECT NEW.id_type, 'code', OLD.code, NEW.code, NEW.id_change_set - WHERE NOT OLD.code <=> NEW.code - UNION - # Changed name - SELECT NEW.id_type, 'name', OLD.name, NEW.name, NEW.id_change_set - WHERE NOT OLD.name <=> NEW.name - UNION - # Changed name_plural - SELECT NEW.id_type, 'name_plural', OLD.name_plural, NEW.name_plural, NEW.id_change_set - WHERE NOT OLD.name_plural <=> NEW.name_plural - UNION - # Changed active - SELECT NEW.id_type, 'active', CONVERT(CONVERT(OLD.active, SIGNED), CHAR), CONVERT(CONVERT(NEW.active, SIGNED), CHAR), NEW.id_change_set - WHERE NOT (OLD.active <=> NEW.active) - UNION - # Changed display_order - SELECT NEW.id_type, 'display_order', CONVERT(OLD.display_order, CHAR), CONVERT(NEW.display_order, CHAR), NEW.id_change_set - WHERE NOT (OLD.display_order <=> NEW.display_order) - ; -END // -DELIMITER ;; - -INSERT INTO Shop_Image_Type ( - display_order, code, name, name_plural -) -VALUES - (1, 'FULL', 'Full Quality Image', 'Full Quality Images'), - (1, 'LOW', 'Low Quality Image', 'Low Quality Images'), - (1, 'THUMBNAIL', 'Thumbnail Image', 'Thumbnail Images') -; - -SELECT * FROM Shop_Image_Type; -SELECT * FROM Shop_Image_Type_Audit; - - - -# Images -CREATE TABLE Shop_Image ( - id_image INT NOT NULL AUTO_INCREMENT PRIMARY KEY, - id_type INT NOT NULL, - CONSTRAINT FK_Shop_Image_id_type - FOREIGN KEY (id_type) - REFERENCES Shop_Image_Type(id_type), - id_product INT NOT NULL, - CONSTRAINT FK_Shop_Image_id_product - FOREIGN KEY (id_product) - REFERENCES Shop_Product(id_product), - url VARCHAR(255), - active BIT NOT NULL DEFAULT 1, - display_order INT NOT NULL, - created_on DATETIME, - created_by INT, - id_change_set INT, - CONSTRAINT FK_Shop_Image_id_change_set - FOREIGN KEY (id_change_set) - REFERENCES Shop_Product_Change_Set(id_change_set) -); - -DELIMITER // -CREATE TRIGGER before_insert_Shop_Image -BEFORE INSERT ON Shop_Image -FOR EACH ROW -BEGIN - SET NEW.created_on := IFNULL(NEW.created_on, NOW()); - SET NEW.created_by := IFNULL(NEW.created_by, IFNULL((SELECT id_user FROM Shop_User WHERE firstname = CURRENT_USER()), -1)); -END // -DELIMITER ;; - -CREATE TABLE Shop_Image_Audit ( - id_audit INT NOT NULL AUTO_INCREMENT PRIMARY KEY, - id_image INT NOT NULL, - CONSTRAINT FK_Shop_Image_Audit_id_image - FOREIGN KEY (id_image) - REFERENCES Shop_Image(id_image), - name_field VARCHAR(50), - value_prev VARCHAR(500), - value_new VARCHAR(500), - id_change_set INT NOT NULL, - CONSTRAINT FK_Shop_Image_Audit_id_change_set - FOREIGN KEY (id_change_set) - REFERENCES Shop_Product_Change_Set(id_change_set) -); - -DELIMITER // -CREATE TRIGGER before_update_Shop_Image -BEFORE UPDATE ON Shop_Image -FOR EACH ROW -BEGIN - INSERT INTO Shop_Image_Audit ( - id_image, - name_field, - value_prev, - value_new, - id_change_set - ) - # Changed id_type - SELECT NEW.id_image, 'id_type', CONVERT(OLD.id_type, CHAR), CONVERT(NEW.id_type, CHAR), NEW.id_change_set - WHERE NOT OLD.id_type <=> NEW.id_type - UNION - # Changed id_product - SELECT NEW.id_image, 'id_product', CONVERT(OLD.id_product, CHAR), CONVERT(NEW.id_product, CHAR), NEW.id_change_set - WHERE NOT OLD.id_product <=> NEW.id_product - UNION - # Changed url - SELECT NEW.id_image, 'url', OLD.url, NEW.url, NEW.id_change_set - WHERE NOT OLD.url <=> NEW.url - UNION - # Changed active - SELECT NEW.id_image, 'active', CONVERT(CONVERT(OLD.active, SIGNED), CHAR), CONVERT(CONVERT(NEW.active, SIGNED), CHAR), NEW.id_change_set - WHERE NOT (OLD.active <=> NEW.active) - UNION - # Changed display_order - SELECT NEW.id_image, 'display_order', CONVERT(OLD.display_order, CHAR), CONVERT(NEW.display_order, CHAR), NEW.id_change_set - WHERE NOT (OLD.display_order <=> NEW.display_order) - ; -END // -DELIMITER ;; - -INSERT INTO Shop_Image ( - display_order, id_product, id_type, url -) -VALUES - (1, 1, 1, 'www.porn.co.uk') -; - -SELECT * FROM Shop_Image; -SELECT * FROM Shop_Image_Audit; - - -/* -# Product Image Link -CREATE TABLE Shop_Product_Image_Link ( - id_link INT NOT NULL AUTO_INCREMENT PRIMARY KEY, - id_product INT, - CONSTRAINT FK_Shop_Product_Image_Link_id_product - FOREIGN KEY (id_product) - REFERENCES Shop_Product(id_product) - ON UPDATE RESTRICT, - id_image INT, - CONSTRAINT FK_Shop_Product_Image_Link_id_image - FOREIGN KEY (id_image) - REFERENCES Shop_Image(id_image) - ON UPDATE RESTRICT, - active BIT NOT NULL DEFAULT 1, - created_on DATETIME, - created_by INT, - id_change_set INT, - CONSTRAINT FK_Shop_Product_Image_Link_id_change_set - FOREIGN KEY (id_change_set) - REFERENCES Shop_Product_Change_Set(id_change_set) -); - -DELIMITER // -CREATE TRIGGER before_insert_Shop_Product_Image_Link -BEFORE INSERT ON Shop_Product_Image_Link -FOR EACH ROW -BEGIN - IF NEW.created_on <=> NULL THEN - SET NEW.created_on := IFNULL(NEW.created_on, NOW()); - END IF; - IF NEW.created_by <=> NULL THEN - SET NEW.created_by := IFNULL(NEW.created_by, IFNULL((SELECT id_user FROM Shop_User WHERE firstname = CURRENT_USER()), -1)); - END IF; -END // -DELIMITER ;; - -CREATE TABLE Shop_Product_Image_Link_Audit ( - id_audit INT NOT NULL AUTO_INCREMENT PRIMARY KEY, - id_link INT NOT NULL, - CONSTRAINT FK_Shop_Product_Image_Link_Audit_id_link - FOREIGN KEY (id_link) - REFERENCES Shop_Product_Image_Link(id_link) - ON UPDATE RESTRICT, - name_field VARCHAR(50), - value_prev VARCHAR(500), - value_new VARCHAR(500), - id_change_set INT NOT NULL, - CONSTRAINT FK_Shop_Product_Image_Link_Audit_id_change_set - FOREIGN KEY (id_change_set) - REFERENCES Shop_Product_Change_Set(id_change_set) - ON UPDATE RESTRICT -); - -DELIMITER // -CREATE TRIGGER before_update_Shop_Product_Image_Link -BEFORE UPDATE ON Shop_Product_Image_Link -FOR EACH ROW -BEGIN - INSERT INTO Shop_Product_Image_Link_Audit ( - id_link, - name_field, - value_prev, - value_new, - id_change_set - ) - VALUES ( - ( # Changed id_product - SELECT NEW.id_link, 'id_product', OLD.id_product, NEW.id_product, NEW.id_change_set - WHERE NOT OLD.id_product <=> NEW.id_product - ), - ( # Changed id_variation - SELECT NEW.id_link, 'id_image', OLD.id_image, NEW.id_image, NEW.id_change_set - WHERE NOT OLD.id_image <=> NEW.id_image - ), - ( # Changed active - SELECT NEW.id_link, 'active', OLD.active, NEW.active, NEW.id_change_set - WHERE NOT OLD.active <=> NEW.active - ) - ); -END // -DELIMITER ;; - -INSERT INTO Shop_Product_Image_Link ( - id_product, id_image -) -VALUES - (1, 1) -; - -SELECT * FROM Shop_Product_Image_Link; -SELECT * FROM Shop_Product_Image_Link_Audit; -*/ - - -# Delivery Option Types -CREATE TABLE Shop_Delivery_Option_Type ( - id_type INT NOT NULL AUTO_INCREMENT PRIMARY KEY, - code VARCHAR(50) NOT NULL, - name VARCHAR(100) NOT NULL, - latency_delivery_min INT NOT NULL, - latency_delivery_max INT NOT NULL, - quantity_min INT NOT NULL, - quantity_max INT NOT NULL, - active BIT NOT NULL DEFAULT 1, - display_order INT NOT NULL, - created_on DATETIME, - created_by INT, - id_change_set INT, - CONSTRAINT FK_Shop_Delivery_Option_Type_id_change_set - FOREIGN KEY (id_change_set) - REFERENCES Shop_Product_Change_Set(id_change_set) -); - -DELIMITER // -CREATE TRIGGER before_insert_Shop_Delivery_Option_Type -BEFORE INSERT ON Shop_Delivery_Option_Type -FOR EACH ROW -BEGIN - SET NEW.created_on := IFNULL(NEW.created_on, NOW()); - SET NEW.created_by := IFNULL(NEW.created_by, IFNULL((SELECT id_user FROM Shop_User WHERE firstname = CURRENT_USER()), -1)); -END // -DELIMITER ;; - -CREATE TABLE Shop_Delivery_Option_Type_Audit ( - id_audit INT NOT NULL AUTO_INCREMENT PRIMARY KEY, - id_type INT NOT NULL, - CONSTRAINT FK_Shop_Delivery_Option_Type_Audit_id_type - FOREIGN KEY (id_type) - REFERENCES Shop_Delivery_Option_Type(id_type) - ON UPDATE RESTRICT, - name_field VARCHAR(50), - value_prev VARCHAR(500), - value_new VARCHAR(500), - id_change_set INT NOT NULL, - CONSTRAINT FK_Shop_Delivery_Option_Type_Audit_id_change_set - FOREIGN KEY (id_change_set) - REFERENCES Shop_Product_Change_Set(id_change_set) -); - -DELIMITER // -CREATE TRIGGER before_update_Shop_Delivery_Option_Type -BEFORE UPDATE ON Shop_Delivery_Option_Type -FOR EACH ROW -BEGIN - INSERT INTO Shop_Delivery_Option_Type_Audit ( - id_type, - name_field, - value_prev, - value_new, - id_change_set - ) - # Changed code - SELECT NEW.id_type, 'code', OLD.code, NEW.code, NEW.id_change_set - WHERE NOT OLD.code <=> NEW.code - UNION - # Changed name - SELECT NEW.id_type, 'name', OLD.name, NEW.name, NEW.id_change_set - WHERE NOT OLD.name <=> NEW.name - UNION - # Changed latency_delivery_min - SELECT NEW.id_type, 'latency_delivery_min', CONVERT(OLD.latency_delivery_min, CHAR), CONVERT(NEW.latency_delivery_min, CHAR), NEW.id_change_set - WHERE NOT OLD.latency_delivery_min <=> NEW.latency_delivery_min - UNION - # Changed latency_delivery_max - SELECT NEW.id_type, 'latency_delivery_max', CONVERT(OLD.latency_delivery_max, CHAR), CONVERT(NEW.latency_delivery_max, CHAR), NEW.id_change_set - WHERE NOT OLD.latency_delivery_max <=> NEW.latency_delivery_max - UNION - # Changed quantity_min - SELECT NEW.id_type, 'quantity_min', CONVERT(OLD.quantity_min, CHAR), CONVERT(NEW.quantity_min, CHAR), NEW.id_change_set - WHERE NOT OLD.quantity_min <=> NEW.quantity_min - UNION - # Changed quantity_max - SELECT NEW.id_type, 'quantity_max', CONVERT(OLD.quantity_max, CHAR), CONVERT(NEW.quantity_max, CHAR), NEW.id_change_set - WHERE NOT OLD.quantity_max <=> NEW.quantity_max - UNION - # Changed active - SELECT NEW.id_type, 'active', CONVERT(OLD.active, CHAR), CONVERT(NEW.active, CHAR), NEW.id_change_set - WHERE NOT OLD.active <=> NEW.active - UNION - # Changed display_order - SELECT NEW.id_type, 'display_order', CONVERT(OLD.display_order, CHAR), CONVERT(NEW.display_order, CHAR), NEW.id_change_set - WHERE NOT OLD.display_order <=> NEW.display_order - ; -END // -DELIMITER ;; - -INSERT INTO Shop_Delivery_Option_Type ( - display_order, code, name, latency_delivery_min, latency_delivery_max, quantity_min, quantity_max -) -VALUES - (1, 'COLLECT', 'Collection', 0, 0, 0, 1), - (2, 'SIGNED_1', 'First Class Signed-For', 2, 4, 0, 1) -; - -SELECT * FROM Shop_Delivery_Option_Type; -SELECT * FROM Shop_Delivery_Option_Type_Audit; - - - -# Delivery Option -CREATE TABLE Shop_Delivery_Option ( - id_option INT NOT NULL AUTO_INCREMENT PRIMARY KEY, - id_product INT, - CONSTRAINT FK_Shop_Delivery_Option_id_product - FOREIGN KEY (id_product) - REFERENCES Shop_Product(id_product) - ON UPDATE RESTRICT, - id_delivery_type INT, - CONSTRAINT FK_Shop_Delivery_Option_id_delivery_type - FOREIGN KEY (id_delivery_type) - REFERENCES Shop_Delivery_Option_Type(id_type) - ON UPDATE RESTRICT, - price_GBP FLOAT NOT NULL, - active BIT NOT NULL DEFAULT 1, - created_on DATETIME, - created_by INT, - id_change_set INT, - CONSTRAINT FK_Shop_Delivery_Option_id_change_set - FOREIGN KEY (id_change_set) - REFERENCES Shop_Product_Change_Set(id_change_set) -); - -DELIMITER // -CREATE TRIGGER before_insert_Shop_Delivery_Option -BEFORE INSERT ON Shop_Delivery_Option -FOR EACH ROW -BEGIN - IF NEW.created_on <=> NULL THEN - SET NEW.created_on := IFNULL(NEW.created_on, NOW()); - END IF; - IF NEW.created_by <=> NULL THEN - SET NEW.created_by := IFNULL(NEW.created_by, IFNULL((SELECT id_user FROM Shop_User WHERE firstname = CURRENT_USER()), -1)); - END IF; -END // -DELIMITER ;; - -CREATE TABLE Shop_Delivery_Option_Audit ( - id_audit INT NOT NULL AUTO_INCREMENT PRIMARY KEY, - id_option INT NOT NULL, - CONSTRAINT FK_Shop_Delivery_Option_Audit_id_option - FOREIGN KEY (id_option) - REFERENCES Shop_Delivery_Option(id_option) - ON UPDATE RESTRICT, - name_field VARCHAR(50), - value_prev VARCHAR(500), - value_new VARCHAR(500), - id_change_set INT NOT NULL, - CONSTRAINT FK_Shop_Delivery_Option_Audit_id_change_set - FOREIGN KEY (id_change_set) - REFERENCES Shop_Product_Change_Set(id_change_set) - ON UPDATE RESTRICT -); - -DELIMITER // -CREATE TRIGGER before_update_Shop_Delivery_Option -BEFORE UPDATE ON Shop_Delivery_Option -FOR EACH ROW -BEGIN - INSERT INTO Shop_Delivery_Option_Audit ( - id_option, - name_field, - value_prev, - value_new, - id_change_set - ) - # Changed id_product - SELECT NEW.id_option, 'id_product', CONVERT(OLD.id_product, CHAR), CONVERT(NEW.id_product, CHAR), NEW.id_change_set - WHERE NOT OLD.id_product <=> NEW.id_product - UNION - # Changed id_delivery_type - SELECT NEW.id_option, 'id_delivery_type', CONVERT(OLD.id_delivery_type, CHAR), CONVERT(NEW.id_delivery_type, CHAR), NEW.id_change_set - WHERE NOT OLD.id_delivery_type <=> NEW.id_delivery_type - UNION - # Changed price_GBP - SELECT NEW.id_option, 'price_GBP', CONVERT(OLD.price_GBP, CHAR), CONVERT(NEW.price_GBP, CHAR), NEW.id_change_set - WHERE NOT OLD.price_GBP <=> NEW.price_GBP - UNION - # Changed active - SELECT NEW.id_option, 'active', CONVERT(CONVERT(OLD.active, SIGNED), CHAR), CONVERT(CONVERT(NEW.active, SIGNED), CHAR), NEW.id_change_set - WHERE NOT (OLD.active <=> NEW.active) - ; -END // -DELIMITER ;; - -INSERT INTO Shop_Delivery_Option ( - id_product, id_delivery_type, price_GBP -) -VALUES - (1, 1, 5) -; - -SELECT * FROM Shop_Delivery_Option; -SELECT * FROM Shop_Delivery_Option_Audit; - - - -# Delivery Regions -CREATE TABLE Shop_Delivery_Region ( - id_region INT NOT NULL AUTO_INCREMENT PRIMARY KEY, - code VARCHAR(50) NOT NULL, - name VARCHAR(200) NOT NULL, - active BIT NOT NULL DEFAULT 1, - display_order INT NOT NULL, - created_on DATETIME, - created_by INT, - id_change_set INT, - CONSTRAINT FK_Shop_Delivery_Region_id_change_set - FOREIGN KEY (id_change_set) - REFERENCES Shop_Product_Change_Set(id_change_set) -); - -DELIMITER // -CREATE TRIGGER before_insert_Shop_Delivery_Region -BEFORE INSERT ON Shop_Delivery_Region -FOR EACH ROW -BEGIN - SET NEW.created_on := IFNULL(NEW.created_on, NOW()); - SET NEW.created_by := IFNULL(NEW.created_by, IFNULL((SELECT id_user FROM Shop_User WHERE firstname = CURRENT_USER()), -1)); -END // -DELIMITER ;; - -CREATE TABLE Shop_Delivery_Region_Audit ( - id_audit INT NOT NULL AUTO_INCREMENT PRIMARY KEY, - id_region INT NOT NULL, - CONSTRAINT FK_Shop_Delivery_Region_Audit_id_region - FOREIGN KEY (id_region) - REFERENCES Shop_Delivery_Region(id_region) - ON UPDATE RESTRICT, - name_field VARCHAR(50), - value_prev VARCHAR(500), - value_new VARCHAR(500), - id_change_set INT NOT NULL, - CONSTRAINT FK_Shop_Delivery_Region_Audit_id_change_set - FOREIGN KEY (id_change_set) - REFERENCES Shop_Product_Change_Set(id_change_set) -); - -DELIMITER // -CREATE TRIGGER before_update_Shop_Delivery_Region -BEFORE UPDATE ON Shop_Delivery_Region -FOR EACH ROW -BEGIN - INSERT INTO Shop_Delivery_Region_Audit ( - id_region, - name_field, - value_prev, - value_new, - id_change_set - ) - # Changed code - SELECT NEW.id_region, 'code', OLD.code, NEW.code, NEW.id_change_set - WHERE NOT OLD.code <=> NEW.code - UNION - # Changed name - SELECT NEW.id_region, 'name', OLD.name, NEW.name, NEW.id_change_set - WHERE NOT OLD.name <=> NEW.name - UNION - # Changed active - SELECT NEW.id_region, 'active', CONVERT(OLD.active, CHAR), CONVERT(NEW.active, CHAR), NEW.id_change_set - WHERE NOT OLD.active <=> NEW.active - UNION - # Changed display_order - SELECT NEW.id_region, 'display_order', CONVERT(OLD.display_order, CHAR), CONVERT(NEW.display_order, CHAR), NEW.id_change_set - WHERE NOT OLD.display_order <=> NEW.display_order - ; -END // -DELIMITER ;; - -INSERT INTO Shop_Delivery_Region ( - display_order, code, name -) -VALUES - (1, 'UK', 'United Kingdom') -; - -SELECT * FROM Shop_Delivery_Region; -SELECT * FROM Shop_Delivery_Region_Audit; - - - -# Product Delivery Option Link -CREATE TABLE Shop_Product_Delivery_Region_Link ( - id_link INT NOT NULL AUTO_INCREMENT PRIMARY KEY, - id_product INT NOT NULL, - CONSTRAINT FK_Shop_Product_Delivery_Region_Link_id_product - FOREIGN KEY (id_product) - REFERENCES Shop_Product(id_product) - ON UPDATE RESTRICT, - id_region INT NOT NULL, - CONSTRAINT FK_Shop_Product_Delivery_Region_Link_id_region - FOREIGN KEY (id_region) - REFERENCES Shop_Delivery_Region(id_region) - ON UPDATE RESTRICT, - active BIT NOT NULL DEFAULT 1, - created_on DATETIME, - created_by INT, - id_change_set INT, - CONSTRAINT FK_Shop_Product_Delivery_Region_Link_id_change_set - FOREIGN KEY (id_change_set) - REFERENCES Shop_Product_Change_Set(id_change_set) -); - -DELIMITER // -CREATE TRIGGER before_insert_Shop_Product_Delivery_Region_Link -BEFORE INSERT ON Shop_Product_Delivery_Region_Link -FOR EACH ROW -BEGIN - IF NEW.created_on <=> NULL THEN - SET NEW.created_on := IFNULL(NEW.created_on, NOW()); - END IF; - IF NEW.created_by <=> NULL THEN - SET NEW.created_by := IFNULL(NEW.created_by, IFNULL((SELECT id_user FROM Shop_User WHERE firstname = CURRENT_USER()), -1)); - END IF; -END // -DELIMITER ;; - -CREATE TABLE Shop_Product_Delivery_Region_Link_Audit ( - id_audit INT NOT NULL AUTO_INCREMENT PRIMARY KEY, - id_link INT NOT NULL, - CONSTRAINT FK_Shop_Product_Delivery_Region_Link_Audit_id_link - FOREIGN KEY (id_link) - REFERENCES Shop_Product_Delivery_Region_Link(id_link) - ON UPDATE RESTRICT, - name_field VARCHAR(50), - value_prev VARCHAR(500), - value_new VARCHAR(500), - id_change_set INT NOT NULL, - CONSTRAINT FK_Shop_Product_Delivery_Region_Link_Audit_id_change_set - FOREIGN KEY (id_change_set) - REFERENCES Shop_Product_Change_Set(id_change_set) - ON UPDATE RESTRICT -); - -DELIMITER // -CREATE TRIGGER before_update_Shop_Product_Delivery_Region_Link -BEFORE UPDATE ON Shop_Product_Delivery_Region_Link -FOR EACH ROW -BEGIN - INSERT INTO Shop_Product_Delivery_Region_Link_Audit ( - id_link, - name_field, - value_prev, - value_new, - id_change_set - ) - # Changed id_product - SELECT NEW.id_link, 'id_product', CONVERT(OLD.id_product, CHAR), CONVERT(NEW.id_product, CHAR), NEW.id_change_set - WHERE NOT OLD.id_product <=> NEW.id_product - UNION - # Changed id_region - SELECT NEW.id_link, 'id_region', CONVERT(OLD.id_region, CHAR), CONVERT(NEW.id_region, CHAR), NEW.id_change_set - WHERE NOT OLD.id_region <=> NEW.id_region - UNION - # Changed active - SELECT NEW.id_link, 'active', CONVERT(CONVERT(OLD.active, SIGNED), CHAR), CONVERT(CONVERT(NEW.active, SIGNED), CHAR), NEW.id_change_set - WHERE NOT (OLD.active <=> NEW.active) - ; -END // -DELIMITER ;; - -INSERT INTO Shop_Product_Delivery_Region_Link ( - id_product, id_region -) -VALUES - (1, 1) -; - -SELECT * FROM Shop_Product_Delivery_Region_Link; -SELECT * FROM Shop_Product_Delivery_Region_Link_Audit; diff --git a/static/MySQL/deprecated/108_tbl_Shop_Recurrence_Interval.sql b/static/MySQL/deprecated/108_tbl_Shop_Recurrence_Interval.sql deleted file mode 100644 index 1a8341db..00000000 --- a/static/MySQL/deprecated/108_tbl_Shop_Recurrence_Interval.sql +++ /dev/null @@ -1,20 +0,0 @@ - -# Recurrence Interval - - - -SELECT CONCAT('WARNING: Table ', TABLE_NAME, ' already exists.') AS msg_warning FROM INFORMATION_SCHEMA.TABLES WHERE TABLE_NAME = 'Shop_Interval_Recurrence'; - -CREATE TABLE IF NOT EXISTS Shop_Interval_Recurrence ( - id_interval INT NOT NULL AUTO_INCREMENT PRIMARY KEY, - code VARCHAR(50), - name VARCHAR(255), - name_plural VARCHAR(256), - active BIT NOT NULL DEFAULT 1, - created_on DATETIME, - created_by INT, - id_change_set INT, - CONSTRAINT FK_Shop_Interval_Recurrence_id_change_set - FOREIGN KEY (id_change_set) - REFERENCES Shop_Product_Change_Set(id_change_set) -); diff --git a/static/MySQL/deprecated/109_tbl_Shop_Recurrence_Interval_Audit.sql b/static/MySQL/deprecated/109_tbl_Shop_Recurrence_Interval_Audit.sql deleted file mode 100644 index d84813f4..00000000 --- a/static/MySQL/deprecated/109_tbl_Shop_Recurrence_Interval_Audit.sql +++ /dev/null @@ -1,22 +0,0 @@ - -# Recurrence Interval Audits - - - -SELECT CONCAT('WARNING: Table ', TABLE_NAME, ' already exists.') AS msg_warning FROM INFORMATION_SCHEMA.TABLES WHERE TABLE_NAME = 'Shop_Interval_Recurrence_Audit'; - -CREATE TABLE IF NOT EXISTS Shop_Interval_Recurrence_Audit ( - id_audit INT NOT NULL AUTO_INCREMENT PRIMARY KEY, - id_interval INT NOT NULL, - CONSTRAINT FK_Shop_Interval_Recurrence_Audit_id_interval - FOREIGN KEY (id_interval) - REFERENCES Shop_Interval_Recurrence(id_interval) - ON UPDATE RESTRICT, - name_field VARCHAR(50), - value_prev VARCHAR(256), - value_new VARCHAR(256), - id_change_set INT NOT NULL, - CONSTRAINT FK_Shop_Interval_Recurrence_Audit_id_change_set - FOREIGN KEY (id_change_set) - REFERENCES Shop_Product_Change_Set(id_change_set) -); diff --git a/static/MySQL/deprecated/113.1_tbl_Shop_Product_Variation_Type_Link.sql b/static/MySQL/deprecated/113.1_tbl_Shop_Product_Variation_Type_Link.sql deleted file mode 100644 index 38293389..00000000 --- a/static/MySQL/deprecated/113.1_tbl_Shop_Product_Variation_Type_Link.sql +++ /dev/null @@ -1,28 +0,0 @@ - -# Product Variation Type Link - - - -SELECT CONCAT('WARNING: Table ', TABLE_NAME, ' already exists.') AS msg_warning FROM INFORMATION_SCHEMA.TABLES WHERE TABLE_NAME = 'Shop_Product_Variation_Type_Link'; - -CREATE TABLE IF NOT EXISTS Shop_Product_Variation_Type_Link ( - id_link INT NOT NULL AUTO_INCREMENT PRIMARY KEY, - id_product INT NOT NULL, - CONSTRAINT FK_Shop_Product_Variation_Type_Link_id_product - FOREIGN KEY (id_product) - REFERENCES Shop_Product(id_product) - ON UPDATE RESTRICT, - id_variation_type INT NOT NULL, - CONSTRAINT FK_Shop_Product_Variation_Type_Link_id_variation_type - FOREIGN KEY (id_variation_type) - REFERENCES Shop_Variation_Type(id_type) - ON UPDATE RESTRICT, - active BIT NOT NULL DEFAULT 1, - display_order INT NOT NULL, - created_on DATETIME, - created_by INT, - id_change_set INT, - CONSTRAINT FK_Shop_Product_Variation_Type_Link_id_change_set - FOREIGN KEY (id_change_set) - REFERENCES Shop_Product_Change_Set(id_change_set) -); diff --git a/static/MySQL/deprecated/113.2_tbl_Shop_Product_Variation_Type_Link_Audit.sql b/static/MySQL/deprecated/113.2_tbl_Shop_Product_Variation_Type_Link_Audit.sql deleted file mode 100644 index 58a7f567..00000000 --- a/static/MySQL/deprecated/113.2_tbl_Shop_Product_Variation_Type_Link_Audit.sql +++ /dev/null @@ -1,23 +0,0 @@ - -# Product Variation Type Link Audits - - - -SELECT CONCAT('WARNING: Table ', TABLE_NAME, ' already exists.') AS msg_warning FROM INFORMATION_SCHEMA.TABLES WHERE TABLE_NAME = 'Shop_Product_Variation_Type_Link_Audit'; - -CREATE TABLE IF NOT EXISTS Shop_Product_Variation_Type_Link_Audit ( - id_audit INT NOT NULL AUTO_INCREMENT PRIMARY KEY, - id_link INT NOT NULL, - CONSTRAINT FK_Shop_Product_Variation_Type_Link_Audit_id_link - FOREIGN KEY (id_link) - REFERENCES Shop_Product_Variation_Type_Link(id_link) - ON UPDATE RESTRICT, - name_field VARCHAR(50), - value_prev VARCHAR(500), - value_new VARCHAR(500), - id_change_set INT NOT NULL, - CONSTRAINT FK_Shop_Product_Variation_Type_Link_Audit_id_change_set - FOREIGN KEY (id_change_set) - REFERENCES Shop_Product_Change_Set(id_change_set) - ON UPDATE RESTRICT -); diff --git a/static/MySQL/deprecated/116_tbl_Shop_Product_Variation_Link.sql b/static/MySQL/deprecated/116_tbl_Shop_Product_Variation_Link.sql deleted file mode 100644 index 7b5ddbc9..00000000 --- a/static/MySQL/deprecated/116_tbl_Shop_Product_Variation_Link.sql +++ /dev/null @@ -1,35 +0,0 @@ - -# Product Variation Link - - - -SELECT CONCAT('WARNING: Table ', TABLE_NAME, ' already exists.') AS msg_warning FROM INFORMATION_SCHEMA.TABLES WHERE TABLE_NAME = 'Shop_Product_Variation_Link'; - -CREATE TABLE IF NOT EXISTS Shop_Product_Variation_Link ( - id_link INT NOT NULL AUTO_INCREMENT PRIMARY KEY, - id_product INT NOT NULL, - CONSTRAINT FK_Shop_Product_Variation_Link_id_product - FOREIGN KEY (id_product) - REFERENCES Shop_Product(id_product) - ON UPDATE RESTRICT, - id_variation INT NOT NULL, - CONSTRAINT FK_Shop_Product_Variation_Link_id_variation - FOREIGN KEY (id_variation) - REFERENCES Shop_Variation(id_variation) - ON UPDATE RESTRICT, - /* - id_product_variation_type_link INT NOT NULL, - CONSTRAINT FK_Shop_Product_Variation_Link_id_product_variation_type_link - FOREIGN KEY (id_product_variation_type_link) - REFERENCES Shop_Product_Variation_Type_Link(id_link) - ON UPDATE RESTRICT, - */ - active BIT NOT NULL DEFAULT 1, - display_order INT NOT NULL, - created_on DATETIME, - created_by INT, - id_change_set INT, - CONSTRAINT FK_Shop_Product_Variation_Link_id_change_set - FOREIGN KEY (id_change_set) - REFERENCES Shop_Product_Change_Set(id_change_set) -); diff --git a/static/MySQL/deprecated/117.0_tbl_Shop_Product_Variation_Link_Audit.sql b/static/MySQL/deprecated/117.0_tbl_Shop_Product_Variation_Link_Audit.sql deleted file mode 100644 index 2791a952..00000000 --- a/static/MySQL/deprecated/117.0_tbl_Shop_Product_Variation_Link_Audit.sql +++ /dev/null @@ -1,23 +0,0 @@ - -# Product Variation Link Audits - - - -SELECT CONCAT('WARNING: Table ', TABLE_NAME, ' already exists.') AS msg_warning FROM INFORMATION_SCHEMA.TABLES WHERE TABLE_NAME = 'Shop_Product_Variation_Link_Audit'; - -CREATE TABLE IF NOT EXISTS Shop_Product_Variation_Link_Audit ( - id_audit INT NOT NULL AUTO_INCREMENT PRIMARY KEY, - id_link INT NOT NULL, - CONSTRAINT FK_Shop_Product_Variation_Link_Audit_id_link - FOREIGN KEY (id_link) - REFERENCES Shop_Product_Variation_Link(id_link) - ON UPDATE RESTRICT, - name_field VARCHAR(50), - value_prev VARCHAR(500), - value_new VARCHAR(500), - id_change_set INT NOT NULL, - CONSTRAINT FK_Shop_Product_Variation_Link_Audit_id_change_set - FOREIGN KEY (id_change_set) - REFERENCES Shop_Product_Change_Set(id_change_set) - ON UPDATE RESTRICT -); diff --git a/static/MySQL/deprecated/128_tbl_Shop_Product_Delivery_Region_Link.sql b/static/MySQL/deprecated/128_tbl_Shop_Product_Delivery_Region_Link.sql deleted file mode 100644 index cc9873b5..00000000 --- a/static/MySQL/deprecated/128_tbl_Shop_Product_Delivery_Region_Link.sql +++ /dev/null @@ -1,32 +0,0 @@ - -# Product Delivery Option Link - - - -SELECT CONCAT('WARNING: Table ', TABLE_NAME, ' already exists.') AS msg_warning FROM INFORMATION_SCHEMA.TABLES WHERE TABLE_NAME = 'Shop_Product_Delivery_Region_Link'; - -CREATE TABLE IF NOT EXISTS Shop_Product_Delivery_Region_Link ( - id_link INT NOT NULL AUTO_INCREMENT PRIMARY KEY, - id_product INT NOT NULL, - CONSTRAINT FK_Shop_Product_Delivery_Region_Link_id_product - FOREIGN KEY (id_product) - REFERENCES Shop_Product(id_product) - ON UPDATE RESTRICT, - id_permutation INT, - CONSTRAINT FK_Shop_Product_Delivery_Region_Link_id_permutation - FOREIGN KEY (id_permutation) - REFERENCES Shop_Product_Permutation(id_permutation) - ON UPDATE RESTRICT, - id_region INT NOT NULL, - CONSTRAINT FK_Shop_Product_Delivery_Region_Link_id_region - FOREIGN KEY (id_region) - REFERENCES Shop_Delivery_Region(id_region) - ON UPDATE RESTRICT, - active BIT NOT NULL DEFAULT 1, - created_on DATETIME, - created_by INT, - id_change_set INT, - CONSTRAINT FK_Shop_Product_Delivery_Region_Link_id_change_set - FOREIGN KEY (id_change_set) - REFERENCES Shop_Product_Change_Set(id_change_set) -); \ No newline at end of file diff --git a/static/MySQL/deprecated/129_tbl_Shop_Product_Delivery_Region_Link_Audit.sql b/static/MySQL/deprecated/129_tbl_Shop_Product_Delivery_Region_Link_Audit.sql deleted file mode 100644 index f552c212..00000000 --- a/static/MySQL/deprecated/129_tbl_Shop_Product_Delivery_Region_Link_Audit.sql +++ /dev/null @@ -1,23 +0,0 @@ - -# Product Delivery Region Link Audits - - - -SELECT CONCAT('WARNING: Table ', TABLE_NAME, ' already exists.') AS msg_warning FROM INFORMATION_SCHEMA.TABLES WHERE TABLE_NAME = 'Shop_Product_Delivery_Region_Link_Audit'; - -CREATE TABLE IF NOT EXISTS Shop_Product_Delivery_Region_Link_Audit ( - id_audit INT NOT NULL AUTO_INCREMENT PRIMARY KEY, - id_link INT NOT NULL, - CONSTRAINT FK_Shop_Product_Delivery_Region_Link_Audit_id_link - FOREIGN KEY (id_link) - REFERENCES Shop_Product_Delivery_Region_Link(id_link) - ON UPDATE RESTRICT, - name_field VARCHAR(50), - value_prev VARCHAR(500), - value_new VARCHAR(500), - id_change_set INT NOT NULL, - CONSTRAINT FK_Shop_Product_Delivery_Region_Link_Audit_id_change_set - FOREIGN KEY (id_change_set) - REFERENCES Shop_Product_Change_Set(id_change_set) - ON UPDATE RESTRICT -); \ No newline at end of file diff --git a/static/MySQL/deprecated/170_ish_tbl_ERP_Order.sql b/static/MySQL/deprecated/170_ish_tbl_ERP_Order.sql deleted file mode 100644 index a3855931..00000000 --- a/static/MySQL/deprecated/170_ish_tbl_ERP_Order.sql +++ /dev/null @@ -1,19 +0,0 @@ - -# ERP Order - - - -SELECT CONCAT('WARNING: Table ', TABLE_NAME, ' already exists.') AS msg_warning FROM INFORMATION_SCHEMA.TABLES WHERE TABLE_NAME = 'ERP_Order'; - -CREATE TABLE IF NOT EXISTS ERP_Order ( - id_order INT NOT NULL AUTO_INCREMENT PRIMARY KEY, - code VARCHAR(50), - name VARCHAR(100), - extension VARCHAR(50), - created_on DATETIME, - created_by INT, - id_customer INT NOT NULL, - CONSTRAINT FK_ERP_Order_id_customer - FOREIGN KEY (id_customer) - REFERENCES ERP_Customer(id_customer) -); diff --git a/static/MySQL/deprecated/171_tbl_Shop_User_Order.sql b/static/MySQL/deprecated/171_tbl_Shop_User_Order.sql deleted file mode 100644 index 081384ec..00000000 --- a/static/MySQL/deprecated/171_tbl_Shop_User_Order.sql +++ /dev/null @@ -1,39 +0,0 @@ - -# User Order - - - -SELECT CONCAT('WARNING: Table ', TABLE_NAME, ' already exists.') AS msg_warning FROM INFORMATION_SCHEMA.TABLES WHERE TABLE_NAME = 'Shop_User_Order'; - -CREATE TABLE IF NOT EXISTS Shop_User_Order ( - id_order INT NOT NULL AUTO_INCREMENT PRIMARY KEY, - id_user INT NOT NULL, - CONSTRAINT FK_Shop_User_Order_id_user - FOREIGN KEY (id_user) - REFERENCES Shop_User(id_user) - ON UPDATE RESTRICT, - value_total FLOAT, - id_order_status INT NOT NULL, - CONSTRAINT FK_Shop_User_Order_id_order_status - FOREIGN KEY (id_order_status) - REFERENCES Shop_User_Order_Status(id_status), - id_checkout_session VARCHAR(200) NOT NULL, - id_currency INT NOT NULL, - CONSTRAINT FK_Shop_User_Order_id_currency - FOREIGN KEY (id_currency) - REFERENCES Shop_Currency(id_currency) - ON UPDATE RESTRICT, - active BIT NOT NULL DEFAULT 1, - created_on DATETIME, - created_by INT, - id_change_set_user INT, - CONSTRAINT FK_Shop_User_Order_id_change_set_user - FOREIGN KEY (id_change_set_user) - REFERENCES Shop_User_Change_Set(id_change_set) - /* - id_change_set_product INT, - CONSTRAINT FK_Shop_User_Basket_id_change_set_product - FOREIGN KEY (id_change_set_product) - REFERENCES Shop_Product_Change_Set(id_change_set) - */ -); diff --git a/static/MySQL/deprecated/172_tbl_Shop_User_Order_Audit.sql b/static/MySQL/deprecated/172_tbl_Shop_User_Order_Audit.sql deleted file mode 100644 index ae9eedd5..00000000 --- a/static/MySQL/deprecated/172_tbl_Shop_User_Order_Audit.sql +++ /dev/null @@ -1,27 +0,0 @@ - -# User Order Audits - - -SELECT CONCAT('WARNING: Table ', TABLE_NAME, ' already exists.') AS msg_warning FROM INFORMATION_SCHEMA.TABLES WHERE TABLE_NAME = 'Shop_User_Order_Audit'; - -CREATE TABLE IF NOT EXISTS Shop_User_Order_Audit ( - id_audit INT NOT NULL AUTO_INCREMENT PRIMARY KEY, - id_order INT NOT NULL, - CONSTRAINT FK_Shop_User_Order_Audit_id_order - FOREIGN KEY (id_order) - REFERENCES Shop_User_Order(id_order) - ON UPDATE RESTRICT, - name_field VARCHAR(50), - value_prev VARCHAR(500), - value_new VARCHAR(500), - id_change_set_user INT, - CONSTRAINT FK_Shop_User_Order_Audit_id_change_set_user - FOREIGN KEY (id_change_set_user) - REFERENCES Shop_User_Change_Set(id_change_set) - /* - id_change_set_product INT, - CONSTRAINT FK_Shop_User_Basket_Audit_id_change_set_product - FOREIGN KEY (id_change_set_product) - REFERENCES Shop_Product_Change_Set(id_change_set) - */ -); diff --git a/static/MySQL/deprecated/173_tbl_Shop_User_Order_Product_Link.sql b/static/MySQL/deprecated/173_tbl_Shop_User_Order_Product_Link.sql deleted file mode 100644 index f2b8c2ed..00000000 --- a/static/MySQL/deprecated/173_tbl_Shop_User_Order_Product_Link.sql +++ /dev/null @@ -1,33 +0,0 @@ - -# User Order Product link - - - -SELECT CONCAT('WARNING: Table ', TABLE_NAME, ' already exists.') AS msg_warning FROM INFORMATION_SCHEMA.TABLES WHERE TABLE_NAME = 'Shop_User_Order_Product_Link'; - -CREATE TABLE IF NOT EXISTS Shop_User_Order_Product_Link ( - id_link INT NOT NULL AUTO_INCREMENT PRIMARY KEY, - id_order INT NOT NULL, - CONSTRAINT FK_Shop_User_Order_Product_Link_id_order - FOREIGN KEY (id_order) - REFERENCES Shop_User_Order(id_order) - ON UPDATE RESTRICT, - id_product INT NOT NULL, - CONSTRAINT FK_Shop_User_Order_Product_Link_id_product - FOREIGN KEY (id_product) - REFERENCES Shop_Product(id_product) - ON UPDATE RESTRICT, - id_permutation INT NULL, - CONSTRAINT FK_Shop_User_Order_Product_Link_id_permutation - FOREIGN KEY (id_permutation) - REFERENCES Shop_Product_Permutation(id_permutation) - ON UPDATE RESTRICT, - quantity FLOAT NOT NULL, - active BIT NOT NULL DEFAULT 1, - created_on DATETIME, - created_by INT, - id_change_set INT, - CONSTRAINT FK_Shop_User_Order_Product_Link_id_change_set - FOREIGN KEY (id_change_set) - REFERENCES Shop_User_Change_Set(id_change_set) -); \ No newline at end of file diff --git a/static/MySQL/deprecated/174_tbl_Shop_User_Order_Product_Link_Audit.sql b/static/MySQL/deprecated/174_tbl_Shop_User_Order_Product_Link_Audit.sql deleted file mode 100644 index 0f1ca26a..00000000 --- a/static/MySQL/deprecated/174_tbl_Shop_User_Order_Product_Link_Audit.sql +++ /dev/null @@ -1,22 +0,0 @@ - -# User Order Product Link Audits - - - -SELECT CONCAT('WARNING: Table ', TABLE_NAME, ' already exists.') AS msg_warning FROM INFORMATION_SCHEMA.TABLES WHERE TABLE_NAME = 'Shop_User_Order_Product_Link_Audit'; - -CREATE TABLE IF NOT EXISTS Shop_User_Order_Product_Link_Audit ( - id_audit INT NOT NULL AUTO_INCREMENT PRIMARY KEY, - id_link INT NOT NULL, - CONSTRAINT FK_Shop_User_Order_Product_Link_Audit_id_link - FOREIGN KEY (id_link) - REFERENCES Shop_User_Order_Product_Link(id_link) - ON UPDATE RESTRICT, - name_field VARCHAR(50), - value_prev VARCHAR(500), - value_new VARCHAR(500), - id_change_set INT NOT NULL, - CONSTRAINT FK_Shop_User_Order_Product_Link_Audit_id_change_set - FOREIGN KEY (id_change_set) - REFERENCES Shop_User_Change_Set(id_change_set) -); diff --git a/static/MySQL/deprecated/308_tri_Shop_Recurrence_Interval.sql b/static/MySQL/deprecated/308_tri_Shop_Recurrence_Interval.sql deleted file mode 100644 index 32f479ae..00000000 --- a/static/MySQL/deprecated/308_tri_Shop_Recurrence_Interval.sql +++ /dev/null @@ -1,56 +0,0 @@ - -# Shop Recurrence Interval - - - - -DROP TRIGGER IF EXISTS before_insert_Shop_Interval_Recurrence; -DROP TRIGGER IF EXISTS before_update_Shop_Interval_Recurrence; - - -DELIMITER // -CREATE TRIGGER before_insert_Shop_Interval_Recurrence -BEFORE INSERT ON Shop_Interval_Recurrence -FOR EACH ROW -BEGIN - SET NEW.created_on := IFNULL(NEW.created_on, NOW()); - SET NEW.created_by := IFNULL(NEW.created_by, IFNULL((SELECT id_user FROM Shop_User WHERE firstname = CURRENT_USER()), -1)); -END // -DELIMITER ;; - - -DELIMITER // -CREATE TRIGGER before_update_Shop_Interval_Recurrence -BEFORE UPDATE ON Shop_Interval_Recurrence -FOR EACH ROW -BEGIN - IF OLD.id_change_set <=> NEW.id_change_set THEN - SIGNAL SQLSTATE '45000' - SET MESSAGE_TEXT = 'New change Set ID must be provided.'; - END IF; - - INSERT INTO Shop_Interval_Recurrence_Audit ( - id_interval, - name_field, - value_prev, - value_new, - id_change_set - ) - # Changed code - SELECT NEW.id_interval, 'code', OLD.code, NEW.code, NEW.id_change_set - WHERE NOT OLD.code <=> NEW.code - UNION - # Changed name - SELECT NEW.id_interval, 'name', OLD.name, NEW.name, NEW.id_change_set - WHERE NOT OLD.name <=> NEW.name - UNION - # Changed name_plural - SELECT NEW.id_interval, 'name_plural', OLD.name_plural, NEW.name_plural, NEW.id_change_set - WHERE NOT OLD.name_plural <=> NEW.name_plural - UNION - # Changed name - SELECT NEW.id_interval, 'active', OLD.active, NEW.active, NEW.id_change_set - WHERE NOT OLD.active <=> NEW.active - ; -END // -DELIMITER ;; \ No newline at end of file diff --git a/static/MySQL/deprecated/313.1_tri_Shop_Product_Variation_Type_Link.sql b/static/MySQL/deprecated/313.1_tri_Shop_Product_Variation_Type_Link.sql deleted file mode 100644 index b5c14ee5..00000000 --- a/static/MySQL/deprecated/313.1_tri_Shop_Product_Variation_Type_Link.sql +++ /dev/null @@ -1,61 +0,0 @@ - -# Shop Product Variation Link - - - -DROP TRIGGER IF EXISTS before_insert_Shop_Product_Variation_Type_Link; -DROP TRIGGER IF EXISTS before_update_Shop_Product_Variation_Type_Link; - - -DELIMITER // -CREATE TRIGGER before_insert_Shop_Product_Variation_Type_Link -BEFORE INSERT ON Shop_Product_Variation_Type_Link -FOR EACH ROW -BEGIN - IF NEW.created_on <=> NULL THEN - SET NEW.created_on := IFNULL(NEW.created_on, NOW()); - END IF; - IF NEW.created_by <=> NULL THEN - SET NEW.created_by := IFNULL(NEW.created_by, IFNULL((SELECT id_user FROM Shop_User WHERE firstname = CURRENT_USER()), -1)); - END IF; -END // -DELIMITER ;; - - -DELIMITER // -CREATE TRIGGER before_update_Shop_Product_Variation_Type_Link -BEFORE UPDATE ON Shop_Product_Variation_Type_Link -FOR EACH ROW -BEGIN - IF OLD.id_change_set <=> NEW.id_change_set THEN - SIGNAL SQLSTATE '45000' - SET MESSAGE_TEXT = 'New change Set ID must be provided.'; - END IF; - - INSERT INTO Shop_Product_Variation_Type_Link_Audit ( - id_link, - name_field, - value_prev, - value_new, - id_change_set - ) - /* - # Changed id_product - SELECT NEW.id_link, 'id_product', OLD.id_product, NEW.id_product, NEW.id_change_set - WHERE NOT OLD.id_product <=> NEW.id_product - UNION - # Changed id_variation - SELECT NEW.id_link, 'id_variation', OLD.id_variation, NEW.id_variation, NEW.id_change_set - WHERE NOT OLD.id_variation <=> NEW.id_variation - UNION - */ - # Changed active - SELECT NEW.id_link, 'active', CONVERT(CONVERT(OLD.active, SIGNED), CHAR), CONVERT(CONVERT(NEW.active, SIGNED), CHAR), NEW.id_change_set - WHERE NOT (OLD.active <=> NEW.active) - UNION - # Changed display_order - SELECT NEW.id_link, 'display_order', CONVERT(OLD.display_order, CHAR), CONVERT(NEW.display_order, CHAR), NEW.id_change_set - WHERE NOT (OLD.display_order <=> NEW.display_order) - ; -END // -DELIMITER ;; \ No newline at end of file diff --git a/static/MySQL/deprecated/316_tri_Shop_Product_Variation_Link.sql b/static/MySQL/deprecated/316_tri_Shop_Product_Variation_Link.sql deleted file mode 100644 index 50dbcb62..00000000 --- a/static/MySQL/deprecated/316_tri_Shop_Product_Variation_Link.sql +++ /dev/null @@ -1,61 +0,0 @@ - -# Shop Product Variation Link - - - -DROP TRIGGER IF EXISTS before_insert_Shop_Product_Variation_Link; -DROP TRIGGER IF EXISTS before_update_Shop_Product_Variation_Link; - - -DELIMITER // -CREATE TRIGGER before_insert_Shop_Product_Variation_Link -BEFORE INSERT ON Shop_Product_Variation_Link -FOR EACH ROW -BEGIN - IF NEW.created_on <=> NULL THEN - SET NEW.created_on := IFNULL(NEW.created_on, NOW()); - END IF; - IF NEW.created_by <=> NULL THEN - SET NEW.created_by := IFNULL(NEW.created_by, IFNULL((SELECT id_user FROM Shop_User WHERE firstname = CURRENT_USER()), -1)); - END IF; -END // -DELIMITER ;; - - -DELIMITER // -CREATE TRIGGER before_update_Shop_Product_Variation_Link -BEFORE UPDATE ON Shop_Product_Variation_Link -FOR EACH ROW -BEGIN - IF OLD.id_change_set <=> NEW.id_change_set THEN - SIGNAL SQLSTATE '45000' - SET MESSAGE_TEXT = 'New change Set ID must be provided.'; - END IF; - - INSERT INTO Shop_Product_Variation_Link_Audit ( - id_link, - name_field, - value_prev, - value_new, - id_change_set - ) - /* - # Changed id_product - SELECT NEW.id_link, 'id_product', OLD.id_product, NEW.id_product, NEW.id_change_set - WHERE NOT OLD.id_product <=> NEW.id_product - UNION - # Changed id_variation - SELECT NEW.id_link, 'id_variation', OLD.id_variation, NEW.id_variation, NEW.id_change_set - WHERE NOT OLD.id_variation <=> NEW.id_variation - UNION - */ - # Changed active - SELECT NEW.id_link, 'active', CONVERT(CONVERT(OLD.active, SIGNED), CHAR), CONVERT(CONVERT(NEW.active, SIGNED), CHAR), NEW.id_change_set - WHERE NOT (OLD.active <=> NEW.active) - UNION - # Changed display_order - SELECT NEW.id_link, 'display_order', CONVERT(OLD.display_order, CHAR), CONVERT(NEW.display_order, CHAR), NEW.id_change_set - WHERE NOT (OLD.display_order <=> NEW.display_order) - ; -END // -DELIMITER ;; \ No newline at end of file diff --git a/static/MySQL/deprecated/322_tri_Shop_Price.sql b/static/MySQL/deprecated/322_tri_Shop_Price.sql deleted file mode 100644 index 277ca4e6..00000000 --- a/static/MySQL/deprecated/322_tri_Shop_Price.sql +++ /dev/null @@ -1,93 +0,0 @@ - -# Shop Product Currency Region Link - - - -DROP TRIGGER IF EXISTS before_insert_Shop_Product_Currency_Region_Link; -DROP TRIGGER IF EXISTS before_update_Shop_Product_Currency_Region_Link; - - -DELIMITER // -CREATE TRIGGER before_insert_Shop_Product_Currency_Region_Link -BEFORE INSERT ON Shop_Product_Currency_Region_Link -FOR EACH ROW -BEGIN - IF NEW.created_on <=> NULL THEN - SET NEW.created_on := IFNULL(NEW.created_on, NOW()); - END IF; - IF NEW.created_by <=> NULL THEN - SET NEW.created_by := IFNULL(NEW.created_by, IFNULL((SELECT id_user FROM Shop_User WHERE firstname = CURRENT_USER()), -1)); - END IF; - /* - SET NEW.price_local = ( - SELECT PP.price_GBP_full * C.factor_from_GBP - FROM Shop_Product_Permutation PP - INNER JOIN Shop_Product P ON PP.id_product = P.id_product - INNER JOIN Shop_Currency C ON NEW.id_currency = C.id_currency - WHERE NEW.id_product = P.id_product - LIMIT 1 - ); - */ -END // -DELIMITER ;; - - -DELIMITER // -CREATE TRIGGER before_update_Shop_Product_Currency_Region_Link -BEFORE UPDATE ON Shop_Product_Currency_Region_Link -FOR EACH ROW -BEGIN - IF OLD.id_change_set <=> NEW.id_change_set THEN - SIGNAL SQLSTATE '45000' - SET MESSAGE_TEXT = 'New change Set ID must be provided.'; - END IF; - - /* - SET NEW.price_local = ( - SELECT P.price_GBP_full * C.factor_from_GBP - FROM Shop_Product P - INNER JOIN Shop_Currency C ON NEW.id_currency = C.id_currency - WHERE NEW.id_product = P.id_product - LIMIT 1 - ); - */ - - INSERT INTO Shop_Product_Currency_Region_Link_Audit ( - id_link, - name_field, - value_prev, - value_new, - id_change_set - ) - /* - # Changed id_product - SELECT NEW.id_link, 'id_product', CONVERT(OLD.id_product, CHAR), CONVERT(NEW.id_product, CHAR), NEW.id_change_set - WHERE NOT OLD.id_product <=> NEW.id_product - UNION - # Changed id_currency - SELECT NEW.id_link, 'id_currency', CONVERT(OLD.id_currency, CHAR), CONVERT(NEW.id_currency, CHAR), NEW.id_change_set - WHERE NOT OLD.id_currency <=> NEW.id_currency - UNION - # Changed price_local - SELECT NEW.id_link, 'price_local', OLD.price_local, NEW.price_local, NEW.id_change_set - WHERE NOT OLD.price_local <=> NEW.price_local - UNION - */ - # Changed price_local_VAT_incl - SELECT NEW.id_link, 'price_local_VAT_incl', OLD.price_local_VAT_incl, NEW.price_local_VAT_incl, NEW.id_change_set - WHERE NOT OLD.price_local_VAT_incl <=> NEW.price_local_VAT_incl - UNION - # Changed price_local_VAT_excl - SELECT NEW.id_link, 'price_local_VAT_excl', OLD.price_local_VAT_excl, NEW.price_local_VAT_excl, NEW.id_change_set - WHERE NOT OLD.price_local_VAT_excl <=> NEW.price_local_VAT_excl - UNION - # Changed id_stripe_price - SELECT NEW.id_link, 'id_stripe_price', OLD.id_stripe_price, NEW.id_stripe_price, NEW.id_change_set - WHERE NOT OLD.id_stripe_price <=> NEW.id_stripe_price - UNION - # Changed active - SELECT NEW.id_link, 'active', CONVERT(CONVERT(OLD.active, SIGNED), CHAR), CONVERT(CONVERT(NEW.active, SIGNED), CHAR), NEW.id_change_set - WHERE NOT (OLD.active <=> NEW.active) - ; -END // -DELIMITER ;; diff --git a/static/MySQL/deprecated/328_tri_Shop_Product_Delivery_Region_Link.sql b/static/MySQL/deprecated/328_tri_Shop_Product_Delivery_Region_Link.sql deleted file mode 100644 index c14e165b..00000000 --- a/static/MySQL/deprecated/328_tri_Shop_Product_Delivery_Region_Link.sql +++ /dev/null @@ -1,57 +0,0 @@ - -# Shop Product Delivery Region Link - - - -DROP TRIGGER IF EXISTS before_insert_Shop_Product_Delivery_Region_Link; -DROP TRIGGER IF EXISTS before_update_Shop_Product_Delivery_Region_Link; - - -DELIMITER // -CREATE TRIGGER before_insert_Shop_Product_Delivery_Region_Link -BEFORE INSERT ON Shop_Product_Delivery_Region_Link -FOR EACH ROW -BEGIN - IF NEW.created_on <=> NULL THEN - SET NEW.created_on := IFNULL(NEW.created_on, NOW()); - END IF; - IF NEW.created_by <=> NULL THEN - SET NEW.created_by := IFNULL(NEW.created_by, IFNULL((SELECT id_user FROM Shop_User WHERE firstname = CURRENT_USER()), -1)); - END IF; -END // -DELIMITER ;; - - -DELIMITER // -CREATE TRIGGER before_update_Shop_Product_Delivery_Region_Link -BEFORE UPDATE ON Shop_Product_Delivery_Region_Link -FOR EACH ROW -BEGIN - IF OLD.id_change_set <=> NEW.id_change_set THEN - SIGNAL SQLSTATE '45000' - SET MESSAGE_TEXT = 'New change Set ID must be provided.'; - END IF; - - INSERT INTO Shop_Product_Delivery_Region_Link_Audit ( - id_link, - name_field, - value_prev, - value_new, - id_change_set - ) - /* - # Changed id_product - SELECT NEW.id_link, 'id_product', CONVERT(OLD.id_product, CHAR), CONVERT(NEW.id_product, CHAR), NEW.id_change_set - WHERE NOT OLD.id_product <=> NEW.id_product - UNION - # Changed id_region - SELECT NEW.id_link, 'id_region', CONVERT(OLD.id_region, CHAR), CONVERT(NEW.id_region, CHAR), NEW.id_change_set - WHERE NOT OLD.id_region <=> NEW.id_region - UNION - */ - # Changed active - SELECT NEW.id_link, 'active', CONVERT(CONVERT(OLD.active, SIGNED), CHAR), CONVERT(CONVERT(NEW.active, SIGNED), CHAR), NEW.id_change_set - WHERE NOT (OLD.active <=> NEW.active) - ; -END // -DELIMITER ;; \ No newline at end of file diff --git a/static/MySQL/deprecated/371_tri_Shop_User_Order.sql b/static/MySQL/deprecated/371_tri_Shop_User_Order.sql deleted file mode 100644 index cbfc2987..00000000 --- a/static/MySQL/deprecated/371_tri_Shop_User_Order.sql +++ /dev/null @@ -1,67 +0,0 @@ - -# Shop Product Variation Link - - - -DROP TRIGGER IF EXISTS before_insert_Shop_User_Order; -DROP TRIGGER IF EXISTS before_update_Shop_User_Order; - - -DELIMITER // -CREATE TRIGGER before_insert_Shop_User_Order -BEFORE INSERT ON Shop_User_Order -FOR EACH ROW -BEGIN - IF NEW.created_on <=> NULL THEN - SET NEW.created_on := IFNULL(NEW.created_on, NOW()); - END IF; - IF NEW.created_by <=> NULL THEN - SET NEW.created_by := IFNULL(NEW.created_by, IFNULL((SELECT id_user FROM Shop_User WHERE firstname = CURRENT_USER()), -1)); - END IF; -END // -DELIMITER ;; - - -DELIMITER // -CREATE TRIGGER before_update_Shop_User_Order -BEFORE UPDATE ON Shop_User_Order -FOR EACH ROW -BEGIN - IF OLD.id_change_set_user <=> NEW.id_change_set_user THEN - SIGNAL SQLSTATE '45000' - SET MESSAGE_TEXT = 'New change Set ID must be provided.'; - END IF; - IF NOT (NEW.id_checkout_session <=> OLD.id_checkout_session) THEN - SIGNAL SQLSTATE '45000' - SET MESSAGE_TEXT = 'Checkout session ID must not change.'; - END IF; - - INSERT INTO Shop_User_Order_Audit ( - id_order, - name_field, - value_prev, - value_new, - id_change_set_user - ) - # Changed id_user - SELECT NEW.id_order, 'id_user', OLD.id_user, NEW.id_user, NEW.id_change_set_user - WHERE NOT OLD.id_user <=> NEW.id_user - UNION - # Changed value_total - SELECT NEW.id_order, 'value_total', CONVERT(OLD.value_total, CHAR), CONVERT(NEW.value_total, CHAR), NEW.id_change_set_user - WHERE NOT (OLD.value_total <=> NEW.value_total) - UNION - # Changed id_order_status - SELECT NEW.id_order, 'id_order_status', CONVERT(OLD.id_order_status, CHAR), CONVERT(NEW.id_order_status, CHAR), NEW.id_change_set_user - WHERE NOT (OLD.id_order_status <=> NEW.id_order_status) - UNION - # Changed id_checkout_session - SELECT NEW.id_order, 'id_checkout_session', OLD.id_checkout_session, NEW.id_checkout_session, NEW.id_change_set_user - WHERE NOT (OLD.id_checkout_session <=> NEW.id_checkout_session) - UNION - # Changed active - SELECT NEW.id_order, 'active', CONVERT(CONVERT(OLD.active, SIGNED), CHAR), CONVERT(CONVERT(NEW.active, SIGNED), CHAR), NEW.id_change_set_user - WHERE NOT (OLD.active <=> NEW.active) - ; -END // -DELIMITER ;; \ No newline at end of file diff --git a/static/MySQL/deprecated/373_tri_Shop_User_Order_Product_Link.sql b/static/MySQL/deprecated/373_tri_Shop_User_Order_Product_Link.sql deleted file mode 100644 index 16a324fd..00000000 --- a/static/MySQL/deprecated/373_tri_Shop_User_Order_Product_Link.sql +++ /dev/null @@ -1,55 +0,0 @@ - -# Shop User Order Product Link - - - -DROP TRIGGER IF EXISTS before_insert_Shop_User_Order_Product_Link; -DROP TRIGGER IF EXISTS before_update_Shop_User_Order_Product_Link; - - -DELIMITER // -CREATE TRIGGER before_insert_Shop_User_Order_Product_Link -BEFORE INSERT ON Shop_User_Order_Product_Link -FOR EACH ROW -BEGIN - IF NEW.created_on <=> NULL THEN - SET NEW.created_on := IFNULL(NEW.created_on, NOW()); - END IF; - IF NEW.created_by <=> NULL THEN - SET NEW.created_by := IFNULL(NEW.created_by, IFNULL((SELECT id_user FROM Shop_User WHERE firstname = CURRENT_USER()), -1)); - END IF; -END // -DELIMITER ;; - - -DELIMITER // -CREATE TRIGGER before_update_Shop_User_Order_Product_Link -BEFORE UPDATE ON Shop_User_Order_Product_Link -FOR EACH ROW -BEGIN - IF OLD.id_change_set <=> NEW.id_change_set THEN - SIGNAL SQLSTATE '45000' - SET MESSAGE_TEXT = 'New change Set ID must be provided.'; - END IF; - - INSERT INTO Shop_User_Order_Product_Link_Audit ( - id_link, - name_field, - value_prev, - value_new, - id_change_set - ) - # Changed id_product - SELECT NEW.id_link, 'active', CONVERT(OLD.id_product, CHAR), CONVERT(NEW.id_product, CHAR), NEW.id_change_set - WHERE NOT (OLD.id_product <=> NEW.id_product) - UNION - # Changed quantity - SELECT NEW.id_link, 'quantity', CONVERT(OLD.quantity, CHAR), CONVERT(NEW.quantity, CHAR), NEW.id_change_set - WHERE NOT (OLD.quantity <=> NEW.quantity) - UNION - # Changed active - SELECT NEW.id_link, 'active', CONVERT(CONVERT(OLD.active, SIGNED), CHAR), CONVERT(CONVERT(NEW.active, SIGNED), CHAR), NEW.id_change_set - WHERE NOT (OLD.active <=> NEW.active) - ; -END // -DELIMITER ;; \ No newline at end of file diff --git a/static/MySQL/deprecated/7000_p_shop_get_many_role_permission.sql b/static/MySQL/deprecated/7000_p_shop_get_many_role_permission.sql deleted file mode 100644 index 19ae066a..00000000 --- a/static/MySQL/deprecated/7000_p_shop_get_many_role_permission.sql +++ /dev/null @@ -1,131 +0,0 @@ - - - -/* -THIS STRUCTURE DOES NOT WORK WITH MYSQL ?? - -CALL p_shop_get_many_role_permission ( - '', - 0, - '', - 0, - 0, - 1, - '', - 0, - 0, - 1 -) - -*/ - - --- Clear previous proc -DROP PROCEDURE IF EXISTS p_shop_get_many_role_permission; -/* -DROP TABLE IF EXISTS tmp_Shop_Image; -DROP TABLE IF EXISTS tmp_Shop_Product; -DROP TABLE IF EXISTS tmp_Shop_Variation; -DROP TABLE IF EXISTS tmp_Shop_Product_Category; -*/ - -DELIMITER // -CREATE PROCEDURE p_shop_get_many_role_permission ( - a_ids_role NVARCHAR(500), - a_get_inactive_roles BIT -) -BEGIN - -- Variable declaration - DECLARE v_has_filter_role BIT; - DECLARE v_priority_view INT; - DECLARE v_priority_edit INT; - DECLARE v_priority_admin INT; - /* - DECLARE v_ids_product_permission VARCHAR(500); - DECLARE v_now DATETIME; - */ - - -- Parse arguments + get default values - IF a_ids_role IS NULL THEN - SET a_ids_role = ''; - ELSE - SET a_ids_role = TRIM(a_ids_role); - END IF; - IF a_get_inactive_roles IS NULL THEN - SET a_get_inactive_roles = 0; - END IF; - - - -- Temporary tables - CREATE TABLE tmp_Permission ( - id_role INT NOT NULL, - CONSTRAINT FK_tmp_User_Permission_id_role - FOREIGN KEY (id_role) - REFERENCES Shop_Role(id_role), - id_permission INT, - CONSTRAINT FK_tmp_User_Permission_id_permission - FOREIGN KEY (id_permission) - REFERENCES Shop_Permission(id_permission), - id_access_level INT, - CONSTRAINT FK_tmp_User_Permission_id_access_level - FOREIGN KEY (id_user) - REFERENCES Shop_Access_Level(id_user), - can_view BIT, - can_edit BIT, - can_admin BIT - ); - - - -- Parse filters - SET a_ids_role = REPLACE(a_ids_role, ',', '|'); - SET v_has_filter_role = CASE WHEN a_ids_role = '' THEN 0 ELSE 1 END; - - INSERT INTO tmp_User_Permission ( - id_role, - id_permission, - id_access_level, - can_view, - can_edit, - can_admin - ) - SELECT U.id_user, - U.is_super_user, - U.is_super_user, - U.is_super_user, - U.is_super_user - FROM Shop_Role R - INNER JOIN Shop_Role_Permission_Link RPL - ON R.id_role = RPL.id_role - AND RPL.active - INNER JOIN Shop_Permission PERM - ON RPL.id_permission = PERM.id_permission - AND PERM.active - INNER JOIN Shop_Permission_Group PG - ON PERM.id_permission_group = PG.id_group - AND PG.active - LEFT JOIN Shop_Access_Level AL - ON RPL.id_access_level = AL.id_access_level - AND AL.active - WHERE - R.id_role LIKE CONCAT('%', a_ids_role, '%') - AND ( - PERM.required_access_level = 0 - OR AL.priority >= PERM.required_access_level - ) - ; - - UPDATE tmp_User_Permission t_UP - INNER JOIN Shop_Access_Level AL - ON AL.code = 'ADMIN' - SET t_UP.id_access_level = AL.id_access_level - WHERE t_UP.is_super_user - ; - - - -- Clean up - DROP TABLE IF EXISTS tmp_Shop_Product_Category; - DROP TABLE IF EXISTS tmp_Shop_Product; - DROP TABLE IF EXISTS tmp_Shop_Image; -END // -DELIMITER ;; - diff --git a/static/MySQL/deprecated/7000_p_shop_get_many_user_order.sql b/static/MySQL/deprecated/7000_p_shop_get_many_user_order.sql deleted file mode 100644 index 207846c1..00000000 --- a/static/MySQL/deprecated/7000_p_shop_get_many_user_order.sql +++ /dev/null @@ -1,285 +0,0 @@ - - - -/* - -CALL p_shop_get_many_user_order ( - '', - '', - 1, - '' -) - -*/ - - --- Clear previous proc -DROP PROCEDURE IF EXISTS p_shop_get_many_user_order; - - -DELIMITER // -CREATE PROCEDURE p_shop_get_many_user_order ( - IN a_id_user INT, - IN a_ids_order VARCHAR(4000), - IN a_n_order_max INT, - IN a_id_checkout_session VARCHAR(200) -) -BEGIN - -- Argument redeclaration - -- Variable declaration - DECLARE v_has_filter_user BIT; - DECLARE v_has_filter_order BIT; - DECLARE v_has_filter_session BIT; - DECLARE v_code_error_data VARCHAR(200); - DECLARE v_code_error_permission VARCHAR(200); - DECLARE v_guid BINARY(36); - - SET v_code_error_data := (SELECT code FROM Shop_Msg_Error_Type WHERE id_type = 1); - SET v_code_error_permission := (SELECT code FROM Shop_Msg_Error_Type WHERE id_type = 2); - SET v_guid = UUID(); - - -- Argument validation + default values - IF a_id_user IS NULL THEN - SET a_id_user = ''; - ELSE - SET a_id_user = TRIM(a_id_user); - END IF; - IF a_ids_order IS NULL THEN - SET a_ids_order = ''; - ELSE - SET a_ids_order = TRIM(a_ids_order); - END IF; - IF a_n_order_max IS NULL THEN - SET a_n_order_max = 1; - END IF; - IF a_id_checkout_session IS NULL THEN - SET a_id_checkout_session = ''; - ELSE - SET a_id_checkout_session = TRIM(a_id_checkout_session); - END IF; - - - - -- Temporary tables - DROP TABLE IF EXISTS tmp_Shop_User; - DROP TABLE IF EXISTS tmp_Shop_Order; - - CREATE TABLE tmp_Shop_User( - id_user INT NOT NULL PRIMARY KEY, - CONSTRAINT FK_tmp_Shop_User_id_user - FOREIGN KEY (id_user) - REFERENCES Shop_User(id_user), - active BIT NOT NULL - ); - - CREATE TABLE tmp_Shop_Order ( - id_order INT NOT NULL PRIMARY KEY, - CONSTRAINT FK_tmp_Shop_Order_id_order - FOREIGN KEY (id_order) - REFERENCES Shop_User_Order(id_order), - active BIT NOT NULL - ); - - CREATE TABLE IF NOT EXISTS tmp_Msg_Error ( - display_order INT NOT NULL PRIMARY KEY AUTO_INCREMENT, - guid BINARY(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), - msg VARCHAR(4000) NOT NULL - ); - - - -- Parse filters - SET v_has_filter_user = CASE WHEN a_id_user = '' THEN 0 ELSE 1 END; - SET a_ids_order = REPLACE(a_ids_order, '|', ','); - SET v_has_filter_order = CASE WHEN a_ids_order = '' THEN 0 ELSE 1 END; - SET v_has_filter_session = CASE WHEN a_id_checkout_session = '' THEN 0 ELSE 1 END; - - -- User - IF NOT EXISTS (SELECT * FROM tmp_Msg_Error LIMIT 1) THEN - IF v_has_filter_user THEN - INSERT INTO tmp_Shop_User ( - id_user, - active - ) - SELECT id_user, - active - FROM Shop_User - WHERE id_user LIKE CONCAT('%', a_id_user, '%') - AND active - LIMIT 1 - ; - - SET v_has_filter_user = EXISTS (SELECT id_user FROM tmp_Shop_User LIMIT 1); - SET a_id_user := (SELECT id_user FROM tmp_Shop_User LIMIT 1); - END IF; - END IF; - IF NOT v_has_filter_user THEN - INSERT INTO tmp_Msg_Error ( - guid, - code, - msg - ) - VALUES ( - v_guid, - v_code_error_data, - 'User ID not valid.' - ) - ; - END IF; - - -- Permissions - IF NOT EXISTS (SELECT * FROM tmp_Msg_Error WHERE guid = v_guid LIMIT 1) THEN - CALL p_shop_user_eval ( - v_guid, # a_guid - a_id_user, # a_id_user - 0, # a_get_inactive_users - CONVERT((SELECT id_permission FROM Shop_Permission WHERE 'STORE_USER' = code), CHAR), # a_ids_permission - (SELECT id_access_level FROM Shop_Access_Level WHERE code = 'VIEW' AND active), # a_ids_access_level - '', # a_ids_product - '' # a_ids_permutation - ); - - IF NOT (SELECT can_edit FROM Shop_User_Eval_Temp WHERE guid = v_guid) THEN - INSERT INTO tmp_Msg_Error ( - guid, - code, - msg - ) - VALUES ( - v_guid, - v_code_error_permission, - 'User ID does not have permission to access orders.' - ) - ; - END IF; - - DELETE FROM Shop_User_Eval_Temp - WHERE guid = v_guid - ; - END IF; - - -- Invalid Orders - IF NOT EXISTS (SELECT * FROM tmp_Msg_Error WHERE guid = v_guid LIMIT 1) THEN - # Invalid Order IDs - IF EXISTS (SELECT * FROM Shop_User_Order WHERE NOT (id_user = a_id_user) AND v_has_filter_order AND FIND_IN_SET(id_order, a_ids_order) > 0) THEN # id_order LIKE CONCAT('%', a_ids_order, '%') LIMIT 1) THEN - INSERT INTO tmp_Msg_Error ( - guid, - code, - msg - ) - VALUES ( - v_guid, - v_code_error_data, - CONCAT('You do not have access to the following order IDs: ', (SELECT GROUP_CONCAT(id_order SEPARATOR ', ') FROM Shop_User_Order WHERE NOT (id_user = a_id_user) AND FIND_IN_SET(id_order, a_ids_order) > 0)) # id_order LIKE CONCAT('%', a_ids_order, '%'))) # AND v_has_filter_order # filtered by parent condition - ) - ; - END IF; - # Invalid Checkout Session IDs - IF EXISTS (SELECT * FROM Shop_User_Order WHERE NOT (id_user = a_id_user) AND v_has_filter_session AND id_checkout_session = a_id_checkout_session) THEN - INSERT INTO tmp_Msg_Error ( - guid, - code, - msg - ) - VALUES ( - v_guid, - v_code_error_data, - CONCAT('You do not have access to the following checkout session IDs: ', (SELECT GROUP_CONCAT(id_order SEPARATOR ', ') FROM Shop_User_Order WHERE NOT (id_user = a_id_user) AND id_checkout_session = a_id_checkout_session)) # AND v_has_filter_order # filtered by parent condition - ) - ; - END IF; - END IF; - - -- Valid Orders - IF NOT EXISTS (SELECT * FROM tmp_Msg_Error WHERE guid = v_guid LIMIT 1) THEN - - INSERT INTO tmp_Shop_Order ( - id_order, - active - ) - SELECT UO.id_order, - UO.active - FROM Shop_User_Order UO - INNER JOIN tmp_Shop_User t_U - ON UO.id_user = t_U.id_user - AND t_U.active - WHERE ((NOT v_has_filter_order OR FIND_IN_SET(UO.id_order, a_ids_order) > 0) # UO.id_order LIKE CONCAT('%', a_ids_order, '%')) - OR (NOT v_has_filter_session OR UO.id_checkout_session = a_id_checkout_session)) - AND UO.active - ; - END IF; - - - - -- Returns - /* - SELECT * - FROM tmp_Shop_User - ; - */ - - SELECT t_O.id_order, - UOPL.id_product, - UOPL.id_permutation, - UOPL.quantity - FROM tmp_Shop_Order t_O - INNER JOIN Shop_User_Order UO - ON t_O.id_order = UO.id_order - INNER JOIN Shop_User_Order_Product_Link UOPL - ON UO.id_order = UOPL.id_order - WHERE t_O.active - ; - - - # Errors - SELECT * - FROM tmp_Msg_Error - WHERE guid = v_guid - ; - - - /* - # Return arguments for test - SELECT - a_id_user, - a_ids_order, - a_n_order_max, - a_id_checkout_session - ; - */ - - -- Clean up - DROP TABLE IF EXISTS tmp_Shop_User; - DROP TABLE IF EXISTS tmp_Shop_Order; -END // -DELIMITER ;; - - -/* - -CALL p_shop_get_many_user_order ( - 'auth0|6582b95c895d09a70ba10fef', - '1', - 0, - '' -); - -CALL p_shop_get_many_user_order ( - '', - '1', - 0, - '' -); - -insert into shop_product_change_set (comment) - values ('set product not subscription - test bool output to python'); - update shop_product - set is_subscription = 0, - id_change_set = (select id_change_set from shop_product_change_set order by id_change_set desc limit 1) - where id_product = 1 -select * from shop_User; -select * from shop_User_oRDER; -*/ diff --git a/static/MySQL/deprecated/706_p_shop_get_product.sql b/static/MySQL/deprecated/706_p_shop_get_product.sql deleted file mode 100644 index 6f7c0c86..00000000 --- a/static/MySQL/deprecated/706_p_shop_get_product.sql +++ /dev/null @@ -1,657 +0,0 @@ - - - -/* - -CALL p_shop_get_product ( - '', # a_id_user - 1, # a_id_product - '', # a_ids_image - 0, # a_get_first_image_only - 1 # a_get_all_images -) - -*/ - - --- Clear previous proc -DROP PROCEDURE IF EXISTS p_shop_get_product; - - -DELIMITER // -CREATE PROCEDURE p_shop_get_product ( - IN a_id_user INT, - IN a_id_product INT, - IN a_ids_permutation VARCHAR(4000), - IN a_ids_image VARCHAR(500), - IN a_get_first_image_only BIT, - IN a_get_all_images BIT -) -BEGIN - -- Argument redeclaration - -- Variable declaration - DECLARE v_has_filter_product BIT; - DECLARE v_id_product_search VARCHAR(10); - DECLARE v_has_filter_permutation BIT; - DECLARE v_has_product_permutations BIT; - DECLARE v_guid BINARY(36); - # DECLARE v_id_user VARCHAR(100); - DECLARE v_id_permission_product INT; - DECLARE v_ids_product_permission VARCHAR(500); - DECLARE v_id_access_level_view INT; - DECLARE v_has_filter_image BIT; - DECLARE v_now DATETIME; - DECLARE v_id_minimum INT; - DECLARE v_code_error_data VARCHAR(50); - - - SET v_guid := UUID(); - SET v_code_error_data := (SELECT code FROM Shop_Msg_Error_Type WHERE id_type = 1); - SET v_id_access_level_view := (SELECT id_access_level FROM Shop_Access_Level WHERE code = 'VIEW'); - - -- Argument validation + default values - IF a_id_user IS NULL THEN - SET a_id_user = ''; - ELSE - SET a_id_user = TRIM(a_id_user); - END IF; - IF a_ids_image IS NULL THEN - SET a_ids_image = ''; - ELSE - SET a_ids_image = TRIM(a_ids_image); - END IF; - - - -- Temporary tables - DROP TABLE IF EXISTS tmp_Shop_Image; - DROP TABLE IF EXISTS tmp_Shop_Variation; - DROP TABLE IF EXISTS tmp_Shop_Product; - - CREATE TABLE tmp_Shop_Product ( - id_product INT NOT NULL, - CONSTRAINT FK_tmp_Shop_Product_id_product - FOREIGN KEY (id_product) - REFERENCES Shop_Product(id_product), - id_permutation INT NULL, - CONSTRAINT FK_tmp_Shop_Product_id_permutation - FOREIGN KEY (id_permutation) - REFERENCES Shop_Product_Permutation(id_permutation), - id_category INT NOT NULL, - CONSTRAINT FK_tmp_Shop_Product_id_category - FOREIGN KEY (id_category) - REFERENCES Shop_Product_Category(id_category), - display_order INT, - can_view BIT, - can_edit BIT, - can_admin BIT - ); - - /* - CREATE TEMPORARY TABLE tmp_Shop_Variation ( - id_variation INT NOT NULL, - id_product INT NOT NULL, - display_order INT NOT NULL - ); - */ - - CREATE TABLE tmp_Shop_Image ( - id_product INT NOT NULL, - CONSTRAINT FK_tmp_Shop_Image_id_product - FOREIGN KEY (id_product) - REFERENCES Shop_Product(id_product), - id_permutation INT NULL, - CONSTRAINT FK_tmp_Shop_Image_id_permutation - FOREIGN KEY (id_permutation) - REFERENCES Shop_Product_Permutation(id_permutation), - id_image INT NOT NULL, - CONSTRAINT FK_tmp_Shop_Image_id_image - FOREIGN KEY (id_image) - REFERENCES Shop_Image(id_image), - display_order INT NOT NULL - ); - - CREATE TABLE IF NOT EXISTS tmp_Msg_Error ( - display_order INT NOT NULL PRIMARY KEY AUTO_INCREMENT, - guid BINARY(36) NOT NULL, - # code VARCHAR(50) NOT NULL, - # CONSTRAINT chk_tmp_Msg_Error_code CHECK (code IN (SELECT code FROM Shop_Msg_Error_Type)), - id_type INT NOT NULL, - CONSTRAINT FK_tmp_Msg_Error_id_type - FOREIGN KEY (id_type) - REFERENCES Shop_Msg_Error_Type(id_type), - msg VARCHAR(4000) NOT NULL - ); - - - -- Parse filters - # SET v_id_product_search = CONCAT('%', CAST(a_id_product AS CHAR), '%'); - # select v_id_product_search; - SET v_has_filter_image = ''; - - # Products - INSERT INTO tmp_Shop_Product ( - id_product, id_category, display_order - ) - SELECT P.id_product, P.id_category, P.display_order - FROM Shop_Product P - # WHERE P.id_product LIKE v_id_product_search - WHERE P.id_product = a_id_product - AND NOT P.has_variations - AND P.active - ; - # Product Permutations - INSERT INTO tmp_Shop_Product ( - id_product, id_category, id_permutation, display_order - ) - SELECT PP.id_product, P.id_category, PP.id_permutation, PP.display_order - FROM Shop_Product_Permutation PP - INNER JOIN Shop_Product P - ON PP.id_product = P.id_product - AND P.has_variations - AND P.active - # WHERE PP.id_product LIKE v_id_product_search - WHERE PP.id_product = a_id_product - AND PP.active - ; - - SET a_id_product := (SELECT id_product FROM tmp_Shop_Product LIMIT 1); - -- SET v_has_filter_product = NOT ISNULL(a_id_product); - SET v_has_product_permutations = EXISTS (SELECT id_permutation FROM tmp_Shop_Product WHERE NOT ISNULL(id_permutation)); - - IF ISNULL(a_id_product) THEN # NOT v_has_filter_product - INSERT INTO tmp_Msg_Error ( - guid, - code, - msg - ) - VALUES ( - v_guid, - v_code_error_data, - 'Valid product ID not provided.' - ) - ; - END IF; - - # Permutations - IF v_has_filter_permutation THEN - DELETE FROM tmp_Shop_Product - WHERE FIND_IN_SET(id_permutation, a_ids_permutation) = 0 - ; - - IF NOT EXISTS (SELECT * FROM tmp_Shop_Product) THEN - INSERT INTO tmp_Msg_Error ( - guid, - code, - msg - ) - VALUES ( - v_guid, - v_code_error_data, - 'Permutation IDs not associated with product ID.' - ) - ; - END IF; - END IF; - - - /* - # Variations - INSERT INTO tmp_Shop_Variation ( - id_variation, id_product - ) - SELECT P.id_variation, P.id_product - FROM Shop_Variation V - INNER JOIN tmp_Shop_Product t_P - ON V.id_product = t_P.id_product - WHERE V.active - ; - */ - - IF NOT EXISTS (SELECT * FROM tmp_Msg_Error WHERE guid = v_guid) THEN - # Product Images - INSERT INTO tmp_Shop_Image ( - id_product, id_image, display_order - ) - SELECT t_P.id_product, I.id_image, I.display_order - FROM Shop_Image I - INNER JOIN tmp_Shop_Product t_P - ON I.id_product = t_P.id_product - AND ISNULL(I.id_permutation) - INNER JOIN Shop_Product P - ON t_P.id_product = P.id_product - AND NOT P.has_variations - WHERE I.active - ; - # Product Permutation Images - INSERT INTO tmp_Shop_Image ( - id_product, - id_permutation, - id_image, - display_order - ) - SELECT t_P.id_product, - t_P.id_permutation, - I.id_image, - ROW_NUMBER() OVER W AS display_order - FROM Shop_Image I - INNER JOIN Shop_Product_Permutation PP - ON I.id_permutation = PP.id_permutation - INNER JOIN Shop_Product P - ON PP.id_product = P.id_product - AND P.has_variations - INNER JOIN tmp_Shop_Product t_P - ON P.id_product = t_P.id_product - AND PP.id_permutation = t_P.id_permutation - WHERE I.active - WINDOW W AS (ORDER BY P.display_order, PP.display_order, I.display_order) - ; - END IF; - - - -- Permissions - IF NOT EXISTS (SELECT * FROM tmp_Msg_Error WHERE guid = v_guid) AND EXISTS (SELECT * FROM tmp_Shop_Product LIMIT 1) THEN - # SET v_id_user := (SELECT id_user FROM Shop_User WHERE name = CURRENT_USER()); - SET v_id_permission_product := (SELECT id_permission FROM Shop_Permission WHERE code = 'STORE_PRODUCT' LIMIT 1); - SET v_ids_product_permission := (SELECT GROUP_CONCAT(DISTINCT id_product SEPARATOR '|') FROM tmp_Shop_Product); - - SELECT v_guid, a_id_user, false, v_id_permission_product, v_id_access_level_view, v_ids_product_permission; - - CALL p_shop_user_eval(v_guid, a_id_user, false, v_id_permission_product, v_id_access_level_view, v_ids_product_permission); - - select * from shop_user_eval_temp; - - UPDATE tmp_Shop_Product t_P - INNER JOIN Shop_User_Eval_Temp UE_T - ON t_P.id_product = UE_T.id_product - AND UE_T.GUID = v_guid - SET t_P.can_view = UE_T.can_view, - t_P.can_edit = UE_T.can_edit, - t_P.can_admin = UE_T.can_admin; - - DELETE FROM tmp_Shop_Product - WHERE FIND_IN_SET(id_product, (SELECT GROUP_CONCAT(id_product SEPARATOR ',') FROM Shop_User_Eval_Temp)) = 0 # id_product NOT LIKE CONCAT('%', (SELECT GROUP_CONCAT(id_product SEPARATOR '|') FROM Shop_User_Eval_Temp), '%'); - ; - - # CALL p_shop_user_eval_clear_temp(v_guid); - # DROP TABLE IF EXISTS Shop_User_Eval_Temp; - DELETE FROM Shop_User_Eval_Temp - WHERE GUID = v_guid; - END IF; - - - -- Returns - SET v_now := NOW(); - - # Category - SELECT DISTINCT t_P.id_category, - C.name, - C.description, - C.display_order - FROM tmp_Shop_Product t_P - INNER JOIN Shop_Product_Category C - ON t_P.id_category = C.id_category - ORDER BY C.display_order - ; - - IF NOT v_has_product_permutations THEN - # Products - SELECT t_P.id_product, - NULL AS id_permutation, - P.name, - P.description, - P.price_GBP_full, - P.has_variations, - P.id_category, - P.latency_manuf, - P.quantity_min, - P.quantity_max, - P.quantity_step, - P.quantity_stock, - P.id_stripe_product, - P.is_subscription, - RI.name AS name_interval_recurrence, - RI.name_plural AS name_plural_interval_recurrence, - P.count_interval_recurrence - FROM tmp_Shop_Product t_P - INNER JOIN Shop_Product P - ON t_P.id_product = P.id_product - LEFT JOIN Shop_Interval_Recurrence RI - ON P.id_unit_measurement_interval_recurrence = RI.id_interval - WHERE ISNULL(t_P.id_permutation) - ORDER BY t_P.display_order - ; - ELSE - # Permutations - SELECT t_P.id_product, - t_P.id_permutation, - P.name, - P.description, - P.price_GBP_full, - P.has_variations, - P.id_category, - P.latency_manuf, - P.quantity_min, - P.quantity_max, - P.quantity_step, - P.quantity_stock, - P.id_stripe_product, - P.is_subscription, - RI.name AS name_interval_recurrence, - RI.name_plural AS name_plural_interval_recurrence, - P.count_interval_recurrence - FROM tmp_Shop_Product t_P - INNER JOIN Shop_Product_Permutation PP - ON t_P.id_permutation = PP.id_permutation - AND PP.active - INNER JOIN Shop_Product P - ON PP.id_product = P.id_product - LEFT JOIN Shop_Interval_Recurrence RI - ON P.id_unit_measurement_interval_recurrence = RI.id_interval - WHERE NOT ISNULL(t_P.id_permutation) - ORDER BY t_P.display_order - ; - END IF; - - # Variations - IF v_has_product_permutations THEN - SELECT PPVL.id_variation, - t_P.id_product, - t_P.id_category, - VT.code AS code_variation_type, - VT.name AS name_variation_type, - V.code AS code_variation, - V.name AS name_variation - FROM Shop_Product_Permutation_Variation_Link PPVL - INNER JOIN tmp_Shop_Product t_P - ON PPVL.id_permutation = t_P.id_permutation - INNER JOIN Shop_Variation V - ON PPVL.id_variation = V.id_variation - INNER JOIN Shop_Variation_Type VT - ON V.id_type = VT.id_type - WHERE V.active - AND VT.active - AND PPVL.active - ORDER BY VT.display_order, V.display_order - ; - ELSE - SELECT NULL AS id_variation, - NULL AS id_product, - NULL AS id_category, - NULL AS code_variation_type, - NULL AS name_variation_type, - NULL AS code_variation, - NULL AS name_variation - ; - END IF; - - IF v_has_product_permutations THEN - # Permutation Variations - SELECT t_P.id_permutation, - t_P.id_product, - t_P.id_category, - id_variation - FROM Shop_Product_Permutation_Variation_Link PPVL - INNER JOIN tmp_Shop_Product t_P - ON t_P.id_permutation = PPVL.id_permutation - ; - ELSE - SELECT NULL AS id_permutation, - NULL AS id_product, - NULL AS id_category, - NULL AS id_variation - ; - END IF; - - # Images - SELECT I.id_image, - t_P.id_product, - I.id_permutation, - t_P.id_category, - I.url - FROM tmp_Shop_Image t_I - INNER JOIN Shop_Image I - ON t_I.id_image = I.id_image - INNER JOIN tmp_Shop_Product t_P - ON a_id_product = t_P.id_product - AND I.id_permutation = t_P.id_permutation - -- WHERE I.active - ORDER BY I.display_order - ; - - # Delivery Regions - IF v_has_product_permutations THEN - SELECT DR.id_region, - t_P.id_category, - t_P.id_product, - t_P.id_permutation, - DR.code, - DR.name - FROM Shop_Delivery_Region DR - INNER JOIN Shop_Product_Delivery_Region_Link PDRL - ON DR.id_region = PDRL.id_region - AND PDRL.active - INNER JOIN tmp_Shop_Product t_P - ON PDRL.id_permutation = t_P.id_permutation - WHERE DR.active - ORDER BY t_P.id_permutation, DR.display_order - ; - ELSE - SELECT PDRL.id_region, - t_P.id_category, - t_P.id_product, - t_P.id_permutation, - DR.code, - DR.name - FROM Shop_Delivery_Region DR - INNER JOIN Shop_Product_Delivery_Region_Link PDRL - ON DR.id_region = PDRL.id_region - AND PDRL.active - INNER JOIN tmp_Shop_Product t_P - ON PDRL.id_product = t_P.id_product - WHERE DR.active - ORDER BY DR.display_order - ; - END IF; - - # Delivery options - IF v_has_product_permutations THEN - SELECT _DO.id_option, - _DO.id_product, - _DO.id_permutation, - t_P.id_category, - DOT.code, - DOT.name, - DOT.latency_delivery_min, - DOT.latency_delivery_max, - DOT.quantity_min, - DOT.quantity_max, - GROUP_CONCAT(DR.code SEPARATOR ',') AS codes_region, - GROUP_CONCAT(DR.name SEPARATOR ',') AS names_region, - _DO.price_GBP, - DOT.display_order - FROM Shop_Delivery_Option _DO - INNER JOIN Shop_Delivery_Option_Type DOT - ON _DO.id_delivery_type = DOT.id_type - AND DOT.active - INNER JOIN tmp_Shop_Product t_P - ON _DO.id_permutation = t_P.id_permutation - INNER JOIN Shop_Product_Delivery_Region_Link PDRL - ON t_P.id_product = PDRL.id_product - AND PDRL.active - INNER JOIN Shop_Delivery_Region DR - ON PDRL.id_region = DR.id_region - AND DR.active - WHERE _DO.active - AND a_id_product = _DO.id_product - GROUP BY t_P.id_product, PDRL.id_region, _DO.id_option, t_P.id_category - ORDER BY DOT.display_order - ; - ELSE - SELECT _DO.id_option, - _DO.id_product, - _DO.id_permutation, - t_P.id_category, - DOT.code, - DOT.name, - DOT.latency_delivery_min, - DOT.latency_delivery_max, - DOT.quantity_min, - DOT.quantity_max, - GROUP_CONCAT(DR.code SEPARATOR ',') AS codes_region, - GROUP_CONCAT(DR.name SEPARATOR ',') AS names_region, - _DO.price_GBP, - DOT.display_order - FROM Shop_Delivery_Option _DO - INNER JOIN Shop_Delivery_Option_Type DOT - ON _DO.id_delivery_type = DOT.id_type - AND DOT.active - INNER JOIN tmp_Shop_Product t_P - ON _DO.id_product = t_P.id_product - INNER JOIN Shop_Product_Delivery_Region_Link PDRL - ON t_P.id_product = PDRL.id_product - AND PDRL.active - INNER JOIN Shop_Delivery_Region DR - ON PDRL.id_region = DR.id_region - AND DR.active - WHERE _DO.active - AND a_id_product = _DO.id_product - GROUP BY t_P.id_product, PDRL.id_region, _DO.id_option, t_P.id_category - ORDER BY DOT.display_order - ; - END IF; - - IF v_has_product_permutations THEN - # Discounts - SELECT D.id_discount, - t_P.id_category, - a_id_product, - D.id_permutation, - D.code, - D.name, - D.multiplier, - D.quantity_min, - D.quantity_max, - D.date_start, - D.date_end, - D.display_order - FROM Shop_Discount D - INNER JOIN tmp_Shop_Product t_P - ON D.id_permutation = t_P.id_permutation - WHERE D.active - ; - ELSE - # Discounts - SELECT D.id_discount, - t_P.id_category, - D.id_product, - NULL AS id_permutation, - D.code, - D.name, - D.multiplier, - D.quantity_min, - D.quantity_max, - D.date_start, - D.date_end, - D.display_order - FROM Shop_Discount D - INNER JOIN tmp_Shop_Product t_P - ON D.id_product = t_P.id_product - WHERE D.active - AND a_id_product = D.id_product - ; - END IF; - - IF v_has_product_permutations THEN - # Discount Delivery Regions - SELECT DDRL.id_discount, - DDRL.id_region, - t_P.id_category, - t_P.id_product, - t_P.id_permutation, - DR.code, - DR.name, - DR.display_order - FROM Shop_Discount D - INNER JOIN tmp_Shop_Product t_P - ON D.id_permutation = t_P.id_permutation - INNER JOIN Shop_Discount_Delivery_Region_Link DDRL - ON D.id_discount = DDRL.id_discount - AND DDRL.active - INNER JOIN Shop_Delivery_Region DR - ON DDRL.id_region = DR.id_region - AND DR.active - WHERE D.active - ; - ELSE - # Discount Delivery Regions - SELECT DDRL.id_discount, - DDRL.id_region, - t_P.id_category, - t_P.id_product, - NULL AS id_permutation, - DR.code, - DR.name, - DR.display_order - FROM Shop_Discount D - INNER JOIN tmp_Shop_Product t_P - ON D.id_product = t_P.id_product - INNER JOIN Shop_Discount_Delivery_Region_Link DDRL - ON D.id_discount = DDRL.id_discount - AND DDRL.active - INNER JOIN Shop_Delivery_Region DR - ON DDRL.id_region = DR.id_region - AND DR.active - WHERE D.active - AND a_id_product = D.id_product - ; - END IF; - - # Errors - SELECT * - FROM tmp_Msg_Error - WHERE guid = v_guid - ; - - /* - # Return arguments for test - SELECT - a_ids_category, - a_get_inactive_categories, - a_ids_product, - a_get_inactive_products, - a_get_first_product_only, - a_get_all_products, - a_ids_image, - a_get_inactive_images, - a_get_first_image_only, - a_get_all_images - ; - */ - - -- Clean up - DROP TABLE IF EXISTS tmp_Shop_Image; - DROP TABLE IF EXISTS tmp_Shop_Variation; - DROP TABLE IF EXISTS tmp_Shop_Product; -END // -DELIMITER ;; - - - - -CALL p_shop_get_product ( - '', # a_id_user - 1 # a_id_product -); - -/* -drop table tmp_msg_error; -select * from shop_image; -select * from shop_discount; - -insert into shop_product_change_set (comment) - values ('set product not subscription - test bool output to python'); - update shop_product - set is_subscription = 0, - id_change_set = (select id_change_set from shop_product_change_set order by id_change_set desc limit 1) - where id_product = 1 -*/ diff --git a/static/MySQL/deprecated/9020_edit_permissions.sql b/static/MySQL/deprecated/9020_edit_permissions.sql deleted file mode 100644 index bacf7ecc..00000000 --- a/static/MySQL/deprecated/9020_edit_permissions.sql +++ /dev/null @@ -1,83 +0,0 @@ -SELECT URL.id_link, - URL.id_user, - U.name AS name, - URL.id_role, - R.name AS role -FROM Shop_User_Role_Link URL -INNER JOIN Shop_User U - ON URL.id_user = U.id_user -INNER JOIN Shop_Role R - ON URL.id_role = R.id_role -; -SELECT * -FROM Shop_Role_Permission_Link -; -SELECT * -FROM Shop_Access_Level -; -SELECT * -FROM Shop_Permission -; -SELECT * -FROM Shop_Access_Level -; - - -select * from shop_user; -select * from shop_user_audit; -select * from Shop_User_Change_Set; -/* -INSERT INTO Shop_User_Change_Set ( comment ) -VALUES ('Demotion'); -*/ -UPDATE Shop_User -SET is_super_user = 0, - id_change_set = (SELECT id_change_set FROM Shop_User_Change_Set LIMIT 1) -WHERE id_user = 1 -; -select * from shop_user; -select * from shop_user_audit; - - -drop procedure if exists p_test; -delimiter // -create procedure p_test () -begin - declare b0 int; - declare b1 int; - SET b0 = 0; - SET b1 = 1; - select b0, b1; - select cast(b0 as char), cast(b1 as char); - select cast(b0 as char character set utf8), cast(b1 as char character set utf8); - select convert(b0, char), convert(b1, char); - select convert(b0, char character set utf8), convert(b1, char character set utf8); - select convert(convert(b0, signed), char), convert(convert(b1, signed), char); - select convert(convert(b0, signed), char character set utf8), convert(convert(b1, signed), char character set utf8); -end // -delimiter ; -call p_test(); -drop procedure if exists p_test; - -INSERT INTO Shop_User_Audit ( - id_user, - name_field, - value_prev, - value_new, - id_change_set -) -SELECT id_user, name_field, value_prev, value_new, id_change_set -FROM Shop_User_Audit -WHERE id_audit = 1 -UNION -SELECT id_user, name_field, value_prev, value_new, id_change_set -FROM Shop_User_Audit -WHERE id_audit = 1 -; - -select * from shop_user_audit; - - -SELECT * FROM Shop_Access_Level; - -SELECT * FROM Shop_Product; \ No newline at end of file diff --git a/static/MySQL/deprecated/dump.sql b/static/MySQL/deprecated/dump.sql deleted file mode 100644 index 91f55473..00000000 --- a/static/MySQL/deprecated/dump.sql +++ /dev/null @@ -1,8235 +0,0 @@ -CREATE DATABASE IF NOT EXISTS `partsltd_prod` /*!40100 DEFAULT CHARACTER SET utf8mb4 COLLATE utf8mb4_0900_ai_ci */ /*!80016 DEFAULT ENCRYPTION='N' */; -USE `partsltd_prod`; --- MySQL dump 10.13 Distrib 8.0.36, for Win64 (x86_64) --- --- Host: localhost Database: partsltd_prod --- ------------------------------------------------------ --- Server version 8.0.35 - -/*!40101 SET @OLD_CHARACTER_SET_CLIENT=@@CHARACTER_SET_CLIENT */; -/*!40101 SET @OLD_CHARACTER_SET_RESULTS=@@CHARACTER_SET_RESULTS */; -/*!40101 SET @OLD_COLLATION_CONNECTION=@@COLLATION_CONNECTION */; -/*!50503 SET NAMES utf8 */; -/*!40103 SET @OLD_TIME_ZONE=@@TIME_ZONE */; -/*!40103 SET TIME_ZONE='+00:00' */; -/*!40014 SET @OLD_UNIQUE_CHECKS=@@UNIQUE_CHECKS, UNIQUE_CHECKS=0 */; -/*!40014 SET @OLD_FOREIGN_KEY_CHECKS=@@FOREIGN_KEY_CHECKS, FOREIGN_KEY_CHECKS=0 */; -/*!40101 SET @OLD_SQL_MODE=@@SQL_MODE, SQL_MODE='NO_AUTO_VALUE_ON_ZERO' */; -/*!40111 SET @OLD_SQL_NOTES=@@SQL_NOTES, SQL_NOTES=0 */; - --- --- Table structure for table `file_type` --- - -DROP TABLE IF EXISTS `file_type`; -/*!40101 SET @saved_cs_client = @@character_set_client */; -/*!50503 SET character_set_client = utf8mb4 */; -CREATE TABLE `file_type` ( - `id_type` int NOT NULL AUTO_INCREMENT, - `code` varchar(50) DEFAULT NULL, - `name` varchar(100) DEFAULT NULL, - `extension` varchar(50) DEFAULT NULL, - `created_on` datetime DEFAULT NULL, - `created_by` varchar(100) DEFAULT NULL, - `updated_last_on` datetime DEFAULT NULL, - `updated_last_by` varchar(100) DEFAULT NULL, - PRIMARY KEY (`id_type`) -) ENGINE=InnoDB AUTO_INCREMENT=5 DEFAULT CHARSET=utf8mb4 COLLATE=utf8mb4_0900_ai_ci; -/*!40101 SET character_set_client = @saved_cs_client */; - --- --- Dumping data for table `file_type` --- - -LOCK TABLES `file_type` WRITE; -/*!40000 ALTER TABLE `file_type` DISABLE KEYS */; -INSERT INTO `file_type` VALUES (1,'JPEG','Joint Photographic Export Group','jpg','2024-04-28 19:03:07','root@localhost',NULL,NULL),(2,'PNG','Portable Network Graphic','png','2024-04-28 19:03:07','root@localhost',NULL,NULL),(3,'GIF','GIF','gif','2024-04-28 19:03:07','root@localhost',NULL,NULL),(4,'MPEG-4','Multimedia Photographic Export Group 4','mp4','2024-04-28 19:03:07','root@localhost',NULL,NULL); -/*!40000 ALTER TABLE `file_type` ENABLE KEYS */; -UNLOCK TABLES; -/*!50003 SET @saved_cs_client = @@character_set_client */ ; -/*!50003 SET @saved_cs_results = @@character_set_results */ ; -/*!50003 SET @saved_col_connection = @@collation_connection */ ; -/*!50003 SET character_set_client = utf8mb4 */ ; -/*!50003 SET character_set_results = utf8mb4 */ ; -/*!50003 SET collation_connection = utf8mb4_0900_ai_ci */ ; -/*!50003 SET @saved_sql_mode = @@sql_mode */ ; -/*!50003 SET sql_mode = 'ONLY_FULL_GROUP_BY,STRICT_TRANS_TABLES,NO_ZERO_IN_DATE,NO_ZERO_DATE,ERROR_FOR_DIVISION_BY_ZERO,NO_ENGINE_SUBSTITUTION' */ ; -DELIMITER ;;; -/*!50003 CREATE*/ /*!50017 DEFINER=`root`@`localhost`*/ /*!50003 TRIGGER `before_insert_File_Type` BEFORE INSERT ON `file_type` FOR EACH ROW BEGIN - SET NEW.created_on := IFNULL(NEW.created_on, NOW()); - SET NEW.created_by := IFNULL(NEW.created_by, IFNULL((SELECT id_user FROM Shop_User WHERE firstname = CURRENT_USER()), -1)); -END */;; -DELIMITER ;; -/*!50003 SET sql_mode = @saved_sql_mode */ ; -/*!50003 SET character_set_client = @saved_cs_client */ ; -/*!50003 SET character_set_results = @saved_cs_results */ ; -/*!50003 SET collation_connection = @saved_col_connection */ ; -/*!50003 SET @saved_cs_client = @@character_set_client */ ; -/*!50003 SET @saved_cs_results = @@character_set_results */ ; -/*!50003 SET @saved_col_connection = @@collation_connection */ ; -/*!50003 SET character_set_client = utf8mb4 */ ; -/*!50003 SET character_set_results = utf8mb4 */ ; -/*!50003 SET collation_connection = utf8mb4_0900_ai_ci */ ; -/*!50003 SET @saved_sql_mode = @@sql_mode */ ; -/*!50003 SET sql_mode = 'ONLY_FULL_GROUP_BY,STRICT_TRANS_TABLES,NO_ZERO_IN_DATE,NO_ZERO_DATE,ERROR_FOR_DIVISION_BY_ZERO,NO_ENGINE_SUBSTITUTION' */ ; -DELIMITER ;;; -/*!50003 CREATE*/ /*!50017 DEFINER=`root`@`localhost`*/ /*!50003 TRIGGER `before_update_File_Type` BEFORE UPDATE ON `file_type` FOR EACH ROW BEGIN - INSERT INTO File_Type_Audit ( - id_type, - name_field, - value_prev, - value_new - ) - # Changed code - SELECT NEW.id_type, 'code', OLD.code, NEW.code - WHERE NOT OLD.code <=> NEW.code - UNION - # Changed name - SELECT NEW.id_type, 'name', OLD.name, NEW.name - WHERE NOT OLD.name <=> NEW.name - UNION - # Changed extension - SELECT NEW.id_type, 'extension', CONVERT(OLD.extension, CHAR), CONVERT(NEW.extension, CHAR) - WHERE NOT OLD.extension <=> NEW.extension - ; -END */;; -DELIMITER ;; -/*!50003 SET sql_mode = @saved_sql_mode */ ; -/*!50003 SET character_set_client = @saved_cs_client */ ; -/*!50003 SET character_set_results = @saved_cs_results */ ; -/*!50003 SET collation_connection = @saved_col_connection */ ; - --- --- Table structure for table `file_type_audit` --- - -DROP TABLE IF EXISTS `file_type_audit`; -/*!40101 SET @saved_cs_client = @@character_set_client */; -/*!50503 SET character_set_client = utf8mb4 */; -CREATE TABLE `file_type_audit` ( - `id_audit` int NOT NULL AUTO_INCREMENT, - `id_type` int NOT NULL, - `name_field` varchar(50) DEFAULT NULL, - `value_prev` varchar(500) DEFAULT NULL, - `value_new` varchar(500) DEFAULT NULL, - `created_on` datetime DEFAULT NULL, - `created_by` varchar(100) DEFAULT NULL, - `updated_last_on` datetime DEFAULT NULL, - `updated_last_by` varchar(100) DEFAULT NULL, - PRIMARY KEY (`id_audit`), - KEY `FK_File_Type_Audit_id_type` (`id_type`), - CONSTRAINT `FK_File_Type_Audit_id_type` FOREIGN KEY (`id_type`) REFERENCES `file_type` (`id_type`) ON UPDATE RESTRICT -) ENGINE=InnoDB DEFAULT CHARSET=utf8mb4 COLLATE=utf8mb4_0900_ai_ci; -/*!40101 SET character_set_client = @saved_cs_client */; - --- --- Dumping data for table `file_type_audit` --- - -LOCK TABLES `file_type_audit` WRITE; -/*!40000 ALTER TABLE `file_type_audit` DISABLE KEYS */; -/*!40000 ALTER TABLE `file_type_audit` ENABLE KEYS */; -UNLOCK TABLES; -/*!50003 SET @saved_cs_client = @@character_set_client */ ; -/*!50003 SET @saved_cs_results = @@character_set_results */ ; -/*!50003 SET @saved_col_connection = @@collation_connection */ ; -/*!50003 SET character_set_client = utf8mb4 */ ; -/*!50003 SET character_set_results = utf8mb4 */ ; -/*!50003 SET collation_connection = utf8mb4_0900_ai_ci */ ; -/*!50003 SET @saved_sql_mode = @@sql_mode */ ; -/*!50003 SET sql_mode = 'ONLY_FULL_GROUP_BY,STRICT_TRANS_TABLES,NO_ZERO_IN_DATE,NO_ZERO_DATE,ERROR_FOR_DIVISION_BY_ZERO,NO_ENGINE_SUBSTITUTION' */ ; -DELIMITER ;;; -/*!50003 CREATE*/ /*!50017 DEFINER=`root`@`localhost`*/ /*!50003 TRIGGER `before_insert_File_Type_Audit` BEFORE INSERT ON `file_type_audit` FOR EACH ROW BEGIN - SET NEW.created_on := IFNULL(NEW.created_on, NOW()); - SET NEW.created_by := IFNULL(NEW.created_by, IFNULL((SELECT id_user FROM Shop_User WHERE firstname = CURRENT_USER()), -1)); -END */;; -DELIMITER ;; -/*!50003 SET sql_mode = @saved_sql_mode */ ; -/*!50003 SET character_set_client = @saved_cs_client */ ; -/*!50003 SET character_set_results = @saved_cs_results */ ; -/*!50003 SET collation_connection = @saved_col_connection */ ; -/*!50003 SET @saved_cs_client = @@character_set_client */ ; -/*!50003 SET @saved_cs_results = @@character_set_results */ ; -/*!50003 SET @saved_col_connection = @@collation_connection */ ; -/*!50003 SET character_set_client = utf8mb4 */ ; -/*!50003 SET character_set_results = utf8mb4 */ ; -/*!50003 SET collation_connection = utf8mb4_0900_ai_ci */ ; -/*!50003 SET @saved_sql_mode = @@sql_mode */ ; -/*!50003 SET sql_mode = 'ONLY_FULL_GROUP_BY,STRICT_TRANS_TABLES,NO_ZERO_IN_DATE,NO_ZERO_DATE,ERROR_FOR_DIVISION_BY_ZERO,NO_ENGINE_SUBSTITUTION' */ ; -DELIMITER ;;; -/*!50003 CREATE*/ /*!50017 DEFINER=`root`@`localhost`*/ /*!50003 TRIGGER `before_update_File_Type_Audit` BEFORE UPDATE ON `file_type_audit` FOR EACH ROW BEGIN - SET NEW.updated_last_on = NOW(); - SET NEW.updated_last_by = CURRENT_USER(); -END */;; -DELIMITER ;; -/*!50003 SET sql_mode = @saved_sql_mode */ ; -/*!50003 SET character_set_client = @saved_cs_client */ ; -/*!50003 SET character_set_results = @saved_cs_results */ ; -/*!50003 SET collation_connection = @saved_col_connection */ ; - --- --- Table structure for table `shop_access_level` --- - -DROP TABLE IF EXISTS `shop_access_level`; -/*!40101 SET @saved_cs_client = @@character_set_client */; -/*!50503 SET character_set_client = utf8mb4 */; -CREATE TABLE `shop_access_level` ( - `id_access_level` int NOT NULL AUTO_INCREMENT, - `code` varchar(50) DEFAULT NULL, - `name` varchar(255) DEFAULT NULL, - `priority` int NOT NULL, - `active` bit(1) NOT NULL DEFAULT b'1', - `display_order` int NOT NULL, - `created_on` datetime DEFAULT NULL, - `created_by` varchar(100) DEFAULT NULL, - `id_change_set` int DEFAULT NULL, - PRIMARY KEY (`id_access_level`), - KEY `FK_Shop_Access_Level_id_change_set` (`id_change_set`), - CONSTRAINT `FK_Shop_Access_Level_id_change_set` FOREIGN KEY (`id_change_set`) REFERENCES `shop_user_change_set` (`id_change_set`) -) ENGINE=InnoDB AUTO_INCREMENT=4 DEFAULT CHARSET=utf8mb4 COLLATE=utf8mb4_0900_ai_ci; -/*!40101 SET character_set_client = @saved_cs_client */; - --- --- Dumping data for table `shop_access_level` --- - -LOCK TABLES `shop_access_level` WRITE; -/*!40000 ALTER TABLE `shop_access_level` DISABLE KEYS */; -INSERT INTO `shop_access_level` VALUES (1,'VIEW','View',3,_binary '',1,'2024-04-28 19:03:07','root@localhost',NULL),(2,'EDIT','Edit',2,_binary '',2,'2024-04-28 19:03:07','root@localhost',NULL),(3,'ADMIN','Admin',1,_binary '',3,'2024-04-28 19:03:07','root@localhost',NULL); -/*!40000 ALTER TABLE `shop_access_level` ENABLE KEYS */; -UNLOCK TABLES; -/*!50003 SET @saved_cs_client = @@character_set_client */ ; -/*!50003 SET @saved_cs_results = @@character_set_results */ ; -/*!50003 SET @saved_col_connection = @@collation_connection */ ; -/*!50003 SET character_set_client = utf8mb4 */ ; -/*!50003 SET character_set_results = utf8mb4 */ ; -/*!50003 SET collation_connection = utf8mb4_0900_ai_ci */ ; -/*!50003 SET @saved_sql_mode = @@sql_mode */ ; -/*!50003 SET sql_mode = 'ONLY_FULL_GROUP_BY,STRICT_TRANS_TABLES,NO_ZERO_IN_DATE,NO_ZERO_DATE,ERROR_FOR_DIVISION_BY_ZERO,NO_ENGINE_SUBSTITUTION' */ ; -DELIMITER ;;; -/*!50003 CREATE*/ /*!50017 DEFINER=`root`@`localhost`*/ /*!50003 TRIGGER `before_insert_Shop_Access_Level` BEFORE INSERT ON `shop_access_level` FOR EACH ROW BEGIN - IF NEW.created_on <=> NULL THEN - SET NEW.created_on := IFNULL(NEW.created_on, NOW()); - END IF; - IF NEW.created_by <=> NULL THEN - SET NEW.created_by := IFNULL(NEW.created_by, IFNULL((SELECT id_user FROM Shop_User WHERE firstname = CURRENT_USER()), -1)); - END IF; -END */;; -DELIMITER ;; -/*!50003 SET sql_mode = @saved_sql_mode */ ; -/*!50003 SET character_set_client = @saved_cs_client */ ; -/*!50003 SET character_set_results = @saved_cs_results */ ; -/*!50003 SET collation_connection = @saved_col_connection */ ; -/*!50003 SET @saved_cs_client = @@character_set_client */ ; -/*!50003 SET @saved_cs_results = @@character_set_results */ ; -/*!50003 SET @saved_col_connection = @@collation_connection */ ; -/*!50003 SET character_set_client = utf8mb4 */ ; -/*!50003 SET character_set_results = utf8mb4 */ ; -/*!50003 SET collation_connection = utf8mb4_0900_ai_ci */ ; -/*!50003 SET @saved_sql_mode = @@sql_mode */ ; -/*!50003 SET sql_mode = 'ONLY_FULL_GROUP_BY,STRICT_TRANS_TABLES,NO_ZERO_IN_DATE,NO_ZERO_DATE,ERROR_FOR_DIVISION_BY_ZERO,NO_ENGINE_SUBSTITUTION' */ ; -DELIMITER ;;; -/*!50003 CREATE*/ /*!50017 DEFINER=`root`@`localhost`*/ /*!50003 TRIGGER `before_update_Shop_Access_Level` BEFORE UPDATE ON `shop_access_level` FOR EACH ROW BEGIN - IF OLD.id_change_set <=> NEW.id_change_set THEN - SIGNAL SQLSTATE '45000' - SET MESSAGE_TEXT = 'New change Set ID must be provided.'; - END IF; - - INSERT INTO Shop_Access_Level_Audit ( - id_access_level, - name_field, - value_prev, - value_new, - id_change_set - ) - # Changed code - SELECT NEW.id_access_level, 'code', OLD.code, NEW.code, NEW.id_change_set - WHERE NOT (OLD.code <=> NEW.code) - UNION - # Changed name - SELECT NEW.id_access_level, 'name', OLD.name, NEW.name, NEW.id_change_set - WHERE NOT (OLD.name <=> NEW.name) - UNION - # Changed priority - SELECT NEW.id_access_level, 'priority', CONVERT(OLD.priority, CHAR), CONVERT(NEW.priority, CHAR), NEW.id_change_set - WHERE NOT (OLD.priority <=> NEW.priority) - UNION - # Changed active - SELECT NEW.id_access_level, 'active', CONVERT(CONVERT(OLD.active, SIGNED), CHAR), CONVERT(CONVERT(NEW.active, SIGNED), CHAR), NEW.id_change_set - WHERE NOT (OLD.active <=> NEW.active) - UNION - # Changed display_order - SELECT NEW.id_access_level, 'display_order', CONVERT(OLD.display_order, CHAR), CONVERT(NEW.display_order, CHAR), NEW.id_change_set - WHERE NOT OLD.display_order <=> NEW.display_order - ; -END */;; -DELIMITER ;; -/*!50003 SET sql_mode = @saved_sql_mode */ ; -/*!50003 SET character_set_client = @saved_cs_client */ ; -/*!50003 SET character_set_results = @saved_cs_results */ ; -/*!50003 SET collation_connection = @saved_col_connection */ ; - --- --- Table structure for table `shop_access_level_audit` --- - -DROP TABLE IF EXISTS `shop_access_level_audit`; -/*!40101 SET @saved_cs_client = @@character_set_client */; -/*!50503 SET character_set_client = utf8mb4 */; -CREATE TABLE `shop_access_level_audit` ( - `id_audit` int NOT NULL AUTO_INCREMENT, - `id_access_level` int NOT NULL, - `name_field` varchar(50) DEFAULT NULL, - `value_prev` varchar(500) DEFAULT NULL, - `value_new` varchar(500) DEFAULT NULL, - `id_change_set` int NOT NULL, - PRIMARY KEY (`id_audit`), - KEY `FK_Shop_Access_Level_Audit_id_access_level` (`id_access_level`), - KEY `FK_Shop_Access_Level_Audit_id_change_set` (`id_change_set`), - CONSTRAINT `FK_Shop_Access_Level_Audit_id_access_level` FOREIGN KEY (`id_access_level`) REFERENCES `shop_access_level` (`id_access_level`) ON UPDATE RESTRICT, - CONSTRAINT `FK_Shop_Access_Level_Audit_id_change_set` FOREIGN KEY (`id_change_set`) REFERENCES `shop_user_change_set` (`id_change_set`) -) ENGINE=InnoDB DEFAULT CHARSET=utf8mb4 COLLATE=utf8mb4_0900_ai_ci; -/*!40101 SET character_set_client = @saved_cs_client */; - --- --- Dumping data for table `shop_access_level_audit` --- - -LOCK TABLES `shop_access_level_audit` WRITE; -/*!40000 ALTER TABLE `shop_access_level_audit` DISABLE KEYS */; -/*!40000 ALTER TABLE `shop_access_level_audit` ENABLE KEYS */; -UNLOCK TABLES; - --- --- Table structure for table `shop_address` --- - -DROP TABLE IF EXISTS `shop_address`; -/*!40101 SET @saved_cs_client = @@character_set_client */; -/*!50503 SET character_set_client = utf8mb4 */; -CREATE TABLE `shop_address` ( - `id_address` int NOT NULL AUTO_INCREMENT, - `id_user` varchar(200) NOT NULL, - `id_region` int NOT NULL, - `name_full` varchar(255) NOT NULL, - `phone_number` varchar(20) NOT NULL, - `postcode` varchar(20) NOT NULL, - `address_line_1` varchar(100) NOT NULL, - `address_line_2` varchar(100) NOT NULL, - `city` varchar(50) NOT NULL, - `county` varchar(100) NOT NULL, - `active` bit(1) NOT NULL DEFAULT b'1', - `created_on` datetime DEFAULT NULL, - `created_by` varchar(100) DEFAULT NULL, - `id_change_set` int DEFAULT NULL, - PRIMARY KEY (`id_address`), - KEY `FK_Shop_Address_id_user` (`id_user`), - KEY `FK_Shop_Address_id_change_set` (`id_change_set`), - CONSTRAINT `FK_Shop_Address_id_change_set` FOREIGN KEY (`id_change_set`) REFERENCES `shop_user_change_set` (`id_change_set`), - CONSTRAINT `FK_Shop_Address_id_user` FOREIGN KEY (`id_user`) REFERENCES `shop_user` (`id_user`) ON UPDATE RESTRICT -) ENGINE=InnoDB AUTO_INCREMENT=4 DEFAULT CHARSET=utf8mb4 COLLATE=utf8mb4_0900_ai_ci; -/*!40101 SET character_set_client = @saved_cs_client */; - --- --- Dumping data for table `shop_address` --- - -LOCK TABLES `shop_address` WRITE; -/*!40000 ALTER TABLE `shop_address` DISABLE KEYS */; -INSERT INTO `shop_address` VALUES (1,'auth0|6582b95c895d09a70ba10fef',1,'Teddy','07375 571430','NN6 6EB','The Laurels','Cold Ashby Road','Cold Ashby','Northamptonshire',_binary '','2024-04-28 19:03:07','root@localhost',NULL),(2,'parts_guest',1,'Guest','07375 571430','NN6 6EB','The Laurels','Cold Ashby Road','Cold Ashby','Northamptonshire',_binary '','2024-04-28 19:03:07','root@localhost',NULL); -/*!40000 ALTER TABLE `shop_address` ENABLE KEYS */; -UNLOCK TABLES; -/*!50003 SET @saved_cs_client = @@character_set_client */ ; -/*!50003 SET @saved_cs_results = @@character_set_results */ ; -/*!50003 SET @saved_col_connection = @@collation_connection */ ; -/*!50003 SET character_set_client = utf8mb4 */ ; -/*!50003 SET character_set_results = utf8mb4 */ ; -/*!50003 SET collation_connection = utf8mb4_0900_ai_ci */ ; -/*!50003 SET @saved_sql_mode = @@sql_mode */ ; -/*!50003 SET sql_mode = 'ONLY_FULL_GROUP_BY,STRICT_TRANS_TABLES,NO_ZERO_IN_DATE,NO_ZERO_DATE,ERROR_FOR_DIVISION_BY_ZERO,NO_ENGINE_SUBSTITUTION' */ ; -DELIMITER ;;; -/*!50003 CREATE*/ /*!50017 DEFINER=`root`@`localhost`*/ /*!50003 TRIGGER `before_insert_Shop_Address` BEFORE INSERT ON `shop_address` FOR EACH ROW BEGIN - IF NEW.created_on <=> NULL THEN - SET NEW.created_on := IFNULL(NEW.created_on, NOW()); - END IF; - IF NEW.created_by <=> NULL THEN - SET NEW.created_by := IFNULL(NEW.created_by, IFNULL((SELECT id_user FROM Shop_User WHERE firstname = CURRENT_USER()), -1)); - END IF; -END */;; -DELIMITER ;; -/*!50003 SET sql_mode = @saved_sql_mode */ ; -/*!50003 SET character_set_client = @saved_cs_client */ ; -/*!50003 SET character_set_results = @saved_cs_results */ ; -/*!50003 SET collation_connection = @saved_col_connection */ ; -/*!50003 SET @saved_cs_client = @@character_set_client */ ; -/*!50003 SET @saved_cs_results = @@character_set_results */ ; -/*!50003 SET @saved_col_connection = @@collation_connection */ ; -/*!50003 SET character_set_client = utf8mb4 */ ; -/*!50003 SET character_set_results = utf8mb4 */ ; -/*!50003 SET collation_connection = utf8mb4_0900_ai_ci */ ; -/*!50003 SET @saved_sql_mode = @@sql_mode */ ; -/*!50003 SET sql_mode = 'ONLY_FULL_GROUP_BY,STRICT_TRANS_TABLES,NO_ZERO_IN_DATE,NO_ZERO_DATE,ERROR_FOR_DIVISION_BY_ZERO,NO_ENGINE_SUBSTITUTION' */ ; -DELIMITER ;;; -/*!50003 CREATE*/ /*!50017 DEFINER=`root`@`localhost`*/ /*!50003 TRIGGER `before_update_Shop_Address` BEFORE UPDATE ON `shop_address` FOR EACH ROW BEGIN - IF OLD.id_change_set <=> NEW.id_change_set THEN - SIGNAL SQLSTATE '45000' - SET MESSAGE_TEXT = 'New change Set ID must be provided.'; - END IF; - - INSERT INTO Shop_Address_Audit ( - id_address, - name_field, - value_prev, - value_new, - id_change_set - ) - # Changed region - SELECT NEW.id_address, 'id_region', OLD.id_region, NEW.id_region, NEW.id_change_set - WHERE NOT OLD.id_region <=> NEW.id_region - UNION - # Changed name_full - SELECT NEW.id_address, 'name_full', OLD.name_full, NEW.name_full, NEW.id_change_set - WHERE NOT OLD.name_full <=> NEW.name_full - UNION - # Changed phone_number - SELECT NEW.id_address, 'phone_number', OLD.phone_number, NEW.phone_number, NEW.id_change_set - WHERE NOT OLD.phone_number <=> NEW.phone_number - UNION - # Changed postcode - SELECT NEW.id_address, 'postcode', OLD.postcode, NEW.postcode, NEW.id_change_set - WHERE NOT OLD.postcode <=> NEW.postcode - UNION - # Changed address_line_1 - SELECT NEW.id_address, 'address_line_1', OLD.address_line_1, NEW.address_line_1, NEW.id_change_set - WHERE NOT OLD.address_line_1 <=> NEW.address_line_1 - UNION - # Changed address_line_2 - SELECT NEW.id_address, 'address_line_2', OLD.address_line_2, NEW.address_line_2, NEW.id_change_set - WHERE NOT OLD.address_line_2 <=> NEW.address_line_2 - UNION - # Changed city - SELECT NEW.id_address, 'city', OLD.city, NEW.city, NEW.id_change_set - WHERE NOT OLD.city <=> NEW.city - UNION - # Changed county - SELECT NEW.id_address, 'county', OLD.county, NEW.county, NEW.id_change_set - WHERE NOT OLD.county <=> NEW.county - UNION - # Changed active - SELECT NEW.id_address, 'active', CONVERT(CONVERT(OLD.active, SIGNED), CHAR), CONVERT(CONVERT(NEW.active, SIGNED), CHAR), NEW.id_change_set - WHERE NOT (OLD.active <=> NEW.active) - ; -END */;; -DELIMITER ;; -/*!50003 SET sql_mode = @saved_sql_mode */ ; -/*!50003 SET character_set_client = @saved_cs_client */ ; -/*!50003 SET character_set_results = @saved_cs_results */ ; -/*!50003 SET collation_connection = @saved_col_connection */ ; - --- --- Table structure for table `shop_address_audit` --- - -DROP TABLE IF EXISTS `shop_address_audit`; -/*!40101 SET @saved_cs_client = @@character_set_client */; -/*!50503 SET character_set_client = utf8mb4 */; -CREATE TABLE `shop_address_audit` ( - `id_audit` int NOT NULL AUTO_INCREMENT, - `id_address` int NOT NULL, - `name_field` varchar(50) DEFAULT NULL, - `value_prev` varchar(500) DEFAULT NULL, - `value_new` varchar(500) DEFAULT NULL, - `id_change_set` int NOT NULL, - PRIMARY KEY (`id_audit`), - KEY `FK_Shop_Address_Audit_id_address` (`id_address`), - KEY `FK_Shop_Address_Audit_id_change_set` (`id_change_set`), - CONSTRAINT `FK_Shop_Address_Audit_id_address` FOREIGN KEY (`id_address`) REFERENCES `shop_address` (`id_address`) ON UPDATE RESTRICT, - CONSTRAINT `FK_Shop_Address_Audit_id_change_set` FOREIGN KEY (`id_change_set`) REFERENCES `shop_user_change_set` (`id_change_set`) ON UPDATE RESTRICT -) ENGINE=InnoDB DEFAULT CHARSET=utf8mb4 COLLATE=utf8mb4_0900_ai_ci; -/*!40101 SET character_set_client = @saved_cs_client */; - --- --- Dumping data for table `shop_address_audit` --- - -LOCK TABLES `shop_address_audit` WRITE; -/*!40000 ALTER TABLE `shop_address_audit` DISABLE KEYS */; -/*!40000 ALTER TABLE `shop_address_audit` ENABLE KEYS */; -UNLOCK TABLES; - --- --- Table structure for table `shop_category` --- - -DROP TABLE IF EXISTS `shop_category`; -/*!40101 SET @saved_cs_client = @@character_set_client */; -/*!50503 SET character_set_client = utf8mb4 */; -CREATE TABLE `shop_category` ( - `id_category` int NOT NULL AUTO_INCREMENT, - `code` varchar(50) DEFAULT NULL, - `name` varchar(255) DEFAULT NULL, - `description` varchar(4000) DEFAULT NULL, - `active` bit(1) NOT NULL DEFAULT b'1', - `display_order` int NOT NULL, - `created_on` datetime DEFAULT NULL, - `created_by` varchar(100) DEFAULT NULL, - `id_change_set` int DEFAULT NULL, - PRIMARY KEY (`id_category`), - KEY `FK_Shop_Product_Category_id_change_set` (`id_change_set`), - CONSTRAINT `FK_Shop_Product_Category_id_change_set` FOREIGN KEY (`id_change_set`) REFERENCES `shop_product_change_set` (`id_change_set`) -) ENGINE=InnoDB AUTO_INCREMENT=4 DEFAULT CHARSET=utf8mb4 COLLATE=utf8mb4_0900_ai_ci; -/*!40101 SET character_set_client = @saved_cs_client */; - --- --- Dumping data for table `shop_category` --- - -LOCK TABLES `shop_category` WRITE; -/*!40000 ALTER TABLE `shop_category` DISABLE KEYS */; -INSERT INTO `shop_category` VALUES (1,'ASS','Assistive Devices','Braille product line and other assistive devices',_binary '',1,'2024-04-28 19:03:07','root@localhost',NULL),(2,'MISC','Miscellaneous','Not category allocated products',_binary '',99,'2024-04-28 19:03:07','root@localhost',NULL),(3,'TECH','Technology','Technological devices',_binary '',2,'2024-04-28 19:03:07','root@localhost',NULL); -/*!40000 ALTER TABLE `shop_category` ENABLE KEYS */; -UNLOCK TABLES; -/*!50003 SET @saved_cs_client = @@character_set_client */ ; -/*!50003 SET @saved_cs_results = @@character_set_results */ ; -/*!50003 SET @saved_col_connection = @@collation_connection */ ; -/*!50003 SET character_set_client = utf8mb4 */ ; -/*!50003 SET character_set_results = utf8mb4 */ ; -/*!50003 SET collation_connection = utf8mb4_0900_ai_ci */ ; -/*!50003 SET @saved_sql_mode = @@sql_mode */ ; -/*!50003 SET sql_mode = 'ONLY_FULL_GROUP_BY,STRICT_TRANS_TABLES,NO_ZERO_IN_DATE,NO_ZERO_DATE,ERROR_FOR_DIVISION_BY_ZERO,NO_ENGINE_SUBSTITUTION' */ ; -DELIMITER ;;; -/*!50003 CREATE*/ /*!50017 DEFINER=`root`@`localhost`*/ /*!50003 TRIGGER `before_insert_Shop_Product_Category` BEFORE INSERT ON `shop_category` FOR EACH ROW BEGIN - SET NEW.created_on := IFNULL(NEW.created_on, NOW()); - SET NEW.created_by := IFNULL(NEW.created_by, IFNULL((SELECT id_user FROM Shop_User WHERE firstname = CURRENT_USER()), -1)); -END */;; -DELIMITER ;; -/*!50003 SET sql_mode = @saved_sql_mode */ ; -/*!50003 SET character_set_client = @saved_cs_client */ ; -/*!50003 SET character_set_results = @saved_cs_results */ ; -/*!50003 SET collation_connection = @saved_col_connection */ ; -/*!50003 SET @saved_cs_client = @@character_set_client */ ; -/*!50003 SET @saved_cs_results = @@character_set_results */ ; -/*!50003 SET @saved_col_connection = @@collation_connection */ ; -/*!50003 SET character_set_client = utf8mb4 */ ; -/*!50003 SET character_set_results = utf8mb4 */ ; -/*!50003 SET collation_connection = utf8mb4_0900_ai_ci */ ; -/*!50003 SET @saved_sql_mode = @@sql_mode */ ; -/*!50003 SET sql_mode = 'ONLY_FULL_GROUP_BY,STRICT_TRANS_TABLES,NO_ZERO_IN_DATE,NO_ZERO_DATE,ERROR_FOR_DIVISION_BY_ZERO,NO_ENGINE_SUBSTITUTION' */ ; -DELIMITER ;;; -/*!50003 CREATE*/ /*!50017 DEFINER=`root`@`localhost`*/ /*!50003 TRIGGER `before_update_Shop_Product_Category` BEFORE UPDATE ON `shop_category` FOR EACH ROW BEGIN - IF OLD.id_change_set <=> NEW.id_change_set THEN - SIGNAL SQLSTATE '45000' - SET MESSAGE_TEXT = 'New change Set ID must be provided.'; - END IF; - - INSERT INTO Shop_Product_Category_Audit ( - id_category, - name_field, - value_prev, - value_new, - id_change_set - ) - # Changed code - SELECT NEW.id_category, 'code', OLD.code, NEW.code, NEW.id_change_set - WHERE NOT OLD.code <=> NEW.code - UNION - # Changed name - SELECT NEW.id_category, 'name', OLD.name, NEW.name, NEW.id_change_set - WHERE NOT OLD.name <=> NEW.name - UNION - # Changed description - SELECT NEW.id_category, 'description', OLD.description, NEW.description, NEW.id_change_set - WHERE NOT OLD.description <=> NEW.description - UNION - # Changed active - SELECT NEW.id_category, 'active', CONVERT(CONVERT(OLD.active, SIGNED), CHAR), CONVERT(CONVERT(NEW.active, SIGNED), CHAR), NEW.id_change_set - WHERE NOT (OLD.active <=> NEW.active) - UNION - # Changed display_order - SELECT NEW.id_category, 'display_order', CONVERT(OLD.display_order, CHAR), CONVERT(NEW.display_order, CHAR), NEW.id_change_set - WHERE NOT OLD.display_order <=> NEW.display_order - ; -END */;; -DELIMITER ;; -/*!50003 SET sql_mode = @saved_sql_mode */ ; -/*!50003 SET character_set_client = @saved_cs_client */ ; -/*!50003 SET character_set_results = @saved_cs_results */ ; -/*!50003 SET collation_connection = @saved_col_connection */ ; - --- --- Table structure for table `shop_category_audit` --- - -DROP TABLE IF EXISTS `shop_category_audit`; -/*!40101 SET @saved_cs_client = @@character_set_client */; -/*!50503 SET character_set_client = utf8mb4 */; -CREATE TABLE `shop_category_audit` ( - `id_audit` int NOT NULL AUTO_INCREMENT, - `id_category` int NOT NULL, - `name_field` varchar(50) DEFAULT NULL, - `value_prev` varchar(500) DEFAULT NULL, - `value_new` varchar(500) DEFAULT NULL, - `id_change_set` int NOT NULL, - PRIMARY KEY (`id_audit`), - KEY `FK_Shop_Product_Category_Audit_id_category` (`id_category`), - KEY `FK_Shop_Product_Category_Audit_id_change_set` (`id_change_set`), - CONSTRAINT `FK_Shop_Product_Category_Audit_id_category` FOREIGN KEY (`id_category`) REFERENCES `shop_category` (`id_category`) ON UPDATE RESTRICT, - CONSTRAINT `FK_Shop_Product_Category_Audit_id_change_set` FOREIGN KEY (`id_change_set`) REFERENCES `shop_product_change_set` (`id_change_set`) -) ENGINE=InnoDB DEFAULT CHARSET=utf8mb4 COLLATE=utf8mb4_0900_ai_ci; -/*!40101 SET character_set_client = @saved_cs_client */; - --- --- Dumping data for table `shop_category_audit` --- - -LOCK TABLES `shop_category_audit` WRITE; -/*!40000 ALTER TABLE `shop_category_audit` DISABLE KEYS */; -/*!40000 ALTER TABLE `shop_category_audit` ENABLE KEYS */; -UNLOCK TABLES; - --- --- Table structure for table `shop_currency` --- - -DROP TABLE IF EXISTS `shop_currency`; -/*!40101 SET @saved_cs_client = @@character_set_client */; -/*!50503 SET character_set_client = utf8mb4 */; -CREATE TABLE `shop_currency` ( - `id_currency` int NOT NULL AUTO_INCREMENT, - `code` varchar(50) NOT NULL, - `name` varchar(255) NOT NULL, - `symbol` varchar(1) NOT NULL, - `factor_from_GBP` float NOT NULL, - `active` bit(1) NOT NULL DEFAULT b'1', - `display_order` int NOT NULL, - `created_on` datetime DEFAULT NULL, - `created_by` varchar(100) DEFAULT NULL, - `id_change_set` int DEFAULT NULL, - PRIMARY KEY (`id_currency`), - KEY `FK_Shop_Currency_id_change_set` (`id_change_set`), - CONSTRAINT `FK_Shop_Currency_id_change_set` FOREIGN KEY (`id_change_set`) REFERENCES `shop_product_change_set` (`id_change_set`) ON UPDATE RESTRICT -) ENGINE=InnoDB AUTO_INCREMENT=3 DEFAULT CHARSET=utf8mb4 COLLATE=utf8mb4_0900_ai_ci; -/*!40101 SET character_set_client = @saved_cs_client */; - --- --- Dumping data for table `shop_currency` --- - -LOCK TABLES `shop_currency` WRITE; -/*!40000 ALTER TABLE `shop_currency` DISABLE KEYS */; -INSERT INTO `shop_currency` VALUES (1,'GBP','Great British Pound','£',1,_binary '',1,'2024-04-28 19:03:07','root@localhost',NULL),(2,'EUR','Euro','€',1.17,_binary '',2,'2024-04-28 19:03:07','root@localhost',NULL); -/*!40000 ALTER TABLE `shop_currency` ENABLE KEYS */; -UNLOCK TABLES; -/*!50003 SET @saved_cs_client = @@character_set_client */ ; -/*!50003 SET @saved_cs_results = @@character_set_results */ ; -/*!50003 SET @saved_col_connection = @@collation_connection */ ; -/*!50003 SET character_set_client = utf8mb4 */ ; -/*!50003 SET character_set_results = utf8mb4 */ ; -/*!50003 SET collation_connection = utf8mb4_0900_ai_ci */ ; -/*!50003 SET @saved_sql_mode = @@sql_mode */ ; -/*!50003 SET sql_mode = 'ONLY_FULL_GROUP_BY,STRICT_TRANS_TABLES,NO_ZERO_IN_DATE,NO_ZERO_DATE,ERROR_FOR_DIVISION_BY_ZERO,NO_ENGINE_SUBSTITUTION' */ ; -DELIMITER ;;; -/*!50003 CREATE*/ /*!50017 DEFINER=`root`@`localhost`*/ /*!50003 TRIGGER `before_insert_Shop_Currency` BEFORE INSERT ON `shop_currency` FOR EACH ROW BEGIN - IF NEW.created_on <=> NULL THEN - SET NEW.created_on := IFNULL(NEW.created_on, NOW()); - END IF; - IF NEW.created_by <=> NULL THEN - SET NEW.created_by := IFNULL(NEW.created_by, IFNULL((SELECT id_user FROM Shop_User WHERE firstname = CURRENT_USER()), -1)); - END IF; -END */;; -DELIMITER ;; -/*!50003 SET sql_mode = @saved_sql_mode */ ; -/*!50003 SET character_set_client = @saved_cs_client */ ; -/*!50003 SET character_set_results = @saved_cs_results */ ; -/*!50003 SET collation_connection = @saved_col_connection */ ; -/*!50003 SET @saved_cs_client = @@character_set_client */ ; -/*!50003 SET @saved_cs_results = @@character_set_results */ ; -/*!50003 SET @saved_col_connection = @@collation_connection */ ; -/*!50003 SET character_set_client = utf8mb4 */ ; -/*!50003 SET character_set_results = utf8mb4 */ ; -/*!50003 SET collation_connection = utf8mb4_0900_ai_ci */ ; -/*!50003 SET @saved_sql_mode = @@sql_mode */ ; -/*!50003 SET sql_mode = 'ONLY_FULL_GROUP_BY,STRICT_TRANS_TABLES,NO_ZERO_IN_DATE,NO_ZERO_DATE,ERROR_FOR_DIVISION_BY_ZERO,NO_ENGINE_SUBSTITUTION' */ ; -DELIMITER ;;; -/*!50003 CREATE*/ /*!50017 DEFINER=`root`@`localhost`*/ /*!50003 TRIGGER `before_update_Shop_Currency` BEFORE UPDATE ON `shop_currency` FOR EACH ROW BEGIN - IF OLD.id_change_set <=> NEW.id_change_set THEN - SIGNAL SQLSTATE '45000' - SET MESSAGE_TEXT = 'New change Set ID must be provided.'; - END IF; - - INSERT INTO Shop_Currency_Audit ( - id_currency, - name_field, - value_prev, - value_new, - id_change_set - ) - # Changed code - SELECT NEW.id_currency, 'code', OLD.code, NEW.code, NEW.id_change_set - WHERE NOT OLD.code <=> NEW.code - UNION - # Changed name - SELECT NEW.id_currency, 'name', OLD.name, NEW.name, NEW.id_change_set - WHERE NOT OLD.name <=> NEW.name - UNION - # Changed symbol - SELECT NEW.id_currency, 'symbol', OLD.symbol, NEW.symbol, NEW.id_change_set - WHERE NOT OLD.symbol <=> NEW.symbol - UNION - # Changed ratio_2_GBP - SELECT NEW.id_currency, 'factor_from_GBP', OLD.factor_from_GBP, NEW.factor_from_GBP, NEW.id_change_set - WHERE NOT OLD.factor_from_GBP <=> NEW.factor_from_GBP - UNION - # Changed active - SELECT NEW.id_currency, 'active', CONVERT(CONVERT(OLD.active, SIGNED), CHAR), CONVERT(CONVERT(NEW.active, SIGNED), CHAR), NEW.id_change_set - WHERE NOT (OLD.active <=> NEW.active) - UNION - # Changed display_order - SELECT NEW.id_currency, 'display_order', CONVERT(display_order, CHAR), CONVERT(display_order, CHAR), NEW.id_change_set - WHERE NOT (OLD.display_order <=> NEW.display_order) - ; -END */;; -DELIMITER ;; -/*!50003 SET sql_mode = @saved_sql_mode */ ; -/*!50003 SET character_set_client = @saved_cs_client */ ; -/*!50003 SET character_set_results = @saved_cs_results */ ; -/*!50003 SET collation_connection = @saved_col_connection */ ; - --- --- Table structure for table `shop_currency_audit` --- - -DROP TABLE IF EXISTS `shop_currency_audit`; -/*!40101 SET @saved_cs_client = @@character_set_client */; -/*!50503 SET character_set_client = utf8mb4 */; -CREATE TABLE `shop_currency_audit` ( - `id_audit` int NOT NULL AUTO_INCREMENT, - `id_currency` int NOT NULL, - `name_field` varchar(50) DEFAULT NULL, - `value_prev` varchar(500) DEFAULT NULL, - `value_new` varchar(500) DEFAULT NULL, - `id_change_set` int NOT NULL, - PRIMARY KEY (`id_audit`), - KEY `FK_Shop_Currency_Audit_id_currency` (`id_currency`), - KEY `FK_Shop_Currency_Audit_id_change_set` (`id_change_set`), - CONSTRAINT `FK_Shop_Currency_Audit_id_change_set` FOREIGN KEY (`id_change_set`) REFERENCES `shop_user_change_set` (`id_change_set`) ON UPDATE RESTRICT, - CONSTRAINT `FK_Shop_Currency_Audit_id_currency` FOREIGN KEY (`id_currency`) REFERENCES `shop_currency` (`id_currency`) ON UPDATE RESTRICT -) ENGINE=InnoDB DEFAULT CHARSET=utf8mb4 COLLATE=utf8mb4_0900_ai_ci; -/*!40101 SET character_set_client = @saved_cs_client */; - --- --- Dumping data for table `shop_currency_audit` --- - -LOCK TABLES `shop_currency_audit` WRITE; -/*!40000 ALTER TABLE `shop_currency_audit` DISABLE KEYS */; -/*!40000 ALTER TABLE `shop_currency_audit` ENABLE KEYS */; -UNLOCK TABLES; - --- --- Table structure for table `shop_delivery_option` --- - -DROP TABLE IF EXISTS `shop_delivery_option`; -/*!40101 SET @saved_cs_client = @@character_set_client */; -/*!50503 SET character_set_client = utf8mb4 */; -CREATE TABLE `shop_delivery_option` ( - `id_option` int NOT NULL AUTO_INCREMENT, - `code` varchar(50) NOT NULL, - `name` varchar(100) NOT NULL, - `description` varchar(4000) DEFAULT NULL, - `latency_delivery_min` int NOT NULL, - `latency_delivery_max` int NOT NULL, - `quantity_min` int NOT NULL, - `quantity_max` int NOT NULL, - `active` bit(1) NOT NULL DEFAULT b'1', - `display_order` int NOT NULL, - `created_on` datetime DEFAULT NULL, - `created_by` varchar(100) DEFAULT NULL, - `id_change_set` int DEFAULT NULL, - PRIMARY KEY (`id_option`), - KEY `FK_Shop_Delivery_Option_Type_id_change_set` (`id_change_set`), - CONSTRAINT `FK_Shop_Delivery_Option_Type_id_change_set` FOREIGN KEY (`id_change_set`) REFERENCES `shop_product_change_set` (`id_change_set`) -) ENGINE=InnoDB AUTO_INCREMENT=3 DEFAULT CHARSET=utf8mb4 COLLATE=utf8mb4_0900_ai_ci; -/*!40101 SET character_set_client = @saved_cs_client */; - --- --- Dumping data for table `shop_delivery_option` --- - -LOCK TABLES `shop_delivery_option` WRITE; -/*!40000 ALTER TABLE `shop_delivery_option` DISABLE KEYS */; -INSERT INTO `shop_delivery_option` VALUES (1,'COLLECT','Collection',NULL,0,0,0,1,_binary '',1,'2024-04-28 19:03:07','root@localhost',NULL),(2,'SIGNED_1','First Class Signed-For',NULL,2,4,0,1,_binary '',2,'2024-04-28 19:03:07','root@localhost',NULL); -/*!40000 ALTER TABLE `shop_delivery_option` ENABLE KEYS */; -UNLOCK TABLES; -/*!50003 SET @saved_cs_client = @@character_set_client */ ; -/*!50003 SET @saved_cs_results = @@character_set_results */ ; -/*!50003 SET @saved_col_connection = @@collation_connection */ ; -/*!50003 SET character_set_client = utf8mb4 */ ; -/*!50003 SET character_set_results = utf8mb4 */ ; -/*!50003 SET collation_connection = utf8mb4_0900_ai_ci */ ; -/*!50003 SET @saved_sql_mode = @@sql_mode */ ; -/*!50003 SET sql_mode = 'ONLY_FULL_GROUP_BY,STRICT_TRANS_TABLES,NO_ZERO_IN_DATE,NO_ZERO_DATE,ERROR_FOR_DIVISION_BY_ZERO,NO_ENGINE_SUBSTITUTION' */ ; -DELIMITER ;;; -/*!50003 CREATE*/ /*!50017 DEFINER=`root`@`localhost`*/ /*!50003 TRIGGER `before_insert_Shop_Delivery_Option` BEFORE INSERT ON `shop_delivery_option` FOR EACH ROW BEGIN - SET NEW.created_on := IFNULL(NEW.created_on, NOW()); - SET NEW.created_by := IFNULL(NEW.created_by, IFNULL((SELECT id_user FROM Shop_User WHERE firstname = CURRENT_USER()), -1)); -END */;; -DELIMITER ;; -/*!50003 SET sql_mode = @saved_sql_mode */ ; -/*!50003 SET character_set_client = @saved_cs_client */ ; -/*!50003 SET character_set_results = @saved_cs_results */ ; -/*!50003 SET collation_connection = @saved_col_connection */ ; -/*!50003 SET @saved_cs_client = @@character_set_client */ ; -/*!50003 SET @saved_cs_results = @@character_set_results */ ; -/*!50003 SET @saved_col_connection = @@collation_connection */ ; -/*!50003 SET character_set_client = utf8mb4 */ ; -/*!50003 SET character_set_results = utf8mb4 */ ; -/*!50003 SET collation_connection = utf8mb4_0900_ai_ci */ ; -/*!50003 SET @saved_sql_mode = @@sql_mode */ ; -/*!50003 SET sql_mode = 'ONLY_FULL_GROUP_BY,STRICT_TRANS_TABLES,NO_ZERO_IN_DATE,NO_ZERO_DATE,ERROR_FOR_DIVISION_BY_ZERO,NO_ENGINE_SUBSTITUTION' */ ; -DELIMITER ;;; -/*!50003 CREATE*/ /*!50017 DEFINER=`root`@`localhost`*/ /*!50003 TRIGGER `before_update_Shop_Delivery_Option` BEFORE UPDATE ON `shop_delivery_option` FOR EACH ROW BEGIN - IF OLD.id_change_set <=> NEW.id_change_set THEN - SIGNAL SQLSTATE '45000' - SET MESSAGE_TEXT = 'New change Set ID must be provided.'; - END IF; - - INSERT INTO Shop_Delivery_Option_Audit ( - id_option, - name_field, - value_prev, - value_new, - id_change_set - ) - # Changed code - SELECT NEW.id_option, 'code', OLD.code, NEW.code, NEW.id_change_set - WHERE NOT OLD.code <=> NEW.code - UNION - # Changed name - SELECT NEW.id_option, 'name', OLD.name, NEW.name, NEW.id_change_set - WHERE NOT OLD.name <=> NEW.name - UNION - # Changed latency_delivery_min - SELECT NEW.id_option, 'latency_delivery_min', CONVERT(OLD.latency_delivery_min, CHAR), CONVERT(NEW.latency_delivery_min, CHAR), NEW.id_change_set - WHERE NOT OLD.latency_delivery_min <=> NEW.latency_delivery_min - UNION - # Changed latency_delivery_max - SELECT NEW.id_option, 'latency_delivery_max', CONVERT(OLD.latency_delivery_max, CHAR), CONVERT(NEW.latency_delivery_max, CHAR), NEW.id_change_set - WHERE NOT OLD.latency_delivery_max <=> NEW.latency_delivery_max - UNION - # Changed quantity_min - SELECT NEW.id_option, 'quantity_min', CONVERT(OLD.quantity_min, CHAR), CONVERT(NEW.quantity_min, CHAR), NEW.id_change_set - WHERE NOT OLD.quantity_min <=> NEW.quantity_min - UNION - # Changed quantity_max - SELECT NEW.id_option, 'quantity_max', CONVERT(OLD.quantity_max, CHAR), CONVERT(NEW.quantity_max, CHAR), NEW.id_change_set - WHERE NOT OLD.quantity_max <=> NEW.quantity_max - UNION - # Changed active - SELECT NEW.id_option, 'active', CONVERT(OLD.active, CHAR), CONVERT(NEW.active, CHAR), NEW.id_change_set - WHERE NOT OLD.active <=> NEW.active - UNION - # Changed display_order - SELECT NEW.id_option, 'display_order', CONVERT(OLD.display_order, CHAR), CONVERT(NEW.display_order, CHAR), NEW.id_change_set - WHERE NOT OLD.display_order <=> NEW.display_order - ; -END */;; -DELIMITER ;; -/*!50003 SET sql_mode = @saved_sql_mode */ ; -/*!50003 SET character_set_client = @saved_cs_client */ ; -/*!50003 SET character_set_results = @saved_cs_results */ ; -/*!50003 SET collation_connection = @saved_col_connection */ ; - --- --- Table structure for table `shop_delivery_option_audit` --- - -DROP TABLE IF EXISTS `shop_delivery_option_audit`; -/*!40101 SET @saved_cs_client = @@character_set_client */; -/*!50503 SET character_set_client = utf8mb4 */; -CREATE TABLE `shop_delivery_option_audit` ( - `id_audit` int NOT NULL AUTO_INCREMENT, - `id_option` int NOT NULL, - `name_field` varchar(50) DEFAULT NULL, - `value_prev` varchar(500) DEFAULT NULL, - `value_new` varchar(500) DEFAULT NULL, - `id_change_set` int NOT NULL, - PRIMARY KEY (`id_audit`), - KEY `FK_Shop_Delivery_Option_Audit_id_option` (`id_option`), - KEY `FK_Shop_Delivery_Option_Audit_id_change_set` (`id_change_set`), - CONSTRAINT `FK_Shop_Delivery_Option_Audit_id_change_set` FOREIGN KEY (`id_change_set`) REFERENCES `shop_product_change_set` (`id_change_set`), - CONSTRAINT `FK_Shop_Delivery_Option_Audit_id_option` FOREIGN KEY (`id_option`) REFERENCES `shop_delivery_option` (`id_option`) ON UPDATE RESTRICT -) ENGINE=InnoDB DEFAULT CHARSET=utf8mb4 COLLATE=utf8mb4_0900_ai_ci; -/*!40101 SET character_set_client = @saved_cs_client */; - --- --- Dumping data for table `shop_delivery_option_audit` --- - -LOCK TABLES `shop_delivery_option_audit` WRITE; -/*!40000 ALTER TABLE `shop_delivery_option_audit` DISABLE KEYS */; -/*!40000 ALTER TABLE `shop_delivery_option_audit` ENABLE KEYS */; -UNLOCK TABLES; - --- --- Table structure for table `shop_discount` --- - -DROP TABLE IF EXISTS `shop_discount`; -/*!40101 SET @saved_cs_client = @@character_set_client */; -/*!50503 SET character_set_client = utf8mb4 */; -CREATE TABLE `shop_discount` ( - `id_discount` int NOT NULL AUTO_INCREMENT, - `code` varchar(50) NOT NULL, - `name` varchar(200) NOT NULL, - `id_product` int NOT NULL, - `id_permutation` int DEFAULT NULL, - `multiplier` float NOT NULL DEFAULT '1', - `subtractor` float NOT NULL DEFAULT '0', - `apply_multiplier_first` bit(1) DEFAULT b'1', - `quantity_min` float NOT NULL DEFAULT '0', - `quantity_max` float NOT NULL, - `date_start` datetime NOT NULL, - `date_end` datetime NOT NULL, - `active` bit(1) NOT NULL DEFAULT b'1', - `display_order` int NOT NULL, - `created_on` datetime DEFAULT NULL, - `created_by` varchar(100) DEFAULT NULL, - `id_change_set` int DEFAULT NULL, - PRIMARY KEY (`id_discount`), - KEY `FK_Shop_Discount_id_product` (`id_product`), - KEY `FK_Shop_Discount_id_permutation` (`id_permutation`), - KEY `FK_Shop_Discount_id_change_set` (`id_change_set`), - CONSTRAINT `FK_Shop_Discount_id_change_set` FOREIGN KEY (`id_change_set`) REFERENCES `shop_product_change_set` (`id_change_set`), - CONSTRAINT `FK_Shop_Discount_id_permutation` FOREIGN KEY (`id_permutation`) REFERENCES `shop_product_permutation` (`id_permutation`) ON UPDATE RESTRICT, - CONSTRAINT `FK_Shop_Discount_id_product` FOREIGN KEY (`id_product`) REFERENCES `shop_product` (`id_product`), - CONSTRAINT `shop_discount_chk_1` CHECK ((`multiplier` > 0)) -) ENGINE=InnoDB AUTO_INCREMENT=3 DEFAULT CHARSET=utf8mb4 COLLATE=utf8mb4_0900_ai_ci; -/*!40101 SET character_set_client = @saved_cs_client */; - --- --- Dumping data for table `shop_discount` --- - -LOCK TABLES `shop_discount` WRITE; -/*!40000 ALTER TABLE `shop_discount` DISABLE KEYS */; -INSERT INTO `shop_discount` VALUES (1,'CRIMBO50','Christmas 50% off sale!',1,1,0.5,0,_binary '',3,9,'2024-04-28 19:03:07','2023-12-31 23:59:59',_binary '',1,'2024-04-28 19:03:07','root@localhost',NULL),(2,'CRIMBO50','Christmas 50% off sale!',1,2,0.5,0,_binary '',3,9,'2024-04-28 19:03:07','2023-12-31 23:59:59',_binary '',1,'2024-04-28 19:03:07','root@localhost',NULL); -/*!40000 ALTER TABLE `shop_discount` ENABLE KEYS */; -UNLOCK TABLES; -/*!50003 SET @saved_cs_client = @@character_set_client */ ; -/*!50003 SET @saved_cs_results = @@character_set_results */ ; -/*!50003 SET @saved_col_connection = @@collation_connection */ ; -/*!50003 SET character_set_client = utf8mb4 */ ; -/*!50003 SET character_set_results = utf8mb4 */ ; -/*!50003 SET collation_connection = utf8mb4_0900_ai_ci */ ; -/*!50003 SET @saved_sql_mode = @@sql_mode */ ; -/*!50003 SET sql_mode = 'ONLY_FULL_GROUP_BY,STRICT_TRANS_TABLES,NO_ZERO_IN_DATE,NO_ZERO_DATE,ERROR_FOR_DIVISION_BY_ZERO,NO_ENGINE_SUBSTITUTION' */ ; -DELIMITER ;;; -/*!50003 CREATE*/ /*!50017 DEFINER=`root`@`localhost`*/ /*!50003 TRIGGER `before_insert_Shop_Discount` BEFORE INSERT ON `shop_discount` FOR EACH ROW BEGIN - SET NEW.created_on := IFNULL(NEW.created_on, NOW()); - SET NEW.created_by := IFNULL(NEW.created_by, IFNULL((SELECT id_user FROM Shop_User WHERE firstname = CURRENT_USER()), -1)); -END */;; -DELIMITER ;; -/*!50003 SET sql_mode = @saved_sql_mode */ ; -/*!50003 SET character_set_client = @saved_cs_client */ ; -/*!50003 SET character_set_results = @saved_cs_results */ ; -/*!50003 SET collation_connection = @saved_col_connection */ ; -/*!50003 SET @saved_cs_client = @@character_set_client */ ; -/*!50003 SET @saved_cs_results = @@character_set_results */ ; -/*!50003 SET @saved_col_connection = @@collation_connection */ ; -/*!50003 SET character_set_client = utf8mb4 */ ; -/*!50003 SET character_set_results = utf8mb4 */ ; -/*!50003 SET collation_connection = utf8mb4_0900_ai_ci */ ; -/*!50003 SET @saved_sql_mode = @@sql_mode */ ; -/*!50003 SET sql_mode = 'ONLY_FULL_GROUP_BY,STRICT_TRANS_TABLES,NO_ZERO_IN_DATE,NO_ZERO_DATE,ERROR_FOR_DIVISION_BY_ZERO,NO_ENGINE_SUBSTITUTION' */ ; -DELIMITER ;;; -/*!50003 CREATE*/ /*!50017 DEFINER=`root`@`localhost`*/ /*!50003 TRIGGER `before_update_Shop_Discount` BEFORE UPDATE ON `shop_discount` FOR EACH ROW BEGIN - IF OLD.id_change_set <=> NEW.id_change_set THEN - SIGNAL SQLSTATE '45000' - SET MESSAGE_TEXT = 'New change Set ID must be provided.'; - END IF; - - INSERT INTO Shop_Discount_Audit ( - id_discount, - name_field, - value_prev, - value_new, - id_change_set - ) - # Changed code - SELECT NEW.id_discount, 'code', OLD.code, NEW.code, NEW.id_change_set - WHERE NOT OLD.code <=> NEW.code - UNION - # Changed name - SELECT NEW.id_discount, 'name', OLD.name, NEW.name, NEW.id_change_set - WHERE NOT OLD.name <=> NEW.name - UNION - # Changed multiplier - SELECT NEW.id_discount, 'multiplier', OLD.multiplier, NEW.multiplier, NEW.id_change_set - WHERE NOT OLD.multiplier <=> NEW.multiplier - UNION - # Changed subtractor - SELECT NEW.id_discount, 'subtractor', OLD.subtractor, NEW.subtractor, NEW.id_change_set - WHERE NOT OLD.subtractor <=> NEW.subtractor - UNION - # Changed apply_multiplier_first - SELECT NEW.id_discount, 'apply_multiplier_first', CONVERT(CONVERT(OLD.apply_multiplier_first, SIGNED), CHAR), CONVERT(CONVERT(NEW.apply_multiplier_first, SIGNED), CHAR), NEW.id_change_set - WHERE NOT OLD.apply_multiplier_first <=> NEW.apply_multiplier_first - UNION - # Changed quantity_min - SELECT NEW.id_discount, 'quantity_min', OLD.quantity_min, NEW.quantity_min, NEW.id_change_set - WHERE NOT OLD.quantity_min <=> NEW.quantity_min - UNION - # Changed quantity_max - SELECT NEW.id_discount, 'quantity_max', OLD.quantity_max, NEW.quantity_max, NEW.id_change_set - WHERE NOT OLD.quantity_max <=> NEW.quantity_max - UNION - # Changed date_start - SELECT NEW.id_discount, 'date_start', OLD.date_start, NEW.date_start, NEW.id_change_set - WHERE NOT OLD.date_start <=> NEW.date_start - UNION - # Changed date_end - SELECT NEW.id_discount, 'date_end', OLD.date_end, NEW.date_end, NEW.id_change_set - WHERE NOT OLD.date_end <=> NEW.date_end - UNION - # Changed display_order - SELECT NEW.id_discount, 'display_order', CONVERT(OLD.display_order, CHAR), CONVERT(NEW.display_order, CHAR), NEW.id_change_set - WHERE NOT OLD.display_order <=> NEW.display_order - UNION - # Changed active - SELECT NEW.id_discount, 'active', CONVERT(CONVERT(OLD.active, SIGNED), CHAR), CONVERT(CONVERT(NEW.active, SIGNED), CHAR), NEW.id_change_set - WHERE NOT OLD.active <=> NEW.active - ; -END */;; -DELIMITER ;; -/*!50003 SET sql_mode = @saved_sql_mode */ ; -/*!50003 SET character_set_client = @saved_cs_client */ ; -/*!50003 SET character_set_results = @saved_cs_results */ ; -/*!50003 SET collation_connection = @saved_col_connection */ ; - --- --- Table structure for table `shop_discount_audit` --- - -DROP TABLE IF EXISTS `shop_discount_audit`; -/*!40101 SET @saved_cs_client = @@character_set_client */; -/*!50503 SET character_set_client = utf8mb4 */; -CREATE TABLE `shop_discount_audit` ( - `id_audit` int NOT NULL AUTO_INCREMENT, - `id_discount` int NOT NULL, - `name_field` varchar(50) DEFAULT NULL, - `value_prev` varchar(500) DEFAULT NULL, - `value_new` varchar(500) DEFAULT NULL, - `id_change_set` int NOT NULL, - PRIMARY KEY (`id_audit`), - KEY `FK_Shop_Discount_Audit_id_discount` (`id_discount`), - KEY `FK_Shop_Discount_Audit_id_change_set` (`id_change_set`), - CONSTRAINT `FK_Shop_Discount_Audit_id_change_set` FOREIGN KEY (`id_change_set`) REFERENCES `shop_product_change_set` (`id_change_set`) ON UPDATE RESTRICT, - CONSTRAINT `FK_Shop_Discount_Audit_id_discount` FOREIGN KEY (`id_discount`) REFERENCES `shop_discount` (`id_discount`) ON UPDATE RESTRICT -) ENGINE=InnoDB DEFAULT CHARSET=utf8mb4 COLLATE=utf8mb4_0900_ai_ci; -/*!40101 SET character_set_client = @saved_cs_client */; - --- --- Dumping data for table `shop_discount_audit` --- - -LOCK TABLES `shop_discount_audit` WRITE; -/*!40000 ALTER TABLE `shop_discount_audit` DISABLE KEYS */; -/*!40000 ALTER TABLE `shop_discount_audit` ENABLE KEYS */; -UNLOCK TABLES; - --- --- Table structure for table `shop_discount_region_currency_link` --- - -DROP TABLE IF EXISTS `shop_discount_region_currency_link`; -/*!40101 SET @saved_cs_client = @@character_set_client */; -/*!50503 SET character_set_client = utf8mb4 */; -CREATE TABLE `shop_discount_region_currency_link` ( - `id_link` int NOT NULL AUTO_INCREMENT, - `id_discount` int NOT NULL, - `id_region` int NOT NULL, - `id_currency` int NOT NULL, - `active` bit(1) NOT NULL DEFAULT b'1', - `created_on` datetime DEFAULT NULL, - `created_by` varchar(100) DEFAULT NULL, - `id_change_set` int DEFAULT NULL, - PRIMARY KEY (`id_link`), - KEY `FK_Shop_Discount_Region_Currency_Link_id_discount` (`id_discount`), - KEY `FK_Shop_Discount_Region_Currency_Link_id_region` (`id_region`), - KEY `FK_Shop_Discount_Region_Currency_Link_id_currency` (`id_currency`), - KEY `FK_Shop_Discount_Region_Currency_Link_id_change_set` (`id_change_set`), - CONSTRAINT `FK_Shop_Discount_Region_Currency_Link_id_change_set` FOREIGN KEY (`id_change_set`) REFERENCES `shop_product_change_set` (`id_change_set`), - CONSTRAINT `FK_Shop_Discount_Region_Currency_Link_id_currency` FOREIGN KEY (`id_currency`) REFERENCES `shop_currency` (`id_currency`) ON UPDATE RESTRICT, - CONSTRAINT `FK_Shop_Discount_Region_Currency_Link_id_discount` FOREIGN KEY (`id_discount`) REFERENCES `shop_discount` (`id_discount`) ON UPDATE RESTRICT, - CONSTRAINT `FK_Shop_Discount_Region_Currency_Link_id_region` FOREIGN KEY (`id_region`) REFERENCES `shop_region` (`id_region`) ON UPDATE RESTRICT -) ENGINE=InnoDB AUTO_INCREMENT=5 DEFAULT CHARSET=utf8mb4 COLLATE=utf8mb4_0900_ai_ci; -/*!40101 SET character_set_client = @saved_cs_client */; - --- --- Dumping data for table `shop_discount_region_currency_link` --- - -LOCK TABLES `shop_discount_region_currency_link` WRITE; -/*!40000 ALTER TABLE `shop_discount_region_currency_link` DISABLE KEYS */; -INSERT INTO `shop_discount_region_currency_link` VALUES (1,1,1,1,_binary '','2024-04-28 19:03:07','root@localhost',NULL),(2,2,1,1,_binary '','2024-04-28 19:03:07','root@localhost',NULL),(3,1,1,2,_binary '','2024-04-28 19:03:07','root@localhost',NULL),(4,2,1,2,_binary '','2024-04-28 19:03:07','root@localhost',NULL); -/*!40000 ALTER TABLE `shop_discount_region_currency_link` ENABLE KEYS */; -UNLOCK TABLES; -/*!50003 SET @saved_cs_client = @@character_set_client */ ; -/*!50003 SET @saved_cs_results = @@character_set_results */ ; -/*!50003 SET @saved_col_connection = @@collation_connection */ ; -/*!50003 SET character_set_client = utf8mb4 */ ; -/*!50003 SET character_set_results = utf8mb4 */ ; -/*!50003 SET collation_connection = utf8mb4_0900_ai_ci */ ; -/*!50003 SET @saved_sql_mode = @@sql_mode */ ; -/*!50003 SET sql_mode = 'ONLY_FULL_GROUP_BY,STRICT_TRANS_TABLES,NO_ZERO_IN_DATE,NO_ZERO_DATE,ERROR_FOR_DIVISION_BY_ZERO,NO_ENGINE_SUBSTITUTION' */ ; -DELIMITER ;;; -/*!50003 CREATE*/ /*!50017 DEFINER=`root`@`localhost`*/ /*!50003 TRIGGER `before_insert_Shop_Discount_Region_Currency_Link` BEFORE INSERT ON `shop_discount_region_currency_link` FOR EACH ROW BEGIN - IF NEW.created_on <=> NULL THEN - SET NEW.created_on := IFNULL(NEW.created_on, NOW()); - END IF; - IF NEW.created_by <=> NULL THEN - SET NEW.created_by := IFNULL(NEW.created_by, IFNULL((SELECT id_user FROM Shop_User WHERE firstname = CURRENT_USER()), -1)); - END IF; -END */;; -DELIMITER ;; -/*!50003 SET sql_mode = @saved_sql_mode */ ; -/*!50003 SET character_set_client = @saved_cs_client */ ; -/*!50003 SET character_set_results = @saved_cs_results */ ; -/*!50003 SET collation_connection = @saved_col_connection */ ; -/*!50003 SET @saved_cs_client = @@character_set_client */ ; -/*!50003 SET @saved_cs_results = @@character_set_results */ ; -/*!50003 SET @saved_col_connection = @@collation_connection */ ; -/*!50003 SET character_set_client = utf8mb4 */ ; -/*!50003 SET character_set_results = utf8mb4 */ ; -/*!50003 SET collation_connection = utf8mb4_0900_ai_ci */ ; -/*!50003 SET @saved_sql_mode = @@sql_mode */ ; -/*!50003 SET sql_mode = 'ONLY_FULL_GROUP_BY,STRICT_TRANS_TABLES,NO_ZERO_IN_DATE,NO_ZERO_DATE,ERROR_FOR_DIVISION_BY_ZERO,NO_ENGINE_SUBSTITUTION' */ ; -DELIMITER ;;; -/*!50003 CREATE*/ /*!50017 DEFINER=`root`@`localhost`*/ /*!50003 TRIGGER `before_update_Shop_Discount_Region_Currency_Link` BEFORE UPDATE ON `shop_discount_region_currency_link` FOR EACH ROW BEGIN - IF OLD.id_change_set <=> NEW.id_change_set THEN - SIGNAL SQLSTATE '45000' - SET MESSAGE_TEXT = 'New change Set ID must be provided.'; - END IF; - - INSERT INTO Shop_Discount_Region_Currency_Link_Audit ( - id_link, - name_field, - value_prev, - value_new, - id_change_set - ) - /* - # Changed id_discount - SELECT NEW.id_link, 'id_discount', CONVERT(OLD.id_discount, CHAR), CONVERT(NEW.id_discount, CHAR), NEW.id_change_set - WHERE NOT OLD.id_discount <=> NEW.id_discount - UNION - # Changed id_region - SELECT NEW.id_link, 'id_region', CONVERT(OLD.id_region, CHAR), CONVERT(NEW.id_region, CHAR), NEW.id_change_set - WHERE NOT OLD.id_region <=> NEW.id_region - UNION - */ - # Changed active - SELECT NEW.id_link, 'active', CONVERT(CONVERT(OLD.active, SIGNED), CHAR), CONVERT(CONVERT(NEW.active, SIGNED), CHAR), NEW.id_change_set - WHERE NOT (OLD.active <=> NEW.active) - ; -END */;; -DELIMITER ;; -/*!50003 SET sql_mode = @saved_sql_mode */ ; -/*!50003 SET character_set_client = @saved_cs_client */ ; -/*!50003 SET character_set_results = @saved_cs_results */ ; -/*!50003 SET collation_connection = @saved_col_connection */ ; - --- --- Table structure for table `shop_discount_region_currency_link_audit` --- - -DROP TABLE IF EXISTS `shop_discount_region_currency_link_audit`; -/*!40101 SET @saved_cs_client = @@character_set_client */; -/*!50503 SET character_set_client = utf8mb4 */; -CREATE TABLE `shop_discount_region_currency_link_audit` ( - `id_audit` int NOT NULL AUTO_INCREMENT, - `id_link` int NOT NULL, - `name_field` varchar(50) DEFAULT NULL, - `value_prev` varchar(500) DEFAULT NULL, - `value_new` varchar(500) DEFAULT NULL, - `id_change_set` int NOT NULL, - PRIMARY KEY (`id_audit`), - KEY `FK_Shop_Discount_Region_Currency_Link_Audit_id_link` (`id_link`), - KEY `FK_Shop_Discount_Region_Currency_Link_Audit_id_change_set` (`id_change_set`), - CONSTRAINT `FK_Shop_Discount_Region_Currency_Link_Audit_id_change_set` FOREIGN KEY (`id_change_set`) REFERENCES `shop_product_change_set` (`id_change_set`) ON UPDATE RESTRICT, - CONSTRAINT `FK_Shop_Discount_Region_Currency_Link_Audit_id_link` FOREIGN KEY (`id_link`) REFERENCES `shop_discount_region_currency_link` (`id_link`) ON UPDATE RESTRICT -) ENGINE=InnoDB DEFAULT CHARSET=utf8mb4 COLLATE=utf8mb4_0900_ai_ci; -/*!40101 SET character_set_client = @saved_cs_client */; - --- --- Dumping data for table `shop_discount_region_currency_link_audit` --- - -LOCK TABLES `shop_discount_region_currency_link_audit` WRITE; -/*!40000 ALTER TABLE `shop_discount_region_currency_link_audit` DISABLE KEYS */; -/*!40000 ALTER TABLE `shop_discount_region_currency_link_audit` ENABLE KEYS */; -UNLOCK TABLES; - --- --- Table structure for table `shop_general` --- - -DROP TABLE IF EXISTS `shop_general`; -/*!40101 SET @saved_cs_client = @@character_set_client */; -/*!50503 SET character_set_client = utf8mb4 */; -CREATE TABLE `shop_general` ( - `id_general` int NOT NULL AUTO_INCREMENT, - `quantity_max` float DEFAULT NULL, - `created_on` datetime DEFAULT NULL, - `created_by` varchar(100) DEFAULT NULL, - `id_change_set` int DEFAULT NULL, - PRIMARY KEY (`id_general`), - KEY `CHK_Shop_General_id_change_set` (`id_change_set`), - CONSTRAINT `CHK_Shop_General_id_change_set` FOREIGN KEY (`id_change_set`) REFERENCES `shop_product_change_set` (`id_change_set`) -) ENGINE=InnoDB AUTO_INCREMENT=2 DEFAULT CHARSET=utf8mb4 COLLATE=utf8mb4_0900_ai_ci; -/*!40101 SET character_set_client = @saved_cs_client */; - --- --- Dumping data for table `shop_general` --- - -LOCK TABLES `shop_general` WRITE; -/*!40000 ALTER TABLE `shop_general` DISABLE KEYS */; -INSERT INTO `shop_general` VALUES (1,10,'2024-04-28 19:03:07','root@localhost',NULL); -/*!40000 ALTER TABLE `shop_general` ENABLE KEYS */; -UNLOCK TABLES; -/*!50003 SET @saved_cs_client = @@character_set_client */ ; -/*!50003 SET @saved_cs_results = @@character_set_results */ ; -/*!50003 SET @saved_col_connection = @@collation_connection */ ; -/*!50003 SET character_set_client = utf8mb4 */ ; -/*!50003 SET character_set_results = utf8mb4 */ ; -/*!50003 SET collation_connection = utf8mb4_0900_ai_ci */ ; -/*!50003 SET @saved_sql_mode = @@sql_mode */ ; -/*!50003 SET sql_mode = 'ONLY_FULL_GROUP_BY,STRICT_TRANS_TABLES,NO_ZERO_IN_DATE,NO_ZERO_DATE,ERROR_FOR_DIVISION_BY_ZERO,NO_ENGINE_SUBSTITUTION' */ ; -DELIMITER ;;; -/*!50003 CREATE*/ /*!50017 DEFINER=`root`@`localhost`*/ /*!50003 TRIGGER `before_insert_Shop_General` BEFORE INSERT ON `shop_general` FOR EACH ROW BEGIN - SET NEW.created_on := IFNULL(NEW.created_on, NOW()); - SET NEW.created_by := IFNULL(NEW.created_by, IFNULL((SELECT id_user FROM Shop_User WHERE firstname = CURRENT_USER()), -1)); -END */;; -DELIMITER ;; -/*!50003 SET sql_mode = @saved_sql_mode */ ; -/*!50003 SET character_set_client = @saved_cs_client */ ; -/*!50003 SET character_set_results = @saved_cs_results */ ; -/*!50003 SET collation_connection = @saved_col_connection */ ; -/*!50003 SET @saved_cs_client = @@character_set_client */ ; -/*!50003 SET @saved_cs_results = @@character_set_results */ ; -/*!50003 SET @saved_col_connection = @@collation_connection */ ; -/*!50003 SET character_set_client = utf8mb4 */ ; -/*!50003 SET character_set_results = utf8mb4 */ ; -/*!50003 SET collation_connection = utf8mb4_0900_ai_ci */ ; -/*!50003 SET @saved_sql_mode = @@sql_mode */ ; -/*!50003 SET sql_mode = 'ONLY_FULL_GROUP_BY,STRICT_TRANS_TABLES,NO_ZERO_IN_DATE,NO_ZERO_DATE,ERROR_FOR_DIVISION_BY_ZERO,NO_ENGINE_SUBSTITUTION' */ ; -DELIMITER ;;; -/*!50003 CREATE*/ /*!50017 DEFINER=`root`@`localhost`*/ /*!50003 TRIGGER `before_update_Shop_General` BEFORE UPDATE ON `shop_general` FOR EACH ROW BEGIN - IF OLD.id_change_set <=> NEW.id_change_set THEN - SIGNAL SQLSTATE '45000' - SET MESSAGE_TEXT = 'New change Set ID must be provided.'; - END IF; - - INSERT INTO Shop_General_Audit ( - id_general, - name_field, - value_prev, - value_new, - id_change_set - ) - # Changed quantity max - SELECT NEW.id_general, 'quantity_max', CONVERT(OLD.quantity_max, CHAR), CONVERT(NEW.quantity_max, CHAR), NEW.id_change_set - WHERE NOT OLD.quantity_max <=> NEW.quantity_max - ; -END */;; -DELIMITER ;; -/*!50003 SET sql_mode = @saved_sql_mode */ ; -/*!50003 SET character_set_client = @saved_cs_client */ ; -/*!50003 SET character_set_results = @saved_cs_results */ ; -/*!50003 SET collation_connection = @saved_col_connection */ ; - --- --- Table structure for table `shop_general_audit` --- - -DROP TABLE IF EXISTS `shop_general_audit`; -/*!40101 SET @saved_cs_client = @@character_set_client */; -/*!50503 SET character_set_client = utf8mb4 */; -CREATE TABLE `shop_general_audit` ( - `id_audit` int NOT NULL AUTO_INCREMENT, - `id_general` int NOT NULL, - `name_field` varchar(50) DEFAULT NULL, - `value_prev` varchar(500) DEFAULT NULL, - `value_new` varchar(500) DEFAULT NULL, - `id_change_set` int NOT NULL, - PRIMARY KEY (`id_audit`), - KEY `FK_Shop_General_Audit_id_general` (`id_general`), - KEY `FK_Shop_General_Audit_id_change_set` (`id_change_set`), - CONSTRAINT `FK_Shop_General_Audit_id_change_set` FOREIGN KEY (`id_change_set`) REFERENCES `shop_product_change_set` (`id_change_set`), - CONSTRAINT `FK_Shop_General_Audit_id_general` FOREIGN KEY (`id_general`) REFERENCES `shop_general` (`id_general`) ON UPDATE RESTRICT -) ENGINE=InnoDB DEFAULT CHARSET=utf8mb4 COLLATE=utf8mb4_0900_ai_ci; -/*!40101 SET character_set_client = @saved_cs_client */; - --- --- Dumping data for table `shop_general_audit` --- - -LOCK TABLES `shop_general_audit` WRITE; -/*!40000 ALTER TABLE `shop_general_audit` DISABLE KEYS */; -/*!40000 ALTER TABLE `shop_general_audit` ENABLE KEYS */; -UNLOCK TABLES; - --- --- Table structure for table `shop_image` --- - -DROP TABLE IF EXISTS `shop_image`; -/*!40101 SET @saved_cs_client = @@character_set_client */; -/*!50503 SET character_set_client = utf8mb4 */; -CREATE TABLE `shop_image` ( - `id_image` int NOT NULL AUTO_INCREMENT, - `id_type_image` int NOT NULL, - `id_type_file` int NOT NULL, - `id_product` int DEFAULT NULL, - `id_permutation` int DEFAULT NULL, - `url` varchar(255) DEFAULT NULL, - `active` bit(1) NOT NULL DEFAULT b'1', - `display_order` int NOT NULL, - `created_on` datetime DEFAULT NULL, - `created_by` varchar(100) DEFAULT NULL, - `id_change_set` int DEFAULT NULL, - PRIMARY KEY (`id_image`), - KEY `FK_Shop_Image_id_type_image` (`id_type_image`), - KEY `FK_Shop_Image_id_type_file` (`id_type_file`), - KEY `FK_Shop_Image_id_product` (`id_product`), - KEY `FK_Shop_Image_id_permutation` (`id_permutation`), - KEY `FK_Shop_Image_id_change_set` (`id_change_set`), - CONSTRAINT `FK_Shop_Image_id_change_set` FOREIGN KEY (`id_change_set`) REFERENCES `shop_product_change_set` (`id_change_set`), - CONSTRAINT `FK_Shop_Image_id_permutation` FOREIGN KEY (`id_permutation`) REFERENCES `shop_product_permutation` (`id_permutation`), - CONSTRAINT `FK_Shop_Image_id_product` FOREIGN KEY (`id_product`) REFERENCES `shop_product` (`id_product`), - CONSTRAINT `FK_Shop_Image_id_type_file` FOREIGN KEY (`id_type_file`) REFERENCES `file_type` (`id_type`), - CONSTRAINT `FK_Shop_Image_id_type_image` FOREIGN KEY (`id_type_image`) REFERENCES `shop_image_type` (`id_type`) -) ENGINE=InnoDB AUTO_INCREMENT=7 DEFAULT CHARSET=utf8mb4 COLLATE=utf8mb4_0900_ai_ci; -/*!40101 SET character_set_client = @saved_cs_client */; - --- --- Dumping data for table `shop_image` --- - -LOCK TABLES `shop_image` WRITE; -/*!40000 ALTER TABLE `shop_image` DISABLE KEYS */; -INSERT INTO `shop_image` VALUES (1,1,1,1,1,'/static/images/prod_PB0NUOSEs06ymG.jpg',_binary '',1,'2024-04-28 19:03:07','root@localhost',NULL),(2,1,1,1,2,'/static/images/prod_PB0NUOSEs06ymG.jpg',_binary '',2,'2024-04-28 19:03:07','root@localhost',NULL),(3,1,1,2,3,'/static/images/prod_PB0NUOSEs06ymG.jpg',_binary '',3,'2024-04-28 19:03:07','root@localhost',NULL),(4,1,1,3,4,'/static/images/prod_.jpg',_binary '',4,'2024-04-28 19:03:07','root@localhost',NULL),(5,1,1,4,5,'/static/images/prod_1.jpg',_binary '',5,'2024-04-28 19:03:07','root@localhost',NULL),(6,1,1,5,6,'/static/images/prod_2.jpg',_binary '',6,'2024-04-28 19:03:07','root@localhost',NULL); -/*!40000 ALTER TABLE `shop_image` ENABLE KEYS */; -UNLOCK TABLES; -/*!50003 SET @saved_cs_client = @@character_set_client */ ; -/*!50003 SET @saved_cs_results = @@character_set_results */ ; -/*!50003 SET @saved_col_connection = @@collation_connection */ ; -/*!50003 SET character_set_client = utf8mb4 */ ; -/*!50003 SET character_set_results = utf8mb4 */ ; -/*!50003 SET collation_connection = utf8mb4_0900_ai_ci */ ; -/*!50003 SET @saved_sql_mode = @@sql_mode */ ; -/*!50003 SET sql_mode = 'ONLY_FULL_GROUP_BY,STRICT_TRANS_TABLES,NO_ZERO_IN_DATE,NO_ZERO_DATE,ERROR_FOR_DIVISION_BY_ZERO,NO_ENGINE_SUBSTITUTION' */ ; -DELIMITER ;;; -/*!50003 CREATE*/ /*!50017 DEFINER=`root`@`localhost`*/ /*!50003 TRIGGER `before_insert_Shop_Image` BEFORE INSERT ON `shop_image` FOR EACH ROW BEGIN - SET NEW.created_on := IFNULL(NEW.created_on, NOW()); - SET NEW.created_by := IFNULL(NEW.created_by, IFNULL((SELECT id_user FROM Shop_User WHERE firstname = CURRENT_USER()), -1)); -END */;; -DELIMITER ;; -/*!50003 SET sql_mode = @saved_sql_mode */ ; -/*!50003 SET character_set_client = @saved_cs_client */ ; -/*!50003 SET character_set_results = @saved_cs_results */ ; -/*!50003 SET collation_connection = @saved_col_connection */ ; -/*!50003 SET @saved_cs_client = @@character_set_client */ ; -/*!50003 SET @saved_cs_results = @@character_set_results */ ; -/*!50003 SET @saved_col_connection = @@collation_connection */ ; -/*!50003 SET character_set_client = utf8mb4 */ ; -/*!50003 SET character_set_results = utf8mb4 */ ; -/*!50003 SET collation_connection = utf8mb4_0900_ai_ci */ ; -/*!50003 SET @saved_sql_mode = @@sql_mode */ ; -/*!50003 SET sql_mode = 'ONLY_FULL_GROUP_BY,STRICT_TRANS_TABLES,NO_ZERO_IN_DATE,NO_ZERO_DATE,ERROR_FOR_DIVISION_BY_ZERO,NO_ENGINE_SUBSTITUTION' */ ; -DELIMITER ;;; -/*!50003 CREATE*/ /*!50017 DEFINER=`root`@`localhost`*/ /*!50003 TRIGGER `before_update_Shop_Image` BEFORE UPDATE ON `shop_image` FOR EACH ROW BEGIN - IF OLD.id_change_set <=> NEW.id_change_set THEN - SIGNAL SQLSTATE '45000' - SET MESSAGE_TEXT = 'New change set ID must be provided.'; - END IF; - IF ISNULL(NEW.id_product) AND ISNULL(NEW.id_permutation) THEN - SIGNAL SQLSTATE '45000' - SET MESSAGE_TEXT = 'Image must NOT have ID for product AND product permutation.'; - END IF; - - INSERT INTO Shop_Image_Audit ( - id_image, - name_field, - value_prev, - value_new, - id_change_set - ) - # Changed id_type_image - SELECT NEW.id_image, 'id_type_image', CONVERT(OLD.id_type_image, CHAR), CONVERT(NEW.id_type_image, CHAR), NEW.id_change_set - WHERE NOT OLD.id_type_image <=> NEW.id_type_image - UNION - # Changed id_type_file - SELECT NEW.id_image, 'id_type_file', CONVERT(OLD.id_type_file, CHAR), CONVERT(NEW.id_type_file, CHAR), NEW.id_change_set - WHERE NOT OLD.id_type_file <=> NEW.id_type_file - UNION - # Changed id_product - SELECT NEW.id_image, 'id_product', CONVERT(OLD.id_product, CHAR), CONVERT(NEW.id_product, CHAR), NEW.id_change_set - WHERE NOT OLD.id_product <=> NEW.id_product - UNION - # Changed id_permutation - SELECT NEW.id_image, 'id_permutation', CONVERT(OLD.id_permutation, CHAR), CONVERT(NEW.id_permutation, CHAR), NEW.id_change_set - WHERE NOT OLD.id_permutation <=> NEW.id_permutation - UNION - # Changed url - SELECT NEW.id_image, 'url', OLD.url, NEW.url, NEW.id_change_set - WHERE NOT OLD.url <=> NEW.url - UNION - # Changed active - SELECT NEW.id_image, 'active', CONVERT(CONVERT(OLD.active, SIGNED), CHAR), CONVERT(CONVERT(NEW.active, SIGNED), CHAR), NEW.id_change_set - WHERE NOT (OLD.active <=> NEW.active) - UNION - # Changed display_order - SELECT NEW.id_image, 'display_order', CONVERT(OLD.display_order, CHAR), CONVERT(NEW.display_order, CHAR), NEW.id_change_set - WHERE NOT (OLD.display_order <=> NEW.display_order) - ; -END */;; -DELIMITER ;; -/*!50003 SET sql_mode = @saved_sql_mode */ ; -/*!50003 SET character_set_client = @saved_cs_client */ ; -/*!50003 SET character_set_results = @saved_cs_results */ ; -/*!50003 SET collation_connection = @saved_col_connection */ ; - --- --- Table structure for table `shop_image_audit` --- - -DROP TABLE IF EXISTS `shop_image_audit`; -/*!40101 SET @saved_cs_client = @@character_set_client */; -/*!50503 SET character_set_client = utf8mb4 */; -CREATE TABLE `shop_image_audit` ( - `id_audit` int NOT NULL AUTO_INCREMENT, - `id_image` int NOT NULL, - `name_field` varchar(50) DEFAULT NULL, - `value_prev` varchar(500) DEFAULT NULL, - `value_new` varchar(500) DEFAULT NULL, - `id_change_set` int NOT NULL, - PRIMARY KEY (`id_audit`), - KEY `FK_Shop_Image_Audit_id_image` (`id_image`), - KEY `FK_Shop_Image_Audit_id_change_set` (`id_change_set`), - CONSTRAINT `FK_Shop_Image_Audit_id_change_set` FOREIGN KEY (`id_change_set`) REFERENCES `shop_product_change_set` (`id_change_set`), - CONSTRAINT `FK_Shop_Image_Audit_id_image` FOREIGN KEY (`id_image`) REFERENCES `shop_image` (`id_image`) -) ENGINE=InnoDB DEFAULT CHARSET=utf8mb4 COLLATE=utf8mb4_0900_ai_ci; -/*!40101 SET character_set_client = @saved_cs_client */; - --- --- Dumping data for table `shop_image_audit` --- - -LOCK TABLES `shop_image_audit` WRITE; -/*!40000 ALTER TABLE `shop_image_audit` DISABLE KEYS */; -/*!40000 ALTER TABLE `shop_image_audit` ENABLE KEYS */; -UNLOCK TABLES; - --- --- Table structure for table `shop_image_type` --- - -DROP TABLE IF EXISTS `shop_image_type`; -/*!40101 SET @saved_cs_client = @@character_set_client */; -/*!50503 SET character_set_client = utf8mb4 */; -CREATE TABLE `shop_image_type` ( - `id_type` int NOT NULL AUTO_INCREMENT, - `code` varchar(50) DEFAULT NULL, - `name` varchar(255) DEFAULT NULL, - `name_plural` varchar(256) DEFAULT NULL, - `active` bit(1) NOT NULL DEFAULT b'1', - `display_order` int NOT NULL, - `created_on` datetime DEFAULT NULL, - `created_by` varchar(100) DEFAULT NULL, - `id_change_set` int DEFAULT NULL, - PRIMARY KEY (`id_type`), - KEY `FK_Shop_Image_Type_id_change_set` (`id_change_set`), - CONSTRAINT `FK_Shop_Image_Type_id_change_set` FOREIGN KEY (`id_change_set`) REFERENCES `shop_product_change_set` (`id_change_set`) -) ENGINE=InnoDB AUTO_INCREMENT=4 DEFAULT CHARSET=utf8mb4 COLLATE=utf8mb4_0900_ai_ci; -/*!40101 SET character_set_client = @saved_cs_client */; - --- --- Dumping data for table `shop_image_type` --- - -LOCK TABLES `shop_image_type` WRITE; -/*!40000 ALTER TABLE `shop_image_type` DISABLE KEYS */; -INSERT INTO `shop_image_type` VALUES (1,'FULL','Full Quality Image','Full Quality Images',_binary '',1,'2024-04-28 19:03:07','root@localhost',NULL),(2,'LOW','Low Quality Image','Low Quality Images',_binary '',2,'2024-04-28 19:03:07','root@localhost',NULL),(3,'THUMBNAIL','Thumbnail Image','Thumbnail Images',_binary '',3,'2024-04-28 19:03:07','root@localhost',NULL); -/*!40000 ALTER TABLE `shop_image_type` ENABLE KEYS */; -UNLOCK TABLES; -/*!50003 SET @saved_cs_client = @@character_set_client */ ; -/*!50003 SET @saved_cs_results = @@character_set_results */ ; -/*!50003 SET @saved_col_connection = @@collation_connection */ ; -/*!50003 SET character_set_client = utf8mb4 */ ; -/*!50003 SET character_set_results = utf8mb4 */ ; -/*!50003 SET collation_connection = utf8mb4_0900_ai_ci */ ; -/*!50003 SET @saved_sql_mode = @@sql_mode */ ; -/*!50003 SET sql_mode = 'ONLY_FULL_GROUP_BY,STRICT_TRANS_TABLES,NO_ZERO_IN_DATE,NO_ZERO_DATE,ERROR_FOR_DIVISION_BY_ZERO,NO_ENGINE_SUBSTITUTION' */ ; -DELIMITER ;;; -/*!50003 CREATE*/ /*!50017 DEFINER=`root`@`localhost`*/ /*!50003 TRIGGER `before_insert_Shop_Image_Type` BEFORE INSERT ON `shop_image_type` FOR EACH ROW BEGIN - SET NEW.created_on := IFNULL(NEW.created_on, NOW()); - SET NEW.created_by := IFNULL(NEW.created_by, IFNULL((SELECT id_user FROM Shop_User WHERE firstname = CURRENT_USER()), -1)); -END */;; -DELIMITER ;; -/*!50003 SET sql_mode = @saved_sql_mode */ ; -/*!50003 SET character_set_client = @saved_cs_client */ ; -/*!50003 SET character_set_results = @saved_cs_results */ ; -/*!50003 SET collation_connection = @saved_col_connection */ ; -/*!50003 SET @saved_cs_client = @@character_set_client */ ; -/*!50003 SET @saved_cs_results = @@character_set_results */ ; -/*!50003 SET @saved_col_connection = @@collation_connection */ ; -/*!50003 SET character_set_client = utf8mb4 */ ; -/*!50003 SET character_set_results = utf8mb4 */ ; -/*!50003 SET collation_connection = utf8mb4_0900_ai_ci */ ; -/*!50003 SET @saved_sql_mode = @@sql_mode */ ; -/*!50003 SET sql_mode = 'ONLY_FULL_GROUP_BY,STRICT_TRANS_TABLES,NO_ZERO_IN_DATE,NO_ZERO_DATE,ERROR_FOR_DIVISION_BY_ZERO,NO_ENGINE_SUBSTITUTION' */ ; -DELIMITER ;;; -/*!50003 CREATE*/ /*!50017 DEFINER=`root`@`localhost`*/ /*!50003 TRIGGER `before_update_Shop_Image_Type` BEFORE UPDATE ON `shop_image_type` FOR EACH ROW BEGIN - IF OLD.id_change_set <=> NEW.id_change_set THEN - SIGNAL SQLSTATE '45000' - SET MESSAGE_TEXT = 'New change Set ID must be provided.'; - END IF; - - INSERT INTO Shop_Image_Type_Audit ( - id_type, - name_field, - value_prev, - value_new, - id_change_set - ) - # Changed code - SELECT NEW.id_type, 'code', OLD.code, NEW.code, NEW.id_change_set - WHERE NOT OLD.code <=> NEW.code - UNION - # Changed name - SELECT NEW.id_type, 'name', OLD.name, NEW.name, NEW.id_change_set - WHERE NOT OLD.name <=> NEW.name - UNION - # Changed name_plural - SELECT NEW.id_type, 'name_plural', OLD.name_plural, NEW.name_plural, NEW.id_change_set - WHERE NOT OLD.name_plural <=> NEW.name_plural - UNION - # Changed active - SELECT NEW.id_type, 'active', CONVERT(CONVERT(OLD.active, SIGNED), CHAR), CONVERT(CONVERT(NEW.active, SIGNED), CHAR), NEW.id_change_set - WHERE NOT (OLD.active <=> NEW.active) - UNION - # Changed display_order - SELECT NEW.id_type, 'display_order', CONVERT(OLD.display_order, CHAR), CONVERT(NEW.display_order, CHAR), NEW.id_change_set - WHERE NOT (OLD.display_order <=> NEW.display_order) - ; -END */;; -DELIMITER ;; -/*!50003 SET sql_mode = @saved_sql_mode */ ; -/*!50003 SET character_set_client = @saved_cs_client */ ; -/*!50003 SET character_set_results = @saved_cs_results */ ; -/*!50003 SET collation_connection = @saved_col_connection */ ; - --- --- Table structure for table `shop_image_type_audit` --- - -DROP TABLE IF EXISTS `shop_image_type_audit`; -/*!40101 SET @saved_cs_client = @@character_set_client */; -/*!50503 SET character_set_client = utf8mb4 */; -CREATE TABLE `shop_image_type_audit` ( - `id_audit` int NOT NULL AUTO_INCREMENT, - `id_type` int NOT NULL, - `name_field` varchar(50) DEFAULT NULL, - `value_prev` varchar(500) DEFAULT NULL, - `value_new` varchar(500) DEFAULT NULL, - `id_change_set` int NOT NULL, - PRIMARY KEY (`id_audit`), - KEY `FK_Shop_Image_Type_Audit_id_type` (`id_type`), - KEY `FK_Shop_Image_Type_Audit_id_change_set` (`id_change_set`), - CONSTRAINT `FK_Shop_Image_Type_Audit_id_change_set` FOREIGN KEY (`id_change_set`) REFERENCES `shop_product_change_set` (`id_change_set`), - CONSTRAINT `FK_Shop_Image_Type_Audit_id_type` FOREIGN KEY (`id_type`) REFERENCES `shop_image_type` (`id_type`) ON UPDATE RESTRICT -) ENGINE=InnoDB DEFAULT CHARSET=utf8mb4 COLLATE=utf8mb4_0900_ai_ci; -/*!40101 SET character_set_client = @saved_cs_client */; - --- --- Dumping data for table `shop_image_type_audit` --- - -LOCK TABLES `shop_image_type_audit` WRITE; -/*!40000 ALTER TABLE `shop_image_type_audit` DISABLE KEYS */; -/*!40000 ALTER TABLE `shop_image_type_audit` ENABLE KEYS */; -UNLOCK TABLES; - --- --- Table structure for table `shop_msg_error_type` --- - -DROP TABLE IF EXISTS `shop_msg_error_type`; -/*!40101 SET @saved_cs_client = @@character_set_client */; -/*!50503 SET character_set_client = utf8mb4 */; -CREATE TABLE `shop_msg_error_type` ( - `id_type` int NOT NULL AUTO_INCREMENT, - `code` varchar(50) NOT NULL, - `name` varchar(500) NOT NULL, - `description` varchar(1000) DEFAULT NULL, - PRIMARY KEY (`id_type`) -) ENGINE=InnoDB AUTO_INCREMENT=4 DEFAULT CHARSET=utf8mb4 COLLATE=utf8mb4_0900_ai_ci; -/*!40101 SET character_set_client = @saved_cs_client */; - --- --- Dumping data for table `shop_msg_error_type` --- - -LOCK TABLES `shop_msg_error_type` WRITE; -/*!40000 ALTER TABLE `shop_msg_error_type` DISABLE KEYS */; -INSERT INTO `shop_msg_error_type` VALUES (1,'BAD_DATA','Invalid data','Rubbish data'),(2,'NO_PERMISSION','No permission','Not authorised'),(3,'PRODUCT_AVAILABILITY','Product not available','Product not available'); -/*!40000 ALTER TABLE `shop_msg_error_type` ENABLE KEYS */; -UNLOCK TABLES; - --- --- Table structure for table `shop_permission` --- - -DROP TABLE IF EXISTS `shop_permission`; -/*!40101 SET @saved_cs_client = @@character_set_client */; -/*!50503 SET character_set_client = utf8mb4 */; -CREATE TABLE `shop_permission` ( - `id_permission` int NOT NULL AUTO_INCREMENT, - `code` varchar(50) DEFAULT NULL, - `name` varchar(255) DEFAULT NULL, - `id_permission_group` int NOT NULL, - `id_access_level_required` int NOT NULL, - `active` bit(1) NOT NULL DEFAULT b'1', - `display_order` int NOT NULL, - `created_on` datetime DEFAULT NULL, - `created_by` varchar(100) DEFAULT NULL, - `id_change_set` int DEFAULT NULL, - PRIMARY KEY (`id_permission`), - KEY `FK_Shop_Permission_id_permission_group` (`id_permission_group`), - KEY `FK_Shop_Permission_id_access_level_required` (`id_access_level_required`), - KEY `FK_Shop_Permission_id_change_set` (`id_change_set`), - CONSTRAINT `FK_Shop_Permission_id_access_level_required` FOREIGN KEY (`id_access_level_required`) REFERENCES `shop_access_level` (`id_access_level`), - CONSTRAINT `FK_Shop_Permission_id_change_set` FOREIGN KEY (`id_change_set`) REFERENCES `shop_user_change_set` (`id_change_set`), - CONSTRAINT `FK_Shop_Permission_id_permission_group` FOREIGN KEY (`id_permission_group`) REFERENCES `shop_permission_group` (`id_group`) ON UPDATE RESTRICT -) ENGINE=InnoDB AUTO_INCREMENT=6 DEFAULT CHARSET=utf8mb4 COLLATE=utf8mb4_0900_ai_ci; -/*!40101 SET character_set_client = @saved_cs_client */; - --- --- Dumping data for table `shop_permission` --- - -LOCK TABLES `shop_permission` WRITE; -/*!40000 ALTER TABLE `shop_permission` DISABLE KEYS */; -INSERT INTO `shop_permission` VALUES (1,'HOME','Home Page',2,1,_binary '',1,'2024-04-28 19:03:07','root@localhost',NULL),(2,'STORE_PRODUCT','Store Product Page',3,1,_binary '',2,'2024-04-28 19:03:07','root@localhost',NULL),(3,'STORE_USER','Store User Account Page',4,2,_binary '',3,'2024-04-28 19:03:07','root@localhost',NULL),(4,'STORE_ADMIN','Store Admin Page',1,3,_binary '',4,'2024-04-28 19:03:07','root@localhost',NULL),(5,'CONTACT_US','Contact Us Page',2,1,_binary '',99,'2024-04-28 19:03:07','root@localhost',NULL); -/*!40000 ALTER TABLE `shop_permission` ENABLE KEYS */; -UNLOCK TABLES; -/*!50003 SET @saved_cs_client = @@character_set_client */ ; -/*!50003 SET @saved_cs_results = @@character_set_results */ ; -/*!50003 SET @saved_col_connection = @@collation_connection */ ; -/*!50003 SET character_set_client = utf8mb4 */ ; -/*!50003 SET character_set_results = utf8mb4 */ ; -/*!50003 SET collation_connection = utf8mb4_0900_ai_ci */ ; -/*!50003 SET @saved_sql_mode = @@sql_mode */ ; -/*!50003 SET sql_mode = 'ONLY_FULL_GROUP_BY,STRICT_TRANS_TABLES,NO_ZERO_IN_DATE,NO_ZERO_DATE,ERROR_FOR_DIVISION_BY_ZERO,NO_ENGINE_SUBSTITUTION' */ ; -DELIMITER ;;; -/*!50003 CREATE*/ /*!50017 DEFINER=`root`@`localhost`*/ /*!50003 TRIGGER `before_insert_Shop_Permission` BEFORE INSERT ON `shop_permission` FOR EACH ROW BEGIN - IF NEW.created_on <=> NULL THEN - SET NEW.created_on := IFNULL(NEW.created_on, NOW()); - END IF; - IF NEW.created_by <=> NULL THEN - SET NEW.created_by := IFNULL(NEW.created_by, IFNULL((SELECT id_user FROM Shop_User WHERE firstname = CURRENT_USER()), -1)); - END IF; -END */;; -DELIMITER ;; -/*!50003 SET sql_mode = @saved_sql_mode */ ; -/*!50003 SET character_set_client = @saved_cs_client */ ; -/*!50003 SET character_set_results = @saved_cs_results */ ; -/*!50003 SET collation_connection = @saved_col_connection */ ; -/*!50003 SET @saved_cs_client = @@character_set_client */ ; -/*!50003 SET @saved_cs_results = @@character_set_results */ ; -/*!50003 SET @saved_col_connection = @@collation_connection */ ; -/*!50003 SET character_set_client = utf8mb4 */ ; -/*!50003 SET character_set_results = utf8mb4 */ ; -/*!50003 SET collation_connection = utf8mb4_0900_ai_ci */ ; -/*!50003 SET @saved_sql_mode = @@sql_mode */ ; -/*!50003 SET sql_mode = 'ONLY_FULL_GROUP_BY,STRICT_TRANS_TABLES,NO_ZERO_IN_DATE,NO_ZERO_DATE,ERROR_FOR_DIVISION_BY_ZERO,NO_ENGINE_SUBSTITUTION' */ ; -DELIMITER ;;; -/*!50003 CREATE*/ /*!50017 DEFINER=`root`@`localhost`*/ /*!50003 TRIGGER `before_update_Shop_Permission` BEFORE UPDATE ON `shop_permission` FOR EACH ROW BEGIN - IF OLD.id_change_set <=> NEW.id_change_set THEN - SIGNAL SQLSTATE '45000' - SET MESSAGE_TEXT = 'New change Set ID must be provided.'; - END IF; - - INSERT INTO Shop_Permission_Audit ( - id_permission, - name_field, - value_prev, - value_new, - id_change_set - ) - # Changed code - SELECT NEW.id_permission, 'code', OLD.code, NEW.code, NEW.id_change_set - WHERE NOT OLD.code <=> NEW.code - UNION - # Changed name - SELECT NEW.id_permission, 'name', OLD.name, NEW.name, NEW.id_change_set - WHERE NOT OLD.name <=> NEW.name - UNION - # Changed id_permission_group - SELECT NEW.id_permission, 'id_permission_group', CONVERT(OLD.id_permission_group, CHAR), CONVERT(NEW.id_permission_group, CHAR), NEW.id_change_set - WHERE NOT OLD.id_permission_group <=> NEW.id_permission_group - UNION - # Changed Id_access_level_required - SELECT NEW.id_permission, 'Id_access_level_required', CONVERT(OLD.Id_access_level_required, CHAR), CONVERT(NEW.Id_access_level_required, CHAR), NEW.id_change_set - WHERE NOT OLD.Id_access_level_required <=> NEW.Id_access_level_required - UNION - # Changed active - SELECT NEW.id_permission, 'active', CONVERT(CONVERT(OLD.active, SIGNED), CHAR), CONVERT(CONVERT(NEW.active, SIGNED), CHAR), NEW.id_change_set - WHERE NOT (OLD.active <=> NEW.active) - UNION - # Changed display_order - SELECT NEW.id_permission, 'display_order', CONVERT(OLD.display_order, CHAR), CONVERT(NEW.display_order, CHAR), NEW.id_change_set - WHERE NOT OLD.display_order <=> NEW.display_order - ; -END */;; -DELIMITER ;; -/*!50003 SET sql_mode = @saved_sql_mode */ ; -/*!50003 SET character_set_client = @saved_cs_client */ ; -/*!50003 SET character_set_results = @saved_cs_results */ ; -/*!50003 SET collation_connection = @saved_col_connection */ ; - --- --- Table structure for table `shop_permission_audit` --- - -DROP TABLE IF EXISTS `shop_permission_audit`; -/*!40101 SET @saved_cs_client = @@character_set_client */; -/*!50503 SET character_set_client = utf8mb4 */; -CREATE TABLE `shop_permission_audit` ( - `id_audit` int NOT NULL AUTO_INCREMENT, - `id_permission` int NOT NULL, - `name_field` varchar(50) DEFAULT NULL, - `value_prev` varchar(500) DEFAULT NULL, - `value_new` varchar(500) DEFAULT NULL, - `id_change_set` int NOT NULL, - PRIMARY KEY (`id_audit`), - KEY `FK_Shop_Permission_Audit_id_permission` (`id_permission`), - KEY `FK_Shop_Permission_Audit_id_change_set` (`id_change_set`), - CONSTRAINT `FK_Shop_Permission_Audit_id_change_set` FOREIGN KEY (`id_change_set`) REFERENCES `shop_user_change_set` (`id_change_set`) ON UPDATE RESTRICT, - CONSTRAINT `FK_Shop_Permission_Audit_id_permission` FOREIGN KEY (`id_permission`) REFERENCES `shop_permission` (`id_permission`) ON UPDATE RESTRICT -) ENGINE=InnoDB DEFAULT CHARSET=utf8mb4 COLLATE=utf8mb4_0900_ai_ci; -/*!40101 SET character_set_client = @saved_cs_client */; - --- --- Dumping data for table `shop_permission_audit` --- - -LOCK TABLES `shop_permission_audit` WRITE; -/*!40000 ALTER TABLE `shop_permission_audit` DISABLE KEYS */; -/*!40000 ALTER TABLE `shop_permission_audit` ENABLE KEYS */; -UNLOCK TABLES; - --- --- Table structure for table `shop_permission_group` --- - -DROP TABLE IF EXISTS `shop_permission_group`; -/*!40101 SET @saved_cs_client = @@character_set_client */; -/*!50503 SET character_set_client = utf8mb4 */; -CREATE TABLE `shop_permission_group` ( - `id_group` int NOT NULL AUTO_INCREMENT, - `code` varchar(50) DEFAULT NULL, - `name` varchar(255) DEFAULT NULL, - `active` bit(1) NOT NULL DEFAULT b'1', - `display_order` int NOT NULL, - `created_on` datetime DEFAULT NULL, - `created_by` varchar(100) DEFAULT NULL, - `id_change_set` int DEFAULT NULL, - PRIMARY KEY (`id_group`), - KEY `FK_Shop_Permission_Group_id_change_set` (`id_change_set`), - CONSTRAINT `FK_Shop_Permission_Group_id_change_set` FOREIGN KEY (`id_change_set`) REFERENCES `shop_user_change_set` (`id_change_set`) ON UPDATE RESTRICT -) ENGINE=InnoDB AUTO_INCREMENT=5 DEFAULT CHARSET=utf8mb4 COLLATE=utf8mb4_0900_ai_ci; -/*!40101 SET character_set_client = @saved_cs_client */; - --- --- Dumping data for table `shop_permission_group` --- - -LOCK TABLES `shop_permission_group` WRITE; -/*!40000 ALTER TABLE `shop_permission_group` DISABLE KEYS */; -INSERT INTO `shop_permission_group` VALUES (1,'ADMIN','Website Admin',_binary '',0,'2024-04-28 19:03:07','root@localhost',NULL),(2,'HOME','Home, Contact Us, and other public information',_binary '',1,'2024-04-28 19:03:07','root@localhost',NULL),(3,'PRODUCT','Store Products',_binary '',2,'2024-04-28 19:03:07','root@localhost',NULL),(4,'USER','Store User',_binary '',3,'2024-04-28 19:03:07','root@localhost',NULL); -/*!40000 ALTER TABLE `shop_permission_group` ENABLE KEYS */; -UNLOCK TABLES; -/*!50003 SET @saved_cs_client = @@character_set_client */ ; -/*!50003 SET @saved_cs_results = @@character_set_results */ ; -/*!50003 SET @saved_col_connection = @@collation_connection */ ; -/*!50003 SET character_set_client = utf8mb4 */ ; -/*!50003 SET character_set_results = utf8mb4 */ ; -/*!50003 SET collation_connection = utf8mb4_0900_ai_ci */ ; -/*!50003 SET @saved_sql_mode = @@sql_mode */ ; -/*!50003 SET sql_mode = 'ONLY_FULL_GROUP_BY,STRICT_TRANS_TABLES,NO_ZERO_IN_DATE,NO_ZERO_DATE,ERROR_FOR_DIVISION_BY_ZERO,NO_ENGINE_SUBSTITUTION' */ ; -DELIMITER ;;; -/*!50003 CREATE*/ /*!50017 DEFINER=`root`@`localhost`*/ /*!50003 TRIGGER `before_insert_Shop_Permission_Group` BEFORE INSERT ON `shop_permission_group` FOR EACH ROW BEGIN - IF NEW.created_on <=> NULL THEN - SET NEW.created_on := IFNULL(NEW.created_on, NOW()); - END IF; - IF NEW.created_by <=> NULL THEN - SET NEW.created_by := IFNULL(NEW.created_by, IFNULL((SELECT id_user FROM Shop_User WHERE firstname = CURRENT_USER()), -1)); - END IF; -END */;; -DELIMITER ;; -/*!50003 SET sql_mode = @saved_sql_mode */ ; -/*!50003 SET character_set_client = @saved_cs_client */ ; -/*!50003 SET character_set_results = @saved_cs_results */ ; -/*!50003 SET collation_connection = @saved_col_connection */ ; -/*!50003 SET @saved_cs_client = @@character_set_client */ ; -/*!50003 SET @saved_cs_results = @@character_set_results */ ; -/*!50003 SET @saved_col_connection = @@collation_connection */ ; -/*!50003 SET character_set_client = utf8mb4 */ ; -/*!50003 SET character_set_results = utf8mb4 */ ; -/*!50003 SET collation_connection = utf8mb4_0900_ai_ci */ ; -/*!50003 SET @saved_sql_mode = @@sql_mode */ ; -/*!50003 SET sql_mode = 'ONLY_FULL_GROUP_BY,STRICT_TRANS_TABLES,NO_ZERO_IN_DATE,NO_ZERO_DATE,ERROR_FOR_DIVISION_BY_ZERO,NO_ENGINE_SUBSTITUTION' */ ; -DELIMITER ;;; -/*!50003 CREATE*/ /*!50017 DEFINER=`root`@`localhost`*/ /*!50003 TRIGGER `before_update_Shop_Permission_Group` BEFORE UPDATE ON `shop_permission_group` FOR EACH ROW BEGIN - IF OLD.id_change_set <=> NEW.id_change_set THEN - SIGNAL SQLSTATE '45000' - SET MESSAGE_TEXT = 'New change Set ID must be provided.'; - END IF; - - INSERT INTO Shop_Permission_Group_Audit ( - id_group, - name_field, - value_prev, - value_new, - id_change_set - ) - # Changed code - SELECT NEW.id_group, 'code', OLD.code, NEW.code, NEW.id_change_set - WHERE NOT OLD.code <=> NEW.code - UNION - # Changed name - SELECT NEW.id_group, 'name', OLD.name, NEW.name, NEW.id_change_set - WHERE NOT OLD.name <=> NEW.name - UNION - # Changed active - SELECT NEW.id_group, 'active', CONVERT(CONVERT(OLD.active, SIGNED), CHAR), CONVERT(CONVERT(NEW.active, SIGNED), CHAR), NEW.id_change_set - WHERE NOT (OLD.active <=> NEW.active) - UNION - # Changed display_order - SELECT NEW.id_group, 'display_order', CONVERT(OLD.display_order, CHAR), CONVERT(NEW.display_order, CHAR), NEW.id_change_set - WHERE NOT OLD.display_order <=> NEW.display_order - ; -END */;; -DELIMITER ;; -/*!50003 SET sql_mode = @saved_sql_mode */ ; -/*!50003 SET character_set_client = @saved_cs_client */ ; -/*!50003 SET character_set_results = @saved_cs_results */ ; -/*!50003 SET collation_connection = @saved_col_connection */ ; - --- --- Table structure for table `shop_permission_group_audit` --- - -DROP TABLE IF EXISTS `shop_permission_group_audit`; -/*!40101 SET @saved_cs_client = @@character_set_client */; -/*!50503 SET character_set_client = utf8mb4 */; -CREATE TABLE `shop_permission_group_audit` ( - `id_audit` int NOT NULL AUTO_INCREMENT, - `id_group` int NOT NULL, - `name_field` varchar(50) DEFAULT NULL, - `value_prev` varchar(500) DEFAULT NULL, - `value_new` varchar(500) DEFAULT NULL, - `id_change_set` int NOT NULL, - PRIMARY KEY (`id_audit`), - KEY `FK_Shop_Permission_Group_Audit_id_group` (`id_group`), - KEY `FK_Shop_Permission_Group_Audit_id_change_set` (`id_change_set`), - CONSTRAINT `FK_Shop_Permission_Group_Audit_id_change_set` FOREIGN KEY (`id_change_set`) REFERENCES `shop_user_change_set` (`id_change_set`) ON UPDATE RESTRICT, - CONSTRAINT `FK_Shop_Permission_Group_Audit_id_group` FOREIGN KEY (`id_group`) REFERENCES `shop_permission_group` (`id_group`) ON UPDATE RESTRICT -) ENGINE=InnoDB DEFAULT CHARSET=utf8mb4 COLLATE=utf8mb4_0900_ai_ci; -/*!40101 SET character_set_client = @saved_cs_client */; - --- --- Dumping data for table `shop_permission_group_audit` --- - -LOCK TABLES `shop_permission_group_audit` WRITE; -/*!40000 ALTER TABLE `shop_permission_group_audit` DISABLE KEYS */; -/*!40000 ALTER TABLE `shop_permission_group_audit` ENABLE KEYS */; -UNLOCK TABLES; - --- --- Table structure for table `shop_product` --- - -DROP TABLE IF EXISTS `shop_product`; -/*!40101 SET @saved_cs_client = @@character_set_client */; -/*!50503 SET character_set_client = utf8mb4 */; -CREATE TABLE `shop_product` ( - `id_product` int NOT NULL AUTO_INCREMENT, - `name` varchar(255) NOT NULL, - `id_category` int NOT NULL, - `has_variations` bit(1) NOT NULL, - `id_access_level_required` int NOT NULL, - `active` bit(1) NOT NULL DEFAULT b'1', - `display_order` int NOT NULL, - `created_on` datetime DEFAULT NULL, - `created_by` varchar(100) DEFAULT NULL, - `id_change_set` int DEFAULT NULL, - PRIMARY KEY (`id_product`), - KEY `FK_Shop_Product_id_access_level_required` (`id_access_level_required`), - KEY `FK_Shop_Product_id_change_set` (`id_change_set`), - CONSTRAINT `FK_Shop_Product_id_access_level_required` FOREIGN KEY (`id_access_level_required`) REFERENCES `shop_access_level` (`id_access_level`), - CONSTRAINT `FK_Shop_Product_id_change_set` FOREIGN KEY (`id_change_set`) REFERENCES `shop_product_change_set` (`id_change_set`) -) ENGINE=InnoDB AUTO_INCREMENT=6 DEFAULT CHARSET=utf8mb4 COLLATE=utf8mb4_0900_ai_ci; -/*!40101 SET character_set_client = @saved_cs_client */; - --- --- Dumping data for table `shop_product` --- - -LOCK TABLES `shop_product` WRITE; -/*!40000 ALTER TABLE `shop_product` DISABLE KEYS */; -INSERT INTO `shop_product` VALUES (1,'Braille Keyboard Translator',1,_binary '',3,_binary '',1,'2024-04-28 19:03:07','root@localhost',NULL),(2,'Test product 1',2,_binary '\0',3,_binary '',2,'2024-04-28 19:03:07','root@localhost',NULL),(3,'Phone',3,_binary '\0',1,_binary '',3,'2024-04-28 19:03:07','root@localhost',NULL),(4,'Laptop',3,_binary '\0',1,_binary '',4,'2024-04-28 19:03:07','root@localhost',NULL),(5,'Smart Watch',3,_binary '\0',1,_binary '',5,'2024-04-28 19:03:07','root@localhost',NULL); -/*!40000 ALTER TABLE `shop_product` ENABLE KEYS */; -UNLOCK TABLES; -/*!50003 SET @saved_cs_client = @@character_set_client */ ; -/*!50003 SET @saved_cs_results = @@character_set_results */ ; -/*!50003 SET @saved_col_connection = @@collation_connection */ ; -/*!50003 SET character_set_client = utf8mb4 */ ; -/*!50003 SET character_set_results = utf8mb4 */ ; -/*!50003 SET collation_connection = utf8mb4_0900_ai_ci */ ; -/*!50003 SET @saved_sql_mode = @@sql_mode */ ; -/*!50003 SET sql_mode = 'ONLY_FULL_GROUP_BY,STRICT_TRANS_TABLES,NO_ZERO_IN_DATE,NO_ZERO_DATE,ERROR_FOR_DIVISION_BY_ZERO,NO_ENGINE_SUBSTITUTION' */ ; -DELIMITER ;;; -/*!50003 CREATE*/ /*!50017 DEFINER=`root`@`localhost`*/ /*!50003 TRIGGER `before_insert_Shop_Product` BEFORE INSERT ON `shop_product` FOR EACH ROW BEGIN - SET NEW.created_on := IFNULL(NEW.created_on, NOW()); - SET NEW.created_by := IFNULL(NEW.created_by, IFNULL((SELECT id_user FROM Shop_User WHERE firstname = CURRENT_USER()), -1)); -END */;; -DELIMITER ;; -/*!50003 SET sql_mode = @saved_sql_mode */ ; -/*!50003 SET character_set_client = @saved_cs_client */ ; -/*!50003 SET character_set_results = @saved_cs_results */ ; -/*!50003 SET collation_connection = @saved_col_connection */ ; -/*!50003 SET @saved_cs_client = @@character_set_client */ ; -/*!50003 SET @saved_cs_results = @@character_set_results */ ; -/*!50003 SET @saved_col_connection = @@collation_connection */ ; -/*!50003 SET character_set_client = utf8mb4 */ ; -/*!50003 SET character_set_results = utf8mb4 */ ; -/*!50003 SET collation_connection = utf8mb4_0900_ai_ci */ ; -/*!50003 SET @saved_sql_mode = @@sql_mode */ ; -/*!50003 SET sql_mode = 'ONLY_FULL_GROUP_BY,STRICT_TRANS_TABLES,NO_ZERO_IN_DATE,NO_ZERO_DATE,ERROR_FOR_DIVISION_BY_ZERO,NO_ENGINE_SUBSTITUTION' */ ; -DELIMITER ;;; -/*!50003 CREATE*/ /*!50017 DEFINER=`root`@`localhost`*/ /*!50003 TRIGGER `before_update_Shop_Product` BEFORE UPDATE ON `shop_product` FOR EACH ROW BEGIN - IF OLD.id_change_set <=> NEW.id_change_set THEN - SIGNAL SQLSTATE '45000' - SET MESSAGE_TEXT = 'New change Set ID must be provided.'; - END IF; - /* - IF NOT NEW.has_variations THEN - IF ISNULL(NEW.price_GBP_full) THEN - SIGNAL SQLSTATE '45000' - SET MESSAGE_TEXT = 'Product must have price or variations (with prices).'; - END IF; - IF ISNULL(NEW.price_GBP_min) THEN - SIGNAL SQLSTATE '45000' - SET MESSAGE_TEXT = 'Product must have minimum price or variations (with prices).'; - END IF; - IF ISNULL(NEW.latency_manuf) THEN - SIGNAL SQLSTATE '45000' - SET MESSAGE_TEXT = 'Product must have manufacturing latency or variations (with manufacturing latencies).'; - END IF; - IF ISNULL(NEW.quantity_min) THEN - SIGNAL SQLSTATE '45000' - SET MESSAGE_TEXT = 'Product must have minimum quantity or variations (with minimum quantities).'; - END IF; - IF ISNULL(NEW.quantity_max) THEN - SIGNAL SQLSTATE '45000' - SET MESSAGE_TEXT = 'Product must have maximum quantity or variations (with maximum quantities).'; - END IF; - IF ISNULL(NEW.quantity_step) THEN - SIGNAL SQLSTATE '45000' - SET MESSAGE_TEXT = 'Product must have increment of quantity or variations (with increments of quantities).'; - END IF; - IF ISNULL(NEW.quantity_stock) THEN - SIGNAL SQLSTATE '45000' - SET MESSAGE_TEXT = 'Product must have stock quantity or variations (with stock quantities).'; - END IF; - IF ISNULL(NEW.is_subscription) THEN - SIGNAL SQLSTATE '45000' - SET MESSAGE_TEXT = 'Product must have subscription status or variations (with subscription statuses).'; - END IF; - IF ISNULL(NEW.id_unit_measurement_interval_recurrence) THEN - SIGNAL SQLSTATE '45000' - SET MESSAGE_TEXT = 'Product must have recurrence interval or variations (with recurrence intervals).'; - END IF; - IF ISNULL(NEW.count_interval_recurrence) THEN - SIGNAL SQLSTATE '45000' - SET MESSAGE_TEXT = 'Product must have recurrence interval count or variations (with recurrence interval counts).'; - END IF; - END IF; - */ - - INSERT INTO Shop_Product_Audit ( - id_product, - name_field, - value_prev, - value_new, - id_change_set - ) - # Changed name - SELECT NEW.id_product, 'name', OLD.name, NEW.name, NEW.id_change_set - WHERE NOT OLD.name <=> NEW.name - /* - UNION - # Changed description - SELECT NEW.id_product, 'description', OLD.description, NEW.description, NEW.id_change_set - WHERE NOT OLD.description <=> NEW.description - UNION - # Changed price_GBP_full - SELECT NEW.id_product, 'price_GBP_full', CONVERT(OLD.price_GBP_full, CHAR), CONVERT(NEW.price_GBP_full, CHAR), NEW.id_change_set - WHERE NOT OLD.price_GBP_full <=> NEW.price_GBP_full - UNION - # Changed price_GBP_min - SELECT NEW.id_product, 'price_GBP_min', CONVERT(OLD.price_GBP_min, CHAR), CONVERT(NEW.price_GBP_min, CHAR), NEW.id_change_set - WHERE NOT OLD.price_GBP_min <=> NEW.price_GBP_min - UNION - # Changed has_variations - SELECT NEW.id_product, 'has_variations', CONVERT(CONVERT(NEW.has_variations, SIGNED), CHAR), CONVERT(CONVERT(NEW.has_variations, SIGNED), CHAR), NEW.id_change_set - WHERE NOT OLD.has_variations <=> NEW.has_variations - UNION - /* - # Changed discount - SELECT NEW.id_product, 'discount', CONVERT(OLD.discount, CHAR), CONVERT(NEW.discount, CHAR), NEW.id_change_set - WHERE NOT OLD.discount <=> NEW.discount - */ - UNION - # Changed id_category - SELECT NEW.id_product, 'id_category', CONVERT(OLD.id_category, CHAR), CONVERT(NEW.id_category, CHAR), NEW.id_change_set - WHERE NOT OLD.id_category <=> NEW.id_category - /* - UNION - # Changed latency_manuf - SELECT NEW.id_product, 'latency_manuf', CONVERT(OLD.latency_manuf, CHAR), CONVERT(NEW.latency_manuf, CHAR), NEW.id_change_set - WHERE NOT OLD.latency_manuf <=> NEW.latency_manuf - UNION - # Changed quantity_min - SELECT NEW.id_product, 'quantity_min', CONVERT(OLD.quantity_min, CHAR), CONVERT(NEW.quantity_min, CHAR), NEW.id_change_set - WHERE NOT OLD.quantity_min <=> NEW.quantity_min - UNION - # Changed quantity_max - SELECT NEW.id_product, 'quantity_max', CONVERT(OLD.quantity_max, CHAR), CONVERT(NEW.quantity_max, CHAR), NEW.id_change_set - WHERE NOT OLD.quantity_max <=> NEW.quantity_max - UNION - # Changed quantity_step - SELECT NEW.id_product, 'quantity_step', CONVERT(OLD.quantity_step, CHAR), CONVERT(NEW.quantity_step, CHAR), NEW.id_change_set - WHERE NOT OLD.quantity_step <=> NEW.quantity_step - UNION - # Changed quantity_stock - SELECT NEW.id_product, 'quantity_stock', CONVERT(OLD.quantity_stock, CHAR), CONVERT(NEW.quantity_stock, CHAR), NEW.id_change_set - WHERE NOT OLD.quantity_stock <=> NEW.quantity_stock - UNION - # Changed is_subscription - SELECT NEW.id_product, 'is_subscription', CONVERT(CONVERT(OLD.is_subscription, SIGNED), CHAR), CONVERT(CONVERT(NEW.is_subscription, SIGNED), CHAR), NEW.id_change_set - WHERE NOT OLD.is_subscription <=> NEW.is_subscription - UNION - # Changed id_unit_measurement_interval_recurrence - SELECT NEW.id_product, 'id_unit_measurement_interval_recurrence', CONVERT(OLD.id_unit_measurement_interval_recurrence, CHAR), CONVERT(NEW.id_unit_measurement_interval_recurrence, CHAR), NEW.id_change_set - WHERE NOT OLD.id_unit_measurement_interval_recurrence <=> NEW.id_unit_measurement_interval_recurrence - UNION - # Changed count_interval_recurrence - SELECT NEW.id_product, 'count_interval_recurrence', CONVERT(OLD.count_interval_recurrence, CHAR), CONVERT(NEW.count_interval_recurrence, CHAR), NEW.id_change_set - WHERE NOT OLD.count_interval_recurrence <=> NEW.count_interval_recurrence - UNION - # Changed id_access_level_required - SELECT NEW.id_product, 'id_access_level_required', CONVERT(OLD.id_access_level_required, CHAR), CONVERT(NEW.id_access_level_required, CHAR), NEW.id_change_set - WHERE NOT OLD.id_access_level_required <=> NEW.id_access_level_required - UNION - # Changed id_stripe_product - SELECT NEW.id_product, 'id_stripe_product', OLD.id_stripe_product, NEW.id_stripe_product, NEW.id_change_set - WHERE NOT OLD.id_stripe_product <=> NEW.id_stripe_product - /* - UNION - # Changed id_stripe_price - SELECT NEW.id_product, 'id_stripe_price', OLD.id_stripe_price, NEW.id_stripe_price, NEW.id_change_set - WHERE NOT OLD.id_stripe_price <=> NEW.id_stripe_price - */ - UNION - # Changed active - SELECT NEW.id_product, 'active', CONVERT(CONVERT(OLD.active, SIGNED), CHAR), CONVERT(CONVERT(NEW.active, SIGNED), CHAR), NEW.id_change_set - WHERE NOT (OLD.active <=> NEW.active) - UNION - # Changed display_order - SELECT NEW.id_product, 'display_order', CONVERT(OLD.display_order, CHAR), CONVERT(NEW.display_order, CHAR), NEW.id_change_set - WHERE NOT OLD.display_order <=> NEW.display_order - ; -END */;; -DELIMITER ;; -/*!50003 SET sql_mode = @saved_sql_mode */ ; -/*!50003 SET character_set_client = @saved_cs_client */ ; -/*!50003 SET character_set_results = @saved_cs_results */ ; -/*!50003 SET collation_connection = @saved_col_connection */ ; - --- --- Table structure for table `shop_product_audit` --- - -DROP TABLE IF EXISTS `shop_product_audit`; -/*!40101 SET @saved_cs_client = @@character_set_client */; -/*!50503 SET character_set_client = utf8mb4 */; -CREATE TABLE `shop_product_audit` ( - `id_audit` int NOT NULL AUTO_INCREMENT, - `id_product` int NOT NULL, - `name_field` varchar(50) DEFAULT NULL, - `value_prev` varchar(500) DEFAULT NULL, - `value_new` varchar(500) DEFAULT NULL, - `id_change_set` int NOT NULL, - PRIMARY KEY (`id_audit`), - KEY `FK_Shop_Product_Audit_id_product` (`id_product`), - KEY `FK_Shop_Product_Audit_id_change_set` (`id_change_set`), - CONSTRAINT `FK_Shop_Product_Audit_id_change_set` FOREIGN KEY (`id_change_set`) REFERENCES `shop_product_change_set` (`id_change_set`), - CONSTRAINT `FK_Shop_Product_Audit_id_product` FOREIGN KEY (`id_product`) REFERENCES `shop_product` (`id_product`) ON UPDATE RESTRICT -) ENGINE=InnoDB DEFAULT CHARSET=utf8mb4 COLLATE=utf8mb4_0900_ai_ci; -/*!40101 SET character_set_client = @saved_cs_client */; - --- --- Dumping data for table `shop_product_audit` --- - -LOCK TABLES `shop_product_audit` WRITE; -/*!40000 ALTER TABLE `shop_product_audit` DISABLE KEYS */; -/*!40000 ALTER TABLE `shop_product_audit` ENABLE KEYS */; -UNLOCK TABLES; - --- --- Table structure for table `shop_product_change_set` --- - -DROP TABLE IF EXISTS `shop_product_change_set`; -/*!40101 SET @saved_cs_client = @@character_set_client */; -/*!50503 SET character_set_client = utf8mb4 */; -CREATE TABLE `shop_product_change_set` ( - `id_change_set` int NOT NULL AUTO_INCREMENT, - `comment` varchar(500) DEFAULT NULL, - `updated_last_on` datetime DEFAULT NULL, - `updated_last_by` varchar(100) DEFAULT NULL, - PRIMARY KEY (`id_change_set`) -) ENGINE=InnoDB DEFAULT CHARSET=utf8mb4 COLLATE=utf8mb4_0900_ai_ci; -/*!40101 SET character_set_client = @saved_cs_client */; - --- --- Dumping data for table `shop_product_change_set` --- - -LOCK TABLES `shop_product_change_set` WRITE; -/*!40000 ALTER TABLE `shop_product_change_set` DISABLE KEYS */; -/*!40000 ALTER TABLE `shop_product_change_set` ENABLE KEYS */; -UNLOCK TABLES; -/*!50003 SET @saved_cs_client = @@character_set_client */ ; -/*!50003 SET @saved_cs_results = @@character_set_results */ ; -/*!50003 SET @saved_col_connection = @@collation_connection */ ; -/*!50003 SET character_set_client = utf8mb4 */ ; -/*!50003 SET character_set_results = utf8mb4 */ ; -/*!50003 SET collation_connection = utf8mb4_0900_ai_ci */ ; -/*!50003 SET @saved_sql_mode = @@sql_mode */ ; -/*!50003 SET sql_mode = 'ONLY_FULL_GROUP_BY,STRICT_TRANS_TABLES,NO_ZERO_IN_DATE,NO_ZERO_DATE,ERROR_FOR_DIVISION_BY_ZERO,NO_ENGINE_SUBSTITUTION' */ ; -DELIMITER ;;; -/*!50003 CREATE*/ /*!50017 DEFINER=`root`@`localhost`*/ /*!50003 TRIGGER `before_insert_Shop_Product_Change_Set` BEFORE INSERT ON `shop_product_change_set` FOR EACH ROW BEGIN - IF NEW.updated_last_on <=> NULL THEN - SET NEW.updated_last_on = NOW(); - END IF; - IF NEW.updated_last_by <=> NULL THEN - SET NEW.updated_last_by = CURRENT_USER(); - END IF; -END */;; -DELIMITER ;; -/*!50003 SET sql_mode = @saved_sql_mode */ ; -/*!50003 SET character_set_client = @saved_cs_client */ ; -/*!50003 SET character_set_results = @saved_cs_results */ ; -/*!50003 SET collation_connection = @saved_col_connection */ ; - --- --- Table structure for table `shop_product_currency_link` --- - -DROP TABLE IF EXISTS `shop_product_currency_link`; -/*!40101 SET @saved_cs_client = @@character_set_client */; -/*!50503 SET character_set_client = utf8mb4 */; -CREATE TABLE `shop_product_currency_link` ( - `id_link` int NOT NULL AUTO_INCREMENT, - `id_product` int NOT NULL, - `id_permutation` int DEFAULT NULL, - `id_currency` int NOT NULL, - `id_region_purchase` int NOT NULL, - `price_local_VAT_incl` float DEFAULT NULL, - `price_local_VAT_excl` float DEFAULT NULL, - `id_stripe_price` varchar(200) DEFAULT NULL, - `active` bit(1) NOT NULL DEFAULT b'1', - `created_on` datetime DEFAULT NULL, - `created_by` varchar(100) DEFAULT NULL, - `id_change_set` int DEFAULT NULL, - PRIMARY KEY (`id_link`), - KEY `FK_Shop_Product_Currency_Link_id_product` (`id_product`), - KEY `FK_Shop_Product_Currency_Link_id_permutation` (`id_permutation`), - KEY `FK_Shop_Product_Currency_Link_id_currency` (`id_currency`), - KEY `FK_Shop_Product_Currency_Link_id_region_purchase` (`id_region_purchase`), - KEY `FK_Shop_Product_Currency_Link_id_change_set` (`id_change_set`), - CONSTRAINT `FK_Shop_Product_Currency_Link_id_change_set` FOREIGN KEY (`id_change_set`) REFERENCES `shop_product_change_set` (`id_change_set`), - CONSTRAINT `FK_Shop_Product_Currency_Link_id_currency` FOREIGN KEY (`id_currency`) REFERENCES `shop_currency` (`id_currency`) ON UPDATE RESTRICT, - CONSTRAINT `FK_Shop_Product_Currency_Link_id_permutation` FOREIGN KEY (`id_permutation`) REFERENCES `shop_product_permutation` (`id_permutation`) ON UPDATE RESTRICT, - CONSTRAINT `FK_Shop_Product_Currency_Link_id_product` FOREIGN KEY (`id_product`) REFERENCES `shop_product` (`id_product`) ON UPDATE RESTRICT, - CONSTRAINT `FK_Shop_Product_Currency_Link_id_region_purchase` FOREIGN KEY (`id_region_purchase`) REFERENCES `shop_region` (`id_region`) ON UPDATE RESTRICT -) ENGINE=InnoDB DEFAULT CHARSET=utf8mb4 COLLATE=utf8mb4_0900_ai_ci; -/*!40101 SET character_set_client = @saved_cs_client */; - --- --- Dumping data for table `shop_product_currency_link` --- - -LOCK TABLES `shop_product_currency_link` WRITE; -/*!40000 ALTER TABLE `shop_product_currency_link` DISABLE KEYS */; -/*!40000 ALTER TABLE `shop_product_currency_link` ENABLE KEYS */; -UNLOCK TABLES; -/*!50003 SET @saved_cs_client = @@character_set_client */ ; -/*!50003 SET @saved_cs_results = @@character_set_results */ ; -/*!50003 SET @saved_col_connection = @@collation_connection */ ; -/*!50003 SET character_set_client = utf8mb4 */ ; -/*!50003 SET character_set_results = utf8mb4 */ ; -/*!50003 SET collation_connection = utf8mb4_0900_ai_ci */ ; -/*!50003 SET @saved_sql_mode = @@sql_mode */ ; -/*!50003 SET sql_mode = 'ONLY_FULL_GROUP_BY,STRICT_TRANS_TABLES,NO_ZERO_IN_DATE,NO_ZERO_DATE,ERROR_FOR_DIVISION_BY_ZERO,NO_ENGINE_SUBSTITUTION' */ ; -DELIMITER ;;; -/*!50003 CREATE*/ /*!50017 DEFINER=`root`@`localhost`*/ /*!50003 TRIGGER `before_insert_Shop_Product_Currency_Link` BEFORE INSERT ON `shop_product_currency_link` FOR EACH ROW BEGIN - IF NEW.created_on <=> NULL THEN - SET NEW.created_on := IFNULL(NEW.created_on, NOW()); - END IF; - IF NEW.created_by <=> NULL THEN - SET NEW.created_by := IFNULL(NEW.created_by, IFNULL((SELECT id_user FROM Shop_User WHERE firstname = CURRENT_USER()), -1)); - END IF; - /* - SET NEW.price_local = ( - SELECT PP.price_GBP_full * C.factor_from_GBP - FROM Shop_Product_Permutation PP - INNER JOIN Shop_Product P ON PP.id_product = P.id_product - INNER JOIN Shop_Currency C ON NEW.id_currency = C.id_currency - WHERE NEW.id_product = P.id_product - LIMIT 1 - ); - */ -END */;; -DELIMITER ;; -/*!50003 SET sql_mode = @saved_sql_mode */ ; -/*!50003 SET character_set_client = @saved_cs_client */ ; -/*!50003 SET character_set_results = @saved_cs_results */ ; -/*!50003 SET collation_connection = @saved_col_connection */ ; -/*!50003 SET @saved_cs_client = @@character_set_client */ ; -/*!50003 SET @saved_cs_results = @@character_set_results */ ; -/*!50003 SET @saved_col_connection = @@collation_connection */ ; -/*!50003 SET character_set_client = utf8mb4 */ ; -/*!50003 SET character_set_results = utf8mb4 */ ; -/*!50003 SET collation_connection = utf8mb4_0900_ai_ci */ ; -/*!50003 SET @saved_sql_mode = @@sql_mode */ ; -/*!50003 SET sql_mode = 'ONLY_FULL_GROUP_BY,STRICT_TRANS_TABLES,NO_ZERO_IN_DATE,NO_ZERO_DATE,ERROR_FOR_DIVISION_BY_ZERO,NO_ENGINE_SUBSTITUTION' */ ; -DELIMITER ;;; -/*!50003 CREATE*/ /*!50017 DEFINER=`root`@`localhost`*/ /*!50003 TRIGGER `before_update_Shop_Product_Currency_Link` BEFORE UPDATE ON `shop_product_currency_link` FOR EACH ROW BEGIN - IF OLD.id_change_set <=> NEW.id_change_set THEN - SIGNAL SQLSTATE '45000' - SET MESSAGE_TEXT = 'New change Set ID must be provided.'; - END IF; - - /* - SET NEW.price_local = ( - SELECT P.price_GBP_full * C.factor_from_GBP - FROM Shop_Product P - INNER JOIN Shop_Currency C ON NEW.id_currency = C.id_currency - WHERE NEW.id_product = P.id_product - LIMIT 1 - ); - */ - - INSERT INTO Shop_Product_Currency_Link_Audit ( - id_link, - name_field, - value_prev, - value_new, - id_change_set - ) - /* - # Changed id_product - SELECT NEW.id_link, 'id_product', CONVERT(OLD.id_product, CHAR), CONVERT(NEW.id_product, CHAR), NEW.id_change_set - WHERE NOT OLD.id_product <=> NEW.id_product - UNION - # Changed id_currency - SELECT NEW.id_link, 'id_currency', CONVERT(OLD.id_currency, CHAR), CONVERT(NEW.id_currency, CHAR), NEW.id_change_set - WHERE NOT OLD.id_currency <=> NEW.id_currency - UNION - # Changed price_local - SELECT NEW.id_link, 'price_local', OLD.price_local, NEW.price_local, NEW.id_change_set - WHERE NOT OLD.price_local <=> NEW.price_local - UNION - */ - # Changed price_local_VAT_incl - SELECT NEW.id_link, 'price_local_VAT_incl', OLD.price_local_VAT_incl, NEW.price_local_VAT_incl, NEW.id_change_set - WHERE NOT OLD.price_local_VAT_incl <=> NEW.price_local_VAT_incl - UNION - # Changed price_local_VAT_excl - SELECT NEW.id_link, 'price_local_VAT_excl', OLD.price_local_VAT_excl, NEW.price_local_VAT_excl, NEW.id_change_set - WHERE NOT OLD.price_local_VAT_excl <=> NEW.price_local_VAT_excl - UNION - # Changed id_stripe_price - SELECT NEW.id_link, 'id_stripe_price', OLD.id_stripe_price, NEW.id_stripe_price, NEW.id_change_set - WHERE NOT OLD.id_stripe_price <=> NEW.id_stripe_price - UNION - # Changed active - SELECT NEW.id_link, 'active', CONVERT(CONVERT(OLD.active, SIGNED), CHAR), CONVERT(CONVERT(NEW.active, SIGNED), CHAR), NEW.id_change_set - WHERE NOT (OLD.active <=> NEW.active) - ; -END */;; -DELIMITER ;; -/*!50003 SET sql_mode = @saved_sql_mode */ ; -/*!50003 SET character_set_client = @saved_cs_client */ ; -/*!50003 SET character_set_results = @saved_cs_results */ ; -/*!50003 SET collation_connection = @saved_col_connection */ ; - --- --- Table structure for table `shop_product_currency_link_audit` --- - -DROP TABLE IF EXISTS `shop_product_currency_link_audit`; -/*!40101 SET @saved_cs_client = @@character_set_client */; -/*!50503 SET character_set_client = utf8mb4 */; -CREATE TABLE `shop_product_currency_link_audit` ( - `id_audit` int NOT NULL AUTO_INCREMENT, - `id_link` int NOT NULL, - `name_field` varchar(50) DEFAULT NULL, - `value_prev` varchar(500) DEFAULT NULL, - `value_new` varchar(500) DEFAULT NULL, - `id_change_set` int NOT NULL, - PRIMARY KEY (`id_audit`), - KEY `FK_Shop_Product_Currency_Link_Audit_id_link` (`id_link`), - KEY `FK_Shop_Product_Currency_Link_Audit_id_change_set` (`id_change_set`), - CONSTRAINT `FK_Shop_Product_Currency_Link_Audit_id_change_set` FOREIGN KEY (`id_change_set`) REFERENCES `shop_product_change_set` (`id_change_set`), - CONSTRAINT `FK_Shop_Product_Currency_Link_Audit_id_link` FOREIGN KEY (`id_link`) REFERENCES `shop_product_currency_link` (`id_link`) ON UPDATE RESTRICT -) ENGINE=InnoDB DEFAULT CHARSET=utf8mb4 COLLATE=utf8mb4_0900_ai_ci; -/*!40101 SET character_set_client = @saved_cs_client */; - --- --- Dumping data for table `shop_product_currency_link_audit` --- - -LOCK TABLES `shop_product_currency_link_audit` WRITE; -/*!40000 ALTER TABLE `shop_product_currency_link_audit` DISABLE KEYS */; -/*!40000 ALTER TABLE `shop_product_currency_link_audit` ENABLE KEYS */; -UNLOCK TABLES; - --- --- Table structure for table `shop_product_currency_region_link` --- - -DROP TABLE IF EXISTS `shop_product_currency_region_link`; -/*!40101 SET @saved_cs_client = @@character_set_client */; -/*!50503 SET character_set_client = utf8mb4 */; -CREATE TABLE `shop_product_currency_region_link` ( - `id_link` int NOT NULL AUTO_INCREMENT, - `id_product` int NOT NULL, - `id_permutation` int DEFAULT NULL, - `id_currency` int NOT NULL, - `id_region_purchase` int NOT NULL, - `price_local_VAT_incl` float DEFAULT NULL, - `price_local_VAT_excl` float DEFAULT NULL, - `id_stripe_price` varchar(200) DEFAULT NULL, - `active` bit(1) NOT NULL DEFAULT b'1', - `created_on` datetime DEFAULT NULL, - `created_by` varchar(100) DEFAULT NULL, - `id_change_set` int DEFAULT NULL, - PRIMARY KEY (`id_link`), - KEY `FK_Shop_Product_Currency_Region_Link_id_product` (`id_product`), - KEY `FK_Shop_Product_Currency_Region_Link_id_permutation` (`id_permutation`), - KEY `FK_Shop_Product_Currency_Region_Link_id_currency` (`id_currency`), - KEY `FK_Shop_Product_Currency_Region_Link_id_region_purchase` (`id_region_purchase`), - KEY `FK_Shop_Product_Currency_Region_Link_id_change_set` (`id_change_set`), - CONSTRAINT `FK_Shop_Product_Currency_Region_Link_id_change_set` FOREIGN KEY (`id_change_set`) REFERENCES `shop_product_change_set` (`id_change_set`), - CONSTRAINT `FK_Shop_Product_Currency_Region_Link_id_currency` FOREIGN KEY (`id_currency`) REFERENCES `shop_currency` (`id_currency`) ON UPDATE RESTRICT, - CONSTRAINT `FK_Shop_Product_Currency_Region_Link_id_permutation` FOREIGN KEY (`id_permutation`) REFERENCES `shop_product_permutation` (`id_permutation`) ON UPDATE RESTRICT, - CONSTRAINT `FK_Shop_Product_Currency_Region_Link_id_product` FOREIGN KEY (`id_product`) REFERENCES `shop_product` (`id_product`) ON UPDATE RESTRICT, - CONSTRAINT `FK_Shop_Product_Currency_Region_Link_id_region_purchase` FOREIGN KEY (`id_region_purchase`) REFERENCES `shop_region` (`id_region`) ON UPDATE RESTRICT -) ENGINE=InnoDB AUTO_INCREMENT=8 DEFAULT CHARSET=utf8mb4 COLLATE=utf8mb4_0900_ai_ci; -/*!40101 SET character_set_client = @saved_cs_client */; - --- --- Dumping data for table `shop_product_currency_region_link` --- - -LOCK TABLES `shop_product_currency_region_link` WRITE; -/*!40000 ALTER TABLE `shop_product_currency_region_link` DISABLE KEYS */; -INSERT INTO `shop_product_currency_region_link` VALUES (1,1,1,1,1,24,20,NULL,_binary '','2024-04-28 19:03:07','root@localhost',NULL),(2,1,1,2,1,48,40,NULL,_binary '','2024-04-28 19:03:07','root@localhost',NULL),(3,1,2,1,1,96,80,NULL,_binary '','2024-04-28 19:03:07','root@localhost',NULL),(4,2,3,1,1,144,120,NULL,_binary '','2024-04-28 19:03:07','root@localhost',NULL),(5,3,4,1,1,600,500,NULL,_binary '','2024-04-28 19:03:07','root@localhost',NULL),(6,4,5,1,1,1500,1200,NULL,_binary '','2024-04-28 19:03:07','root@localhost',NULL),(7,5,6,1,1,180,150,NULL,_binary '','2024-04-28 19:03:07','root@localhost',NULL); -/*!40000 ALTER TABLE `shop_product_currency_region_link` ENABLE KEYS */; -UNLOCK TABLES; -/*!50003 SET @saved_cs_client = @@character_set_client */ ; -/*!50003 SET @saved_cs_results = @@character_set_results */ ; -/*!50003 SET @saved_col_connection = @@collation_connection */ ; -/*!50003 SET character_set_client = utf8mb4 */ ; -/*!50003 SET character_set_results = utf8mb4 */ ; -/*!50003 SET collation_connection = utf8mb4_0900_ai_ci */ ; -/*!50003 SET @saved_sql_mode = @@sql_mode */ ; -/*!50003 SET sql_mode = 'ONLY_FULL_GROUP_BY,STRICT_TRANS_TABLES,NO_ZERO_IN_DATE,NO_ZERO_DATE,ERROR_FOR_DIVISION_BY_ZERO,NO_ENGINE_SUBSTITUTION' */ ; -DELIMITER ;;; -/*!50003 CREATE*/ /*!50017 DEFINER=`root`@`localhost`*/ /*!50003 TRIGGER `before_insert_Shop_Product_Currency_Region_Link` BEFORE INSERT ON `shop_product_currency_region_link` FOR EACH ROW BEGIN - IF NEW.created_on <=> NULL THEN - SET NEW.created_on := IFNULL(NEW.created_on, NOW()); - END IF; - IF NEW.created_by <=> NULL THEN - SET NEW.created_by := IFNULL(NEW.created_by, IFNULL((SELECT id_user FROM Shop_User WHERE firstname = CURRENT_USER()), -1)); - END IF; - /* - SET NEW.price_local = ( - SELECT PP.price_GBP_full * C.factor_from_GBP - FROM Shop_Product_Permutation PP - INNER JOIN Shop_Product P ON PP.id_product = P.id_product - INNER JOIN Shop_Currency C ON NEW.id_currency = C.id_currency - WHERE NEW.id_product = P.id_product - LIMIT 1 - ); - */ -END */;; -DELIMITER ;; -/*!50003 SET sql_mode = @saved_sql_mode */ ; -/*!50003 SET character_set_client = @saved_cs_client */ ; -/*!50003 SET character_set_results = @saved_cs_results */ ; -/*!50003 SET collation_connection = @saved_col_connection */ ; -/*!50003 SET @saved_cs_client = @@character_set_client */ ; -/*!50003 SET @saved_cs_results = @@character_set_results */ ; -/*!50003 SET @saved_col_connection = @@collation_connection */ ; -/*!50003 SET character_set_client = utf8mb4 */ ; -/*!50003 SET character_set_results = utf8mb4 */ ; -/*!50003 SET collation_connection = utf8mb4_0900_ai_ci */ ; -/*!50003 SET @saved_sql_mode = @@sql_mode */ ; -/*!50003 SET sql_mode = 'ONLY_FULL_GROUP_BY,STRICT_TRANS_TABLES,NO_ZERO_IN_DATE,NO_ZERO_DATE,ERROR_FOR_DIVISION_BY_ZERO,NO_ENGINE_SUBSTITUTION' */ ; -DELIMITER ;;; -/*!50003 CREATE*/ /*!50017 DEFINER=`root`@`localhost`*/ /*!50003 TRIGGER `before_update_Shop_Product_Currency_Region_Link` BEFORE UPDATE ON `shop_product_currency_region_link` FOR EACH ROW BEGIN - IF OLD.id_change_set <=> NEW.id_change_set THEN - SIGNAL SQLSTATE '45000' - SET MESSAGE_TEXT = 'New change Set ID must be provided.'; - END IF; - - /* - SET NEW.price_local = ( - SELECT P.price_GBP_full * C.factor_from_GBP - FROM Shop_Product P - INNER JOIN Shop_Currency C ON NEW.id_currency = C.id_currency - WHERE NEW.id_product = P.id_product - LIMIT 1 - ); - */ - - INSERT INTO Shop_Product_Currency_Region_Link_Audit ( - id_link, - name_field, - value_prev, - value_new, - id_change_set - ) - /* - # Changed id_product - SELECT NEW.id_link, 'id_product', CONVERT(OLD.id_product, CHAR), CONVERT(NEW.id_product, CHAR), NEW.id_change_set - WHERE NOT OLD.id_product <=> NEW.id_product - UNION - # Changed id_currency - SELECT NEW.id_link, 'id_currency', CONVERT(OLD.id_currency, CHAR), CONVERT(NEW.id_currency, CHAR), NEW.id_change_set - WHERE NOT OLD.id_currency <=> NEW.id_currency - UNION - # Changed price_local - SELECT NEW.id_link, 'price_local', OLD.price_local, NEW.price_local, NEW.id_change_set - WHERE NOT OLD.price_local <=> NEW.price_local - UNION - */ - # Changed price_local_VAT_incl - SELECT NEW.id_link, 'price_local_VAT_incl', OLD.price_local_VAT_incl, NEW.price_local_VAT_incl, NEW.id_change_set - WHERE NOT OLD.price_local_VAT_incl <=> NEW.price_local_VAT_incl - UNION - # Changed price_local_VAT_excl - SELECT NEW.id_link, 'price_local_VAT_excl', OLD.price_local_VAT_excl, NEW.price_local_VAT_excl, NEW.id_change_set - WHERE NOT OLD.price_local_VAT_excl <=> NEW.price_local_VAT_excl - UNION - # Changed id_stripe_price - SELECT NEW.id_link, 'id_stripe_price', OLD.id_stripe_price, NEW.id_stripe_price, NEW.id_change_set - WHERE NOT OLD.id_stripe_price <=> NEW.id_stripe_price - UNION - # Changed active - SELECT NEW.id_link, 'active', CONVERT(CONVERT(OLD.active, SIGNED), CHAR), CONVERT(CONVERT(NEW.active, SIGNED), CHAR), NEW.id_change_set - WHERE NOT (OLD.active <=> NEW.active) - ; -END */;; -DELIMITER ;; -/*!50003 SET sql_mode = @saved_sql_mode */ ; -/*!50003 SET character_set_client = @saved_cs_client */ ; -/*!50003 SET character_set_results = @saved_cs_results */ ; -/*!50003 SET collation_connection = @saved_col_connection */ ; - --- --- Table structure for table `shop_product_currency_region_link_audit` --- - -DROP TABLE IF EXISTS `shop_product_currency_region_link_audit`; -/*!40101 SET @saved_cs_client = @@character_set_client */; -/*!50503 SET character_set_client = utf8mb4 */; -CREATE TABLE `shop_product_currency_region_link_audit` ( - `id_audit` int NOT NULL AUTO_INCREMENT, - `id_link` int NOT NULL, - `name_field` varchar(50) DEFAULT NULL, - `value_prev` varchar(500) DEFAULT NULL, - `value_new` varchar(500) DEFAULT NULL, - `id_change_set` int NOT NULL, - PRIMARY KEY (`id_audit`), - KEY `FK_Shop_Product_Currency_Region_Link_Audit_id_link` (`id_link`), - KEY `FK_Shop_Product_Currency_Region_Link_Audit_id_change_set` (`id_change_set`), - CONSTRAINT `FK_Shop_Product_Currency_Region_Link_Audit_id_change_set` FOREIGN KEY (`id_change_set`) REFERENCES `shop_product_change_set` (`id_change_set`), - CONSTRAINT `FK_Shop_Product_Currency_Region_Link_Audit_id_link` FOREIGN KEY (`id_link`) REFERENCES `shop_product_currency_region_link` (`id_link`) ON UPDATE RESTRICT -) ENGINE=InnoDB DEFAULT CHARSET=utf8mb4 COLLATE=utf8mb4_0900_ai_ci; -/*!40101 SET character_set_client = @saved_cs_client */; - --- --- Dumping data for table `shop_product_currency_region_link_audit` --- - -LOCK TABLES `shop_product_currency_region_link_audit` WRITE; -/*!40000 ALTER TABLE `shop_product_currency_region_link_audit` DISABLE KEYS */; -/*!40000 ALTER TABLE `shop_product_currency_region_link_audit` ENABLE KEYS */; -UNLOCK TABLES; - --- --- Table structure for table `shop_product_delivery_option_link` --- - -DROP TABLE IF EXISTS `shop_product_delivery_option_link`; -/*!40101 SET @saved_cs_client = @@character_set_client */; -/*!50503 SET character_set_client = utf8mb4 */; -CREATE TABLE `shop_product_delivery_option_link` ( - `id_link` int NOT NULL AUTO_INCREMENT, - `id_product` int NOT NULL, - `id_permutation` int DEFAULT NULL, - `id_delivery_option` int NOT NULL, - `id_region` int NOT NULL, - `id_currency` int NOT NULL, - `price_local` float NOT NULL, - `active` bit(1) NOT NULL DEFAULT b'1', - `display_order` int NOT NULL, - `created_on` datetime DEFAULT NULL, - `created_by` varchar(100) DEFAULT NULL, - `id_change_set` int DEFAULT NULL, - PRIMARY KEY (`id_link`), - KEY `FK_Shop_Product_Delivery_Option_Link_id_product` (`id_product`), - KEY `FK_Shop_Product_Delivery_Option_Link_id_permutation` (`id_permutation`), - KEY `FK_Shop_Product_Delivery_Option_Link_id_delivery_option` (`id_delivery_option`), - KEY `FK_Shop_Product_Delivery_Option_Link_id_region` (`id_region`), - KEY `FK_Shop_Product_Delivery_Option_Link_id_currency` (`id_currency`), - KEY `FK_Shop_Product_Delivery_Option_Link_id_change_set` (`id_change_set`), - CONSTRAINT `FK_Shop_Product_Delivery_Option_Link_id_change_set` FOREIGN KEY (`id_change_set`) REFERENCES `shop_product_change_set` (`id_change_set`), - CONSTRAINT `FK_Shop_Product_Delivery_Option_Link_id_currency` FOREIGN KEY (`id_currency`) REFERENCES `shop_currency` (`id_currency`) ON UPDATE RESTRICT, - CONSTRAINT `FK_Shop_Product_Delivery_Option_Link_id_delivery_option` FOREIGN KEY (`id_delivery_option`) REFERENCES `shop_delivery_option` (`id_option`) ON UPDATE RESTRICT, - CONSTRAINT `FK_Shop_Product_Delivery_Option_Link_id_permutation` FOREIGN KEY (`id_permutation`) REFERENCES `shop_product_permutation` (`id_permutation`) ON UPDATE RESTRICT, - CONSTRAINT `FK_Shop_Product_Delivery_Option_Link_id_product` FOREIGN KEY (`id_product`) REFERENCES `shop_product` (`id_product`) ON UPDATE RESTRICT, - CONSTRAINT `FK_Shop_Product_Delivery_Option_Link_id_region` FOREIGN KEY (`id_region`) REFERENCES `shop_region` (`id_region`) ON UPDATE RESTRICT -) ENGINE=InnoDB AUTO_INCREMENT=7 DEFAULT CHARSET=utf8mb4 COLLATE=utf8mb4_0900_ai_ci; -/*!40101 SET character_set_client = @saved_cs_client */; - --- --- Dumping data for table `shop_product_delivery_option_link` --- - -LOCK TABLES `shop_product_delivery_option_link` WRITE; -/*!40000 ALTER TABLE `shop_product_delivery_option_link` DISABLE KEYS */; -INSERT INTO `shop_product_delivery_option_link` VALUES (1,1,1,1,1,1,5,_binary '',1,'2024-04-28 19:03:07','root@localhost',NULL),(2,1,2,1,1,1,9,_binary '',2,'2024-04-28 19:03:07','root@localhost',NULL),(3,2,NULL,1,1,1,10,_binary '',3,'2024-04-28 19:03:07','root@localhost',NULL),(4,3,4,1,1,1,10,_binary '',4,'2024-04-28 19:03:07','root@localhost',NULL),(5,4,5,1,1,1,10,_binary '',5,'2024-04-28 19:03:07','root@localhost',NULL),(6,5,6,1,1,1,10,_binary '',6,'2024-04-28 19:03:07','root@localhost',NULL); -/*!40000 ALTER TABLE `shop_product_delivery_option_link` ENABLE KEYS */; -UNLOCK TABLES; -/*!50003 SET @saved_cs_client = @@character_set_client */ ; -/*!50003 SET @saved_cs_results = @@character_set_results */ ; -/*!50003 SET @saved_col_connection = @@collation_connection */ ; -/*!50003 SET character_set_client = utf8mb4 */ ; -/*!50003 SET character_set_results = utf8mb4 */ ; -/*!50003 SET collation_connection = utf8mb4_0900_ai_ci */ ; -/*!50003 SET @saved_sql_mode = @@sql_mode */ ; -/*!50003 SET sql_mode = 'ONLY_FULL_GROUP_BY,STRICT_TRANS_TABLES,NO_ZERO_IN_DATE,NO_ZERO_DATE,ERROR_FOR_DIVISION_BY_ZERO,NO_ENGINE_SUBSTITUTION' */ ; -DELIMITER ;;; -/*!50003 CREATE*/ /*!50017 DEFINER=`root`@`localhost`*/ /*!50003 TRIGGER `before_insert_Shop_Product_Delivery_Option_Link` BEFORE INSERT ON `shop_product_delivery_option_link` FOR EACH ROW BEGIN - IF NEW.created_on <=> NULL THEN - SET NEW.created_on := IFNULL(NEW.created_on, NOW()); - END IF; - IF NEW.created_by <=> NULL THEN - SET NEW.created_by := IFNULL(NEW.created_by, IFNULL((SELECT id_user FROM Shop_User WHERE firstname = CURRENT_USER()), -1)); - END IF; -END */;; -DELIMITER ;; -/*!50003 SET sql_mode = @saved_sql_mode */ ; -/*!50003 SET character_set_client = @saved_cs_client */ ; -/*!50003 SET character_set_results = @saved_cs_results */ ; -/*!50003 SET collation_connection = @saved_col_connection */ ; -/*!50003 SET @saved_cs_client = @@character_set_client */ ; -/*!50003 SET @saved_cs_results = @@character_set_results */ ; -/*!50003 SET @saved_col_connection = @@collation_connection */ ; -/*!50003 SET character_set_client = utf8mb4 */ ; -/*!50003 SET character_set_results = utf8mb4 */ ; -/*!50003 SET collation_connection = utf8mb4_0900_ai_ci */ ; -/*!50003 SET @saved_sql_mode = @@sql_mode */ ; -/*!50003 SET sql_mode = 'ONLY_FULL_GROUP_BY,STRICT_TRANS_TABLES,NO_ZERO_IN_DATE,NO_ZERO_DATE,ERROR_FOR_DIVISION_BY_ZERO,NO_ENGINE_SUBSTITUTION' */ ; -DELIMITER ;;; -/*!50003 CREATE*/ /*!50017 DEFINER=`root`@`localhost`*/ /*!50003 TRIGGER `before_update_Shop_Product_Delivery_Option_Link` BEFORE UPDATE ON `shop_product_delivery_option_link` FOR EACH ROW BEGIN - IF OLD.id_change_set <=> NEW.id_change_set THEN - SIGNAL SQLSTATE '45000' - SET MESSAGE_TEXT = 'New change Set ID must be provided.'; - END IF; - - INSERT INTO Shop_Product_Delivery_Option_Link_Audit ( - id_link, - name_field, - value_prev, - value_new, - id_change_set - ) - /* - # Changed id_product - SELECT NEW.id_link, 'id_product', CONVERT(OLD.id_product, CHAR), CONVERT(NEW.id_product, CHAR), NEW.id_change_set - WHERE NOT OLD.id_product <=> NEW.id_product - UNION - # Changed id_permutation - SELECT NEW.id_link, 'id_permutation', CONVERT(OLD.id_permutation, CHAR), CONVERT(NEW.id_permutation, CHAR), NEW.id_change_set - WHERE NOT OLD.id_permutation <=> NEW.id_permutation - UNION - # Changed id_option - SELECT NEW.id_link, 'id_option', CONVERT(OLD.id_option, CHAR), CONVERT(NEW.id_option, CHAR), NEW.id_change_set - WHERE NOT OLD.id_option <=> NEW.id_option - UNION - # Changed id_region - SELECT NEW.id_link, 'id_region', CONVERT(OLD.id_region, CHAR), CONVERT(NEW.id_region, CHAR), NEW.id_change_set - WHERE NOT OLD.id_region <=> NEW.id_region - UNION - */ - # Changed price_local - SELECT NEW.id_link, 'price_local', CONVERT(OLD.price_local, CHAR), CONVERT(NEW.price_local, CHAR), NEW.id_change_set - WHERE NOT OLD.price_local <=> NEW.price_local - UNION - # Changed active - SELECT NEW.id_link, 'active', CONVERT(CONVERT(OLD.active, SIGNED), CHAR), CONVERT(CONVERT(NEW.active, SIGNED), CHAR), NEW.id_change_set - WHERE NOT (OLD.active <=> NEW.active) - UNION - # Changed display_order - SELECT NEW.id_link, 'display_order', CONVERT(OLD.display_order, CHAR), CONVERT(NEW.display_order, CHAR), NEW.id_change_set - WHERE NOT (OLD.display_order <=> NEW.display_order) - ; -END */;; -DELIMITER ;; -/*!50003 SET sql_mode = @saved_sql_mode */ ; -/*!50003 SET character_set_client = @saved_cs_client */ ; -/*!50003 SET character_set_results = @saved_cs_results */ ; -/*!50003 SET collation_connection = @saved_col_connection */ ; - --- --- Table structure for table `shop_product_delivery_option_link_audit` --- - -DROP TABLE IF EXISTS `shop_product_delivery_option_link_audit`; -/*!40101 SET @saved_cs_client = @@character_set_client */; -/*!50503 SET character_set_client = utf8mb4 */; -CREATE TABLE `shop_product_delivery_option_link_audit` ( - `id_audit` int NOT NULL AUTO_INCREMENT, - `id_link` int NOT NULL, - `name_field` varchar(64) NOT NULL, - `value_prev` varchar(500) DEFAULT NULL, - `value_new` varchar(500) DEFAULT NULL, - `id_change_set` int NOT NULL, - PRIMARY KEY (`id_audit`), - KEY `FK_Shop_Product_Delivery_Option_Link_Audit_id_link` (`id_link`), - KEY `FK_Shop_Product_Delivery_Option_Link_Audit_id_change_set` (`id_change_set`), - CONSTRAINT `FK_Shop_Product_Delivery_Option_Link_Audit_id_change_set` FOREIGN KEY (`id_change_set`) REFERENCES `shop_product_change_set` (`id_change_set`), - CONSTRAINT `FK_Shop_Product_Delivery_Option_Link_Audit_id_link` FOREIGN KEY (`id_link`) REFERENCES `shop_product_delivery_option_link` (`id_link`) ON UPDATE RESTRICT -) ENGINE=InnoDB DEFAULT CHARSET=utf8mb4 COLLATE=utf8mb4_0900_ai_ci; -/*!40101 SET character_set_client = @saved_cs_client */; - --- --- Dumping data for table `shop_product_delivery_option_link_audit` --- - -LOCK TABLES `shop_product_delivery_option_link_audit` WRITE; -/*!40000 ALTER TABLE `shop_product_delivery_option_link_audit` DISABLE KEYS */; -/*!40000 ALTER TABLE `shop_product_delivery_option_link_audit` ENABLE KEYS */; -UNLOCK TABLES; - --- --- Table structure for table `shop_product_permutation` --- - -DROP TABLE IF EXISTS `shop_product_permutation`; -/*!40101 SET @saved_cs_client = @@character_set_client */; -/*!50503 SET character_set_client = utf8mb4 */; -CREATE TABLE `shop_product_permutation` ( - `id_permutation` int NOT NULL AUTO_INCREMENT, - `id_product` int NOT NULL, - `description` varchar(4000) NOT NULL, - `cost_local_manufacturing` float NOT NULL, - `id_currency_cost_manufacturing` int NOT NULL, - `profit_local_min` float NOT NULL, - `id_currency_profit_min` int NOT NULL, - `latency_manufacture` int NOT NULL, - `quantity_min` float NOT NULL, - `quantity_max` float NOT NULL, - `quantity_step` float NOT NULL, - `quantity_stock` float NOT NULL, - `is_subscription` bit(1) NOT NULL, - `id_unit_measurement_interval_recurrence` int DEFAULT NULL, - `count_interval_recurrence` int DEFAULT NULL, - `id_access_level_required` int NOT NULL, - `id_stripe_product` varchar(100) DEFAULT NULL, - `active` bit(1) NOT NULL DEFAULT b'1', - `display_order` int NOT NULL, - `created_on` datetime DEFAULT NULL, - `created_by` varchar(100) DEFAULT NULL, - `id_change_set` int DEFAULT NULL, - PRIMARY KEY (`id_permutation`), - KEY `FK_Shop_Product_Variation_Link_id_product` (`id_product`), - KEY `FK_Shop_Product_Permutation_id_unit_measurement_interval_recurrence` (`id_unit_measurement_interval_recurrence`), - KEY `FK_Shop_Product_Permutation_id_access_level_required` (`id_access_level_required`), - KEY `FK_Shop_Product_Variation_Link_id_change_set` (`id_change_set`), - CONSTRAINT `FK_Shop_Product_Permutation_id_access_level_required` FOREIGN KEY (`id_access_level_required`) REFERENCES `shop_access_level` (`id_access_level`), - CONSTRAINT `FK_Shop_Product_Permutation_id_unit_measurement_interval_recurrence` FOREIGN KEY (`id_unit_measurement_interval_recurrence`) REFERENCES `shop_interval_recurrence` (`id_interval`), - CONSTRAINT `FK_Shop_Product_Variation_Link_id_change_set` FOREIGN KEY (`id_change_set`) REFERENCES `shop_product_change_set` (`id_change_set`), - CONSTRAINT `FK_Shop_Product_Variation_Link_id_product` FOREIGN KEY (`id_product`) REFERENCES `shop_product` (`id_product`) ON UPDATE RESTRICT -) ENGINE=InnoDB AUTO_INCREMENT=7 DEFAULT CHARSET=utf8mb4 COLLATE=utf8mb4_0900_ai_ci; -/*!40101 SET character_set_client = @saved_cs_client */; - --- --- Dumping data for table `shop_product_permutation` --- - -LOCK TABLES `shop_product_permutation` WRITE; -/*!40000 ALTER TABLE `shop_product_permutation` DISABLE KEYS */; -INSERT INTO `shop_product_permutation` VALUES (1,1,'Good Red',5,1,3,1,14,1,3,1,99,_binary '\0',NULL,NULL,1,NULL,_binary '',1,'2024-04-28 19:03:07','root@localhost',NULL),(2,1,'Good Blue',6,1,4,1,14,1,3,1,99,_binary '\0',NULL,NULL,1,NULL,_binary '',2,'2024-04-28 19:03:07','root@localhost',NULL),(3,2,'Test product describes good',10,1,5,1,14,1,2,1,99,_binary '\0',NULL,NULL,1,NULL,_binary '',3,'2024-04-28 19:03:07','root@localhost',NULL),(4,3,'Phone describes good',10,1,5,1,14,1,2,1,99,_binary '\0',NULL,NULL,1,NULL,_binary '',4,'2024-04-28 19:03:07','root@localhost',NULL),(5,4,'Laptop describes good',10,1,5,1,14,1,2,1,99,_binary '\0',NULL,NULL,1,NULL,_binary '',5,'2024-04-28 19:03:07','root@localhost',NULL),(6,5,'Smart watch describes good',10,1,5,1,14,1,2,1,99,_binary '\0',NULL,NULL,1,NULL,_binary '',6,'2024-04-28 19:03:07','root@localhost',NULL); -/*!40000 ALTER TABLE `shop_product_permutation` ENABLE KEYS */; -UNLOCK TABLES; -/*!50003 SET @saved_cs_client = @@character_set_client */ ; -/*!50003 SET @saved_cs_results = @@character_set_results */ ; -/*!50003 SET @saved_col_connection = @@collation_connection */ ; -/*!50003 SET character_set_client = utf8mb4 */ ; -/*!50003 SET character_set_results = utf8mb4 */ ; -/*!50003 SET collation_connection = utf8mb4_0900_ai_ci */ ; -/*!50003 SET @saved_sql_mode = @@sql_mode */ ; -/*!50003 SET sql_mode = 'ONLY_FULL_GROUP_BY,STRICT_TRANS_TABLES,NO_ZERO_IN_DATE,NO_ZERO_DATE,ERROR_FOR_DIVISION_BY_ZERO,NO_ENGINE_SUBSTITUTION' */ ; -DELIMITER ;;; -/*!50003 CREATE*/ /*!50017 DEFINER=`root`@`localhost`*/ /*!50003 TRIGGER `before_insert_Shop_Product_Permutation` BEFORE INSERT ON `shop_product_permutation` FOR EACH ROW BEGIN - IF NEW.created_on <=> NULL THEN - SET NEW.created_on := IFNULL(NEW.created_on, NOW()); - END IF; - IF NEW.created_by <=> NULL THEN - SET NEW.created_by := IFNULL(NEW.created_by, IFNULL((SELECT id_user FROM Shop_User WHERE firstname = CURRENT_USER()), -1)); - END IF; -END */;; -DELIMITER ;; -/*!50003 SET sql_mode = @saved_sql_mode */ ; -/*!50003 SET character_set_client = @saved_cs_client */ ; -/*!50003 SET character_set_results = @saved_cs_results */ ; -/*!50003 SET collation_connection = @saved_col_connection */ ; -/*!50003 SET @saved_cs_client = @@character_set_client */ ; -/*!50003 SET @saved_cs_results = @@character_set_results */ ; -/*!50003 SET @saved_col_connection = @@collation_connection */ ; -/*!50003 SET character_set_client = utf8mb4 */ ; -/*!50003 SET character_set_results = utf8mb4 */ ; -/*!50003 SET collation_connection = utf8mb4_0900_ai_ci */ ; -/*!50003 SET @saved_sql_mode = @@sql_mode */ ; -/*!50003 SET sql_mode = 'ONLY_FULL_GROUP_BY,STRICT_TRANS_TABLES,NO_ZERO_IN_DATE,NO_ZERO_DATE,ERROR_FOR_DIVISION_BY_ZERO,NO_ENGINE_SUBSTITUTION' */ ; -DELIMITER ;;; -/*!50003 CREATE*/ /*!50017 DEFINER=`root`@`localhost`*/ /*!50003 TRIGGER `before_update_Shop_Product_Permutation` BEFORE UPDATE ON `shop_product_permutation` FOR EACH ROW BEGIN - IF OLD.id_change_set <=> NEW.id_change_set THEN - SIGNAL SQLSTATE '45000' - SET MESSAGE_TEXT = 'New change Set ID must be provided.'; - END IF; - - INSERT INTO Shop_Product_Permutation_Audit ( - id_permutation, - name_field, - value_prev, - value_new, - id_change_set - ) - /* - # Changed id_product - SELECT NEW.id_permutation, 'id_product', OLD.id_product, NEW.id_product, NEW.id_change_set - WHERE NOT OLD.id_product <=> NEW.id_product - UNION - # Changed id_variation - SELECT NEW.id_permutation, 'id_variation', OLD.id_variation, NEW.id_variation, NEW.id_change_set - WHERE NOT OLD.id_variation <=> NEW.id_variation - UNION - # Changed name - SELECT NEW.id_permutation, 'name', OLD.name, NEW.name, NEW.id_change_set - WHERE NOT (OLD.name <=> NEW.name) - UNION - */ - # Changed description - SELECT NEW.id_permutation, 'description', OLD.description, NEW.description, NEW.id_change_set - WHERE NOT (OLD.description <=> NEW.description) - UNION - # Changed cost_local_manufacturing - SELECT NEW.id_permutation, 'cost_local_manufacturing', CONVERT(OLD.cost_local_manufacturing, CHAR), CONVERT(NEW.cost_local_manufacturing, CHAR), NEW.id_change_set - WHERE NOT (OLD.cost_local_manufacturing <=> NEW.cost_local_manufacturing) - UNION - # Changed id_currency_cost_manufacturing - SELECT NEW.id_permutation, 'id_currency_cost_manufacturing', CONVERT(OLD.id_currency_cost_manufacturing, CHAR), CONVERT(NEW.id_currency_cost_manufacturing, CHAR), NEW.id_change_set - WHERE NOT (OLD.id_currency_cost_manufacturing <=> NEW.id_currency_cost_manufacturing) - UNION - # Changed profit_local_min - SELECT NEW.id_permutation, 'profit_local_min', CONVERT(OLD.profit_local_min, CHAR), CONVERT(NEW.profit_local_min, CHAR), NEW.id_change_set - WHERE NOT (OLD.profit_local_min <=> NEW.profit_local_min) - UNION - # Changed id_currency_profit_min - SELECT NEW.id_permutation, 'id_currency_profit_min', CONVERT(OLD.id_currency_profit_min, CHAR), CONVERT(NEW.id_currency_profit_min, CHAR), NEW.id_change_set - WHERE NOT (OLD.id_currency_profit_min <=> NEW.id_currency_profit_min) - UNION - /* - # Changed price_GBP_min - SELECT NEW.id_permutation, 'price_GBP_min', CONVERT(OLD.price_GBP_min, CHAR), CONVERT(NEW.price_GBP_min, CHAR), NEW.id_change_set - WHERE NOT (OLD.price_GBP_min <=> NEW.price_GBP_min) - UNION - */ - # Changed latency_manufacture - SELECT NEW.id_product, 'latency_manufacture', CONVERT(OLD.latency_manufacture, CHAR), CONVERT(NEW.latency_manufacture, CHAR), NEW.id_change_set - WHERE NOT OLD.latency_manufacture <=> NEW.latency_manufacture - UNION - # Changed quantity_min - SELECT NEW.id_product, 'quantity_min', CONVERT(OLD.quantity_min, CHAR), CONVERT(NEW.quantity_min, CHAR), NEW.id_change_set - WHERE NOT OLD.quantity_min <=> NEW.quantity_min - UNION - # Changed quantity_max - SELECT NEW.id_product, 'quantity_max', CONVERT(OLD.quantity_max, CHAR), CONVERT(NEW.quantity_max, CHAR), NEW.id_change_set - WHERE NOT OLD.quantity_max <=> NEW.quantity_max - UNION - # Changed quantity_step - SELECT NEW.id_product, 'quantity_step', CONVERT(OLD.quantity_step, CHAR), CONVERT(NEW.quantity_step, CHAR), NEW.id_change_set - WHERE NOT OLD.quantity_step <=> NEW.quantity_step - UNION - # Changed quantity_stock - SELECT NEW.id_product, 'quantity_stock', CONVERT(OLD.quantity_stock, CHAR), CONVERT(NEW.quantity_stock, CHAR), NEW.id_change_set - WHERE NOT OLD.quantity_stock <=> NEW.quantity_stock - UNION - # Changed is_subscription - SELECT NEW.id_product, 'is_subscription', CONVERT(CONVERT(OLD.is_subscription, SIGNED), CHAR), CONVERT(CONVERT(NEW.is_subscription, SIGNED), CHAR), NEW.id_change_set - WHERE NOT OLD.is_subscription <=> NEW.is_subscription - UNION - # Changed id_unit_measurement_interval_recurrence - SELECT NEW.id_product, 'id_unit_measurement_interval_recurrence', CONVERT(OLD.id_unit_measurement_interval_recurrence, CHAR), CONVERT(NEW.id_unit_measurement_interval_recurrence, CHAR), NEW.id_change_set - WHERE NOT OLD.id_unit_measurement_interval_recurrence <=> NEW.id_unit_measurement_interval_recurrence - UNION - # Changed count_interval_recurrence - SELECT NEW.id_product, 'count_interval_recurrence', CONVERT(OLD.count_interval_recurrence, CHAR), CONVERT(NEW.count_interval_recurrence, CHAR), NEW.id_change_set - WHERE NOT OLD.count_interval_recurrence <=> NEW.count_interval_recurrence - UNION - # Changed id_stripe_product - SELECT NEW.id_permutation, 'id_stripe_product', OLD.id_stripe_product, NEW.id_stripe_product, NEW.id_change_set - WHERE NOT (OLD.id_stripe_product <=> NEW.id_stripe_product) - UNION - # Changed active - SELECT NEW.id_permutation, 'active', CONVERT(CONVERT(OLD.active, SIGNED), CHAR), CONVERT(CONVERT(NEW.active, SIGNED), CHAR), NEW.id_change_set - WHERE NOT (OLD.active <=> NEW.active) - UNION - # Changed display_order - SELECT NEW.id_permutation, 'display_order', CONVERT(OLD.display_order, CHAR), CONVERT(NEW.display_order, CHAR), NEW.id_change_set - WHERE NOT (OLD.display_order <=> NEW.display_order) - ; -END */;; -DELIMITER ;; -/*!50003 SET sql_mode = @saved_sql_mode */ ; -/*!50003 SET character_set_client = @saved_cs_client */ ; -/*!50003 SET character_set_results = @saved_cs_results */ ; -/*!50003 SET collation_connection = @saved_col_connection */ ; - --- --- Table structure for table `shop_product_permutation_audit` --- - -DROP TABLE IF EXISTS `shop_product_permutation_audit`; -/*!40101 SET @saved_cs_client = @@character_set_client */; -/*!50503 SET character_set_client = utf8mb4 */; -CREATE TABLE `shop_product_permutation_audit` ( - `id_audit` int NOT NULL AUTO_INCREMENT, - `id_permutation` int NOT NULL, - `name_field` varchar(50) DEFAULT NULL, - `value_prev` varchar(500) DEFAULT NULL, - `value_new` varchar(500) DEFAULT NULL, - `id_change_set` int NOT NULL, - PRIMARY KEY (`id_audit`), - KEY `FK_Shop_Product_Permutation_Audit_id_permutation` (`id_permutation`), - KEY `FK_Shop_Product_Permutation_Audit_id_change_set` (`id_change_set`), - CONSTRAINT `FK_Shop_Product_Permutation_Audit_id_change_set` FOREIGN KEY (`id_change_set`) REFERENCES `shop_product_change_set` (`id_change_set`) ON UPDATE RESTRICT, - CONSTRAINT `FK_Shop_Product_Permutation_Audit_id_permutation` FOREIGN KEY (`id_permutation`) REFERENCES `shop_product_permutation` (`id_permutation`) ON UPDATE RESTRICT -) ENGINE=InnoDB DEFAULT CHARSET=utf8mb4 COLLATE=utf8mb4_0900_ai_ci; -/*!40101 SET character_set_client = @saved_cs_client */; - --- --- Dumping data for table `shop_product_permutation_audit` --- - -LOCK TABLES `shop_product_permutation_audit` WRITE; -/*!40000 ALTER TABLE `shop_product_permutation_audit` DISABLE KEYS */; -/*!40000 ALTER TABLE `shop_product_permutation_audit` ENABLE KEYS */; -UNLOCK TABLES; - --- --- Table structure for table `shop_product_permutation_variation_link` --- - -DROP TABLE IF EXISTS `shop_product_permutation_variation_link`; -/*!40101 SET @saved_cs_client = @@character_set_client */; -/*!50503 SET character_set_client = utf8mb4 */; -CREATE TABLE `shop_product_permutation_variation_link` ( - `id_link` int NOT NULL AUTO_INCREMENT, - `id_permutation` int NOT NULL, - `id_variation` int NOT NULL, - `active` bit(1) NOT NULL DEFAULT b'1', - `display_order` int NOT NULL, - `created_on` datetime DEFAULT NULL, - `created_by` varchar(100) DEFAULT NULL, - `id_change_set` int DEFAULT NULL, - PRIMARY KEY (`id_link`), - KEY `FK_Shop_Product_Permutation_Variation_Link_id_permutation` (`id_permutation`), - KEY `FK_Shop_Product_Permutation_Variation_Link_id_variation` (`id_variation`), - KEY `FK_Shop_Product_Permutation_Variation_Link_id_change_set` (`id_change_set`), - CONSTRAINT `FK_Shop_Product_Permutation_Variation_Link_id_change_set` FOREIGN KEY (`id_change_set`) REFERENCES `shop_product_change_set` (`id_change_set`), - CONSTRAINT `FK_Shop_Product_Permutation_Variation_Link_id_permutation` FOREIGN KEY (`id_permutation`) REFERENCES `shop_product_permutation` (`id_permutation`) ON UPDATE RESTRICT, - CONSTRAINT `FK_Shop_Product_Permutation_Variation_Link_id_variation` FOREIGN KEY (`id_variation`) REFERENCES `shop_variation` (`id_variation`) ON UPDATE RESTRICT -) ENGINE=InnoDB AUTO_INCREMENT=3 DEFAULT CHARSET=utf8mb4 COLLATE=utf8mb4_0900_ai_ci; -/*!40101 SET character_set_client = @saved_cs_client */; - --- --- Dumping data for table `shop_product_permutation_variation_link` --- - -LOCK TABLES `shop_product_permutation_variation_link` WRITE; -/*!40000 ALTER TABLE `shop_product_permutation_variation_link` DISABLE KEYS */; -INSERT INTO `shop_product_permutation_variation_link` VALUES (1,1,1,_binary '',1,'2024-04-28 19:03:07','root@localhost',NULL),(2,2,2,_binary '',2,'2024-04-28 19:03:07','root@localhost',NULL); -/*!40000 ALTER TABLE `shop_product_permutation_variation_link` ENABLE KEYS */; -UNLOCK TABLES; -/*!50003 SET @saved_cs_client = @@character_set_client */ ; -/*!50003 SET @saved_cs_results = @@character_set_results */ ; -/*!50003 SET @saved_col_connection = @@collation_connection */ ; -/*!50003 SET character_set_client = utf8mb4 */ ; -/*!50003 SET character_set_results = utf8mb4 */ ; -/*!50003 SET collation_connection = utf8mb4_0900_ai_ci */ ; -/*!50003 SET @saved_sql_mode = @@sql_mode */ ; -/*!50003 SET sql_mode = 'ONLY_FULL_GROUP_BY,STRICT_TRANS_TABLES,NO_ZERO_IN_DATE,NO_ZERO_DATE,ERROR_FOR_DIVISION_BY_ZERO,NO_ENGINE_SUBSTITUTION' */ ; -DELIMITER ;;; -/*!50003 CREATE*/ /*!50017 DEFINER=`root`@`localhost`*/ /*!50003 TRIGGER `before_insert_Shop_Product_Permutation_Variation_Link` BEFORE INSERT ON `shop_product_permutation_variation_link` FOR EACH ROW BEGIN - IF NEW.created_on <=> NULL THEN - SET NEW.created_on := IFNULL(NEW.created_on, NOW()); - END IF; - IF NEW.created_by <=> NULL THEN - SET NEW.created_by := IFNULL(NEW.created_by, IFNULL((SELECT id_user FROM Shop_User WHERE firstname = CURRENT_USER()), -1)); - END IF; -END */;; -DELIMITER ;; -/*!50003 SET sql_mode = @saved_sql_mode */ ; -/*!50003 SET character_set_client = @saved_cs_client */ ; -/*!50003 SET character_set_results = @saved_cs_results */ ; -/*!50003 SET collation_connection = @saved_col_connection */ ; -/*!50003 SET @saved_cs_client = @@character_set_client */ ; -/*!50003 SET @saved_cs_results = @@character_set_results */ ; -/*!50003 SET @saved_col_connection = @@collation_connection */ ; -/*!50003 SET character_set_client = utf8mb4 */ ; -/*!50003 SET character_set_results = utf8mb4 */ ; -/*!50003 SET collation_connection = utf8mb4_0900_ai_ci */ ; -/*!50003 SET @saved_sql_mode = @@sql_mode */ ; -/*!50003 SET sql_mode = 'ONLY_FULL_GROUP_BY,STRICT_TRANS_TABLES,NO_ZERO_IN_DATE,NO_ZERO_DATE,ERROR_FOR_DIVISION_BY_ZERO,NO_ENGINE_SUBSTITUTION' */ ; -DELIMITER ;;; -/*!50003 CREATE*/ /*!50017 DEFINER=`root`@`localhost`*/ /*!50003 TRIGGER `before_update_Shop_Product_Permutation_Variation_Link` BEFORE UPDATE ON `shop_product_permutation_variation_link` FOR EACH ROW BEGIN - IF OLD.id_change_set <=> NEW.id_change_set THEN - SIGNAL SQLSTATE '45000' - SET MESSAGE_TEXT = 'New change Set ID must be provided.'; - END IF; - - INSERT INTO Shop_Product_Permutation_Variation_Link_Audit ( - id_link, - name_field, - value_prev, - value_new, - id_change_set - ) - /* - # Changed id_product - SELECT NEW.id_link, 'id_product', OLD.id_product, NEW.id_product, NEW.id_change_set - WHERE NOT OLD.id_product <=> NEW.id_product - UNION - # Changed id_variation - SELECT NEW.id_link, 'id_variation', OLD.id_variation, NEW.id_variation, NEW.id_change_set - WHERE NOT OLD.id_variation <=> NEW.id_variation - UNION - */ - # Changed active - SELECT NEW.id_link, 'active', CONVERT(CONVERT(OLD.active, SIGNED), CHAR), CONVERT(CONVERT(NEW.active, SIGNED), CHAR), NEW.id_change_set - WHERE NOT (OLD.active <=> NEW.active) - UNION - # Changed display_order - SELECT NEW.id_link, 'display_order', CONVERT(OLD.display_order, CHAR), CONVERT(NEW.display_order, CHAR), NEW.id_change_set - WHERE NOT (OLD.display_order <=> NEW.display_order) - ; -END */;; -DELIMITER ;; -/*!50003 SET sql_mode = @saved_sql_mode */ ; -/*!50003 SET character_set_client = @saved_cs_client */ ; -/*!50003 SET character_set_results = @saved_cs_results */ ; -/*!50003 SET collation_connection = @saved_col_connection */ ; - --- --- Table structure for table `shop_product_permutation_variation_link_audit` --- - -DROP TABLE IF EXISTS `shop_product_permutation_variation_link_audit`; -/*!40101 SET @saved_cs_client = @@character_set_client */; -/*!50503 SET character_set_client = utf8mb4 */; -CREATE TABLE `shop_product_permutation_variation_link_audit` ( - `id_audit` int NOT NULL AUTO_INCREMENT, - `id_link` int NOT NULL, - `name_field` varchar(50) DEFAULT NULL, - `value_prev` varchar(500) DEFAULT NULL, - `value_new` varchar(500) DEFAULT NULL, - `id_change_set` int NOT NULL, - PRIMARY KEY (`id_audit`), - KEY `FK_Shop_Product_Permutation_Variation_Link_Audit_id_link` (`id_link`), - KEY `FK_Shop_Product_Permutation_Variation_Link_Audit_id_change_set` (`id_change_set`), - CONSTRAINT `FK_Shop_Product_Permutation_Variation_Link_Audit_id_change_set` FOREIGN KEY (`id_change_set`) REFERENCES `shop_product_change_set` (`id_change_set`) ON UPDATE RESTRICT, - CONSTRAINT `FK_Shop_Product_Permutation_Variation_Link_Audit_id_link` FOREIGN KEY (`id_link`) REFERENCES `shop_product_permutation_variation_link` (`id_link`) ON UPDATE RESTRICT -) ENGINE=InnoDB DEFAULT CHARSET=utf8mb4 COLLATE=utf8mb4_0900_ai_ci; -/*!40101 SET character_set_client = @saved_cs_client */; - --- --- Dumping data for table `shop_product_permutation_variation_link_audit` --- - -LOCK TABLES `shop_product_permutation_variation_link_audit` WRITE; -/*!40000 ALTER TABLE `shop_product_permutation_variation_link_audit` DISABLE KEYS */; -/*!40000 ALTER TABLE `shop_product_permutation_variation_link_audit` ENABLE KEYS */; -UNLOCK TABLES; - --- --- Table structure for table `shop_interval_recurrence` --- - -DROP TABLE IF EXISTS `shop_interval_recurrence`; -/*!40101 SET @saved_cs_client = @@character_set_client */; -/*!50503 SET character_set_client = utf8mb4 */; -CREATE TABLE `shop_interval_recurrence` ( - `id_interval` int NOT NULL AUTO_INCREMENT, - `code` varchar(50) DEFAULT NULL, - `name` varchar(255) DEFAULT NULL, - `name_plural` varchar(256) DEFAULT NULL, - `active` bit(1) NOT NULL DEFAULT b'1', - `created_on` datetime DEFAULT NULL, - `created_by` varchar(100) DEFAULT NULL, - `id_change_set` int DEFAULT NULL, - PRIMARY KEY (`id_interval`), - KEY `FK_Shop_Interval_Recurrence_id_change_set` (`id_change_set`), - CONSTRAINT `FK_Shop_Interval_Recurrence_id_change_set` FOREIGN KEY (`id_change_set`) REFERENCES `shop_product_change_set` (`id_change_set`) -) ENGINE=InnoDB AUTO_INCREMENT=4 DEFAULT CHARSET=utf8mb4 COLLATE=utf8mb4_0900_ai_ci; -/*!40101 SET character_set_client = @saved_cs_client */; - --- --- Dumping data for table `shop_interval_recurrence` --- - -LOCK TABLES `shop_interval_recurrence` WRITE; -/*!40000 ALTER TABLE `shop_interval_recurrence` DISABLE KEYS */; -INSERT INTO `shop_interval_recurrence` VALUES (1,'WEEK','Week','Weeks',_binary '','2024-04-28 19:03:07','root@localhost',NULL),(2,'MONTH','Month','Months',_binary '','2024-04-28 19:03:07','root@localhost',NULL),(3,'YEAR','Year','Years',_binary '','2024-04-28 19:03:07','root@localhost',NULL); -/*!40000 ALTER TABLE `shop_interval_recurrence` ENABLE KEYS */; -UNLOCK TABLES; -/*!50003 SET @saved_cs_client = @@character_set_client */ ; -/*!50003 SET @saved_cs_results = @@character_set_results */ ; -/*!50003 SET @saved_col_connection = @@collation_connection */ ; -/*!50003 SET character_set_client = utf8mb4 */ ; -/*!50003 SET character_set_results = utf8mb4 */ ; -/*!50003 SET collation_connection = utf8mb4_0900_ai_ci */ ; -/*!50003 SET @saved_sql_mode = @@sql_mode */ ; -/*!50003 SET sql_mode = 'ONLY_FULL_GROUP_BY,STRICT_TRANS_TABLES,NO_ZERO_IN_DATE,NO_ZERO_DATE,ERROR_FOR_DIVISION_BY_ZERO,NO_ENGINE_SUBSTITUTION' */ ; -DELIMITER ;;; -/*!50003 CREATE*/ /*!50017 DEFINER=`root`@`localhost`*/ /*!50003 TRIGGER `before_insert_Shop_Interval_Recurrence` BEFORE INSERT ON `shop_interval_recurrence` FOR EACH ROW BEGIN - SET NEW.created_on := IFNULL(NEW.created_on, NOW()); - SET NEW.created_by := IFNULL(NEW.created_by, IFNULL((SELECT id_user FROM Shop_User WHERE firstname = CURRENT_USER()), -1)); -END */;; -DELIMITER ;; -/*!50003 SET sql_mode = @saved_sql_mode */ ; -/*!50003 SET character_set_client = @saved_cs_client */ ; -/*!50003 SET character_set_results = @saved_cs_results */ ; -/*!50003 SET collation_connection = @saved_col_connection */ ; -/*!50003 SET @saved_cs_client = @@character_set_client */ ; -/*!50003 SET @saved_cs_results = @@character_set_results */ ; -/*!50003 SET @saved_col_connection = @@collation_connection */ ; -/*!50003 SET character_set_client = utf8mb4 */ ; -/*!50003 SET character_set_results = utf8mb4 */ ; -/*!50003 SET collation_connection = utf8mb4_0900_ai_ci */ ; -/*!50003 SET @saved_sql_mode = @@sql_mode */ ; -/*!50003 SET sql_mode = 'ONLY_FULL_GROUP_BY,STRICT_TRANS_TABLES,NO_ZERO_IN_DATE,NO_ZERO_DATE,ERROR_FOR_DIVISION_BY_ZERO,NO_ENGINE_SUBSTITUTION' */ ; -DELIMITER ;;; -/*!50003 CREATE*/ /*!50017 DEFINER=`root`@`localhost`*/ /*!50003 TRIGGER `before_update_Shop_Interval_Recurrence` BEFORE UPDATE ON `shop_interval_recurrence` FOR EACH ROW BEGIN - IF OLD.id_change_set <=> NEW.id_change_set THEN - SIGNAL SQLSTATE '45000' - SET MESSAGE_TEXT = 'New change Set ID must be provided.'; - END IF; - - INSERT INTO Shop_Interval_Recurrence_Audit ( - id_interval, - name_field, - value_prev, - value_new, - id_change_set - ) - # Changed code - SELECT NEW.id_interval, 'code', OLD.code, NEW.code, NEW.id_change_set - WHERE NOT OLD.code <=> NEW.code - UNION - # Changed name - SELECT NEW.id_interval, 'name', OLD.name, NEW.name, NEW.id_change_set - WHERE NOT OLD.name <=> NEW.name - UNION - # Changed name_plural - SELECT NEW.id_interval, 'name_plural', OLD.name_plural, NEW.name_plural, NEW.id_change_set - WHERE NOT OLD.name_plural <=> NEW.name_plural - UNION - # Changed name - SELECT NEW.id_interval, 'active', OLD.active, NEW.active, NEW.id_change_set - WHERE NOT OLD.active <=> NEW.active - ; -END */;; -DELIMITER ;; -/*!50003 SET sql_mode = @saved_sql_mode */ ; -/*!50003 SET character_set_client = @saved_cs_client */ ; -/*!50003 SET character_set_results = @saved_cs_results */ ; -/*!50003 SET collation_connection = @saved_col_connection */ ; - --- --- Table structure for table `shop_interval_recurrence_audit` --- - -DROP TABLE IF EXISTS `shop_interval_recurrence_audit`; -/*!40101 SET @saved_cs_client = @@character_set_client */; -/*!50503 SET character_set_client = utf8mb4 */; -CREATE TABLE `shop_interval_recurrence_audit` ( - `id_audit` int NOT NULL AUTO_INCREMENT, - `id_interval` int NOT NULL, - `name_field` varchar(50) DEFAULT NULL, - `value_prev` varchar(256) DEFAULT NULL, - `value_new` varchar(256) DEFAULT NULL, - `id_change_set` int NOT NULL, - PRIMARY KEY (`id_audit`), - KEY `FK_Shop_Interval_Recurrence_Audit_id_interval` (`id_interval`), - KEY `FK_Shop_Interval_Recurrence_Audit_id_change_set` (`id_change_set`), - CONSTRAINT `FK_Shop_Interval_Recurrence_Audit_id_change_set` FOREIGN KEY (`id_change_set`) REFERENCES `shop_product_change_set` (`id_change_set`), - CONSTRAINT `FK_Shop_Interval_Recurrence_Audit_id_interval` FOREIGN KEY (`id_interval`) REFERENCES `shop_interval_recurrence` (`id_interval`) ON UPDATE RESTRICT -) ENGINE=InnoDB DEFAULT CHARSET=utf8mb4 COLLATE=utf8mb4_0900_ai_ci; -/*!40101 SET character_set_client = @saved_cs_client */; - --- --- Dumping data for table `shop_interval_recurrence_audit` --- - -LOCK TABLES `shop_interval_recurrence_audit` WRITE; -/*!40000 ALTER TABLE `shop_interval_recurrence_audit` DISABLE KEYS */; -/*!40000 ALTER TABLE `shop_interval_recurrence_audit` ENABLE KEYS */; -UNLOCK TABLES; - --- --- Table structure for table `shop_region` --- - -DROP TABLE IF EXISTS `shop_region`; -/*!40101 SET @saved_cs_client = @@character_set_client */; -/*!50503 SET character_set_client = utf8mb4 */; -CREATE TABLE `shop_region` ( - `id_region` int NOT NULL AUTO_INCREMENT, - `code` varchar(50) NOT NULL, - `name` varchar(200) NOT NULL, - `active` bit(1) NOT NULL DEFAULT b'1', - `display_order` int NOT NULL, - `created_on` datetime DEFAULT NULL, - `created_by` varchar(100) DEFAULT NULL, - `id_change_set` int DEFAULT NULL, - PRIMARY KEY (`id_region`), - KEY `FK_Shop_Region_id_change_set` (`id_change_set`), - CONSTRAINT `FK_Shop_Region_id_change_set` FOREIGN KEY (`id_change_set`) REFERENCES `shop_product_change_set` (`id_change_set`) -) ENGINE=InnoDB AUTO_INCREMENT=2 DEFAULT CHARSET=utf8mb4 COLLATE=utf8mb4_0900_ai_ci; -/*!40101 SET character_set_client = @saved_cs_client */; - --- --- Dumping data for table `shop_region` --- - -LOCK TABLES `shop_region` WRITE; -/*!40000 ALTER TABLE `shop_region` DISABLE KEYS */; -INSERT INTO `shop_region` VALUES (1,'UK','United Kingdom',_binary '',1,'2024-04-28 19:03:07','root@localhost',NULL); -/*!40000 ALTER TABLE `shop_region` ENABLE KEYS */; -UNLOCK TABLES; -/*!50003 SET @saved_cs_client = @@character_set_client */ ; -/*!50003 SET @saved_cs_results = @@character_set_results */ ; -/*!50003 SET @saved_col_connection = @@collation_connection */ ; -/*!50003 SET character_set_client = utf8mb4 */ ; -/*!50003 SET character_set_results = utf8mb4 */ ; -/*!50003 SET collation_connection = utf8mb4_0900_ai_ci */ ; -/*!50003 SET @saved_sql_mode = @@sql_mode */ ; -/*!50003 SET sql_mode = 'ONLY_FULL_GROUP_BY,STRICT_TRANS_TABLES,NO_ZERO_IN_DATE,NO_ZERO_DATE,ERROR_FOR_DIVISION_BY_ZERO,NO_ENGINE_SUBSTITUTION' */ ; -DELIMITER ;;; -/*!50003 CREATE*/ /*!50017 DEFINER=`root`@`localhost`*/ /*!50003 TRIGGER `before_insert_Shop_Region` BEFORE INSERT ON `shop_region` FOR EACH ROW BEGIN - SET NEW.created_on := IFNULL(NEW.created_on, NOW()); - SET NEW.created_by := IFNULL(NEW.created_by, IFNULL((SELECT id_user FROM Shop_User WHERE firstname = CURRENT_USER()), -1)); -END */;; -DELIMITER ;; -/*!50003 SET sql_mode = @saved_sql_mode */ ; -/*!50003 SET character_set_client = @saved_cs_client */ ; -/*!50003 SET character_set_results = @saved_cs_results */ ; -/*!50003 SET collation_connection = @saved_col_connection */ ; -/*!50003 SET @saved_cs_client = @@character_set_client */ ; -/*!50003 SET @saved_cs_results = @@character_set_results */ ; -/*!50003 SET @saved_col_connection = @@collation_connection */ ; -/*!50003 SET character_set_client = utf8mb4 */ ; -/*!50003 SET character_set_results = utf8mb4 */ ; -/*!50003 SET collation_connection = utf8mb4_0900_ai_ci */ ; -/*!50003 SET @saved_sql_mode = @@sql_mode */ ; -/*!50003 SET sql_mode = 'ONLY_FULL_GROUP_BY,STRICT_TRANS_TABLES,NO_ZERO_IN_DATE,NO_ZERO_DATE,ERROR_FOR_DIVISION_BY_ZERO,NO_ENGINE_SUBSTITUTION' */ ; -DELIMITER ;;; -/*!50003 CREATE*/ /*!50017 DEFINER=`root`@`localhost`*/ /*!50003 TRIGGER `before_update_Shop_Region` BEFORE UPDATE ON `shop_region` FOR EACH ROW BEGIN - IF OLD.id_change_set <=> NEW.id_change_set THEN - SIGNAL SQLSTATE '45000' - SET MESSAGE_TEXT = 'New change Set ID must be provided.'; - END IF; - - INSERT INTO Shop_Region_Audit ( - id_region, - name_field, - value_prev, - value_new, - id_change_set - ) - # Changed code - SELECT NEW.id_region, 'code', OLD.code, NEW.code, NEW.id_change_set - WHERE NOT OLD.code <=> NEW.code - UNION - # Changed name - SELECT NEW.id_region, 'name', OLD.name, NEW.name, NEW.id_change_set - WHERE NOT OLD.name <=> NEW.name - UNION - # Changed active - SELECT NEW.id_region, 'active', CONVERT(OLD.active, CHAR), CONVERT(NEW.active, CHAR), NEW.id_change_set - WHERE NOT OLD.active <=> NEW.active - UNION - # Changed display_order - SELECT NEW.id_region, 'display_order', CONVERT(OLD.display_order, CHAR), CONVERT(NEW.display_order, CHAR), NEW.id_change_set - WHERE NOT OLD.display_order <=> NEW.display_order - ; -END */;; -DELIMITER ;; -/*!50003 SET sql_mode = @saved_sql_mode */ ; -/*!50003 SET character_set_client = @saved_cs_client */ ; -/*!50003 SET character_set_results = @saved_cs_results */ ; -/*!50003 SET collation_connection = @saved_col_connection */ ; - --- --- Table structure for table `shop_region_audit` --- - -DROP TABLE IF EXISTS `shop_region_audit`; -/*!40101 SET @saved_cs_client = @@character_set_client */; -/*!50503 SET character_set_client = utf8mb4 */; -CREATE TABLE `shop_region_audit` ( - `id_audit` int NOT NULL AUTO_INCREMENT, - `id_region` int NOT NULL, - `name_field` varchar(64) NOT NULL, - `value_prev` varchar(500) DEFAULT NULL, - `value_new` varchar(500) DEFAULT NULL, - `id_change_set` int NOT NULL, - PRIMARY KEY (`id_audit`), - KEY `FK_Shop_Region_Audit_id_region` (`id_region`), - KEY `FK_Shop_Region_Audit_id_change_set` (`id_change_set`), - CONSTRAINT `FK_Shop_Region_Audit_id_change_set` FOREIGN KEY (`id_change_set`) REFERENCES `shop_product_change_set` (`id_change_set`), - CONSTRAINT `FK_Shop_Region_Audit_id_region` FOREIGN KEY (`id_region`) REFERENCES `shop_region` (`id_region`) ON UPDATE RESTRICT -) ENGINE=InnoDB DEFAULT CHARSET=utf8mb4 COLLATE=utf8mb4_0900_ai_ci; -/*!40101 SET character_set_client = @saved_cs_client */; - --- --- Dumping data for table `shop_region_audit` --- - -LOCK TABLES `shop_region_audit` WRITE; -/*!40000 ALTER TABLE `shop_region_audit` DISABLE KEYS */; -/*!40000 ALTER TABLE `shop_region_audit` ENABLE KEYS */; -UNLOCK TABLES; - --- --- Table structure for table `shop_region_branch` --- - -DROP TABLE IF EXISTS `shop_region_branch`; -/*!40101 SET @saved_cs_client = @@character_set_client */; -/*!50503 SET character_set_client = utf8mb4 */; -CREATE TABLE `shop_region_branch` ( - `id_branch` int NOT NULL AUTO_INCREMENT, - `id_region_parent` int NOT NULL, - `id_region_child` int NOT NULL, - `active` bit(1) NOT NULL DEFAULT b'1', - `display_order` int NOT NULL, - `created_on` datetime DEFAULT NULL, - `created_by` varchar(100) DEFAULT NULL, - `id_change_set` int DEFAULT NULL, - PRIMARY KEY (`id_branch`), - KEY `FK_Shop_Region_Branch_id_region_parent` (`id_region_parent`), - KEY `FK_Shop_Region_Branch_id_region_child` (`id_region_child`), - KEY `FK_Shop_Region_Branch_id_change_set` (`id_change_set`), - CONSTRAINT `FK_Shop_Region_Branch_id_change_set` FOREIGN KEY (`id_change_set`) REFERENCES `shop_product_change_set` (`id_change_set`), - CONSTRAINT `FK_Shop_Region_Branch_id_region_child` FOREIGN KEY (`id_region_child`) REFERENCES `shop_region` (`id_region`) ON UPDATE RESTRICT, - CONSTRAINT `FK_Shop_Region_Branch_id_region_parent` FOREIGN KEY (`id_region_parent`) REFERENCES `shop_region` (`id_region`) ON UPDATE RESTRICT -) ENGINE=InnoDB DEFAULT CHARSET=utf8mb4 COLLATE=utf8mb4_0900_ai_ci; -/*!40101 SET character_set_client = @saved_cs_client */; - --- --- Dumping data for table `shop_region_branch` --- - -LOCK TABLES `shop_region_branch` WRITE; -/*!40000 ALTER TABLE `shop_region_branch` DISABLE KEYS */; -/*!40000 ALTER TABLE `shop_region_branch` ENABLE KEYS */; -UNLOCK TABLES; -/*!50003 SET @saved_cs_client = @@character_set_client */ ; -/*!50003 SET @saved_cs_results = @@character_set_results */ ; -/*!50003 SET @saved_col_connection = @@collation_connection */ ; -/*!50003 SET character_set_client = utf8mb4 */ ; -/*!50003 SET character_set_results = utf8mb4 */ ; -/*!50003 SET collation_connection = utf8mb4_0900_ai_ci */ ; -/*!50003 SET @saved_sql_mode = @@sql_mode */ ; -/*!50003 SET sql_mode = 'ONLY_FULL_GROUP_BY,STRICT_TRANS_TABLES,NO_ZERO_IN_DATE,NO_ZERO_DATE,ERROR_FOR_DIVISION_BY_ZERO,NO_ENGINE_SUBSTITUTION' */ ; -DELIMITER ;;; -/*!50003 CREATE*/ /*!50017 DEFINER=`root`@`localhost`*/ /*!50003 TRIGGER `before_insert_Shop_Region_Branch` BEFORE INSERT ON `shop_region_branch` FOR EACH ROW BEGIN - SET NEW.created_on := IFNULL(NEW.created_on, NOW()); - SET NEW.created_by := IFNULL(NEW.created_by, IFNULL((SELECT id_user FROM Shop_User WHERE firstname = CURRENT_USER()), -1)); -END */;; -DELIMITER ;; -/*!50003 SET sql_mode = @saved_sql_mode */ ; -/*!50003 SET character_set_client = @saved_cs_client */ ; -/*!50003 SET character_set_results = @saved_cs_results */ ; -/*!50003 SET collation_connection = @saved_col_connection */ ; -/*!50003 SET @saved_cs_client = @@character_set_client */ ; -/*!50003 SET @saved_cs_results = @@character_set_results */ ; -/*!50003 SET @saved_col_connection = @@collation_connection */ ; -/*!50003 SET character_set_client = utf8mb4 */ ; -/*!50003 SET character_set_results = utf8mb4 */ ; -/*!50003 SET collation_connection = utf8mb4_0900_ai_ci */ ; -/*!50003 SET @saved_sql_mode = @@sql_mode */ ; -/*!50003 SET sql_mode = 'ONLY_FULL_GROUP_BY,STRICT_TRANS_TABLES,NO_ZERO_IN_DATE,NO_ZERO_DATE,ERROR_FOR_DIVISION_BY_ZERO,NO_ENGINE_SUBSTITUTION' */ ; -DELIMITER ;;; -/*!50003 CREATE*/ /*!50017 DEFINER=`root`@`localhost`*/ /*!50003 TRIGGER `before_update_Shop_Region_Branch` BEFORE UPDATE ON `shop_region_branch` FOR EACH ROW BEGIN - IF OLD.id_change_set <=> NEW.id_change_set THEN - SIGNAL SQLSTATE '45000' - SET MESSAGE_TEXT = 'New change Set ID must be provided.'; - END IF; - - INSERT INTO Shop_Region_Branch_Audit ( - id_branch, - name_field, - value_prev, - value_new, - id_change_set - ) - /* - # Changed depth - SELECT NEW.id_branch, 'depth', CONVERT(OLD.depth, CHAR), CONVERT(NEW.depth, CHAR), NEW.id_change_set - WHERE NOT OLD.depth <=> NEW.depth - UNION - */ - # Changed active - SELECT NEW.id_branch, 'active', CONVERT(OLD.active, CHAR), CONVERT(NEW.active, CHAR), NEW.id_change_set - WHERE NOT OLD.active <=> NEW.active - UNION - # Changed display_order - SELECT NEW.id_branch, 'display_order', CONVERT(OLD.display_order, CHAR), CONVERT(NEW.display_order, CHAR), NEW.id_change_set - WHERE NOT OLD.display_order <=> NEW.display_order - ; -END */;; -DELIMITER ;; -/*!50003 SET sql_mode = @saved_sql_mode */ ; -/*!50003 SET character_set_client = @saved_cs_client */ ; -/*!50003 SET character_set_results = @saved_cs_results */ ; -/*!50003 SET collation_connection = @saved_col_connection */ ; - --- --- Table structure for table `shop_region_branch_audit` --- - -DROP TABLE IF EXISTS `shop_region_branch_audit`; -/*!40101 SET @saved_cs_client = @@character_set_client */; -/*!50503 SET character_set_client = utf8mb4 */; -CREATE TABLE `shop_region_branch_audit` ( - `id_audit` int NOT NULL AUTO_INCREMENT, - `id_branch` int NOT NULL, - `name_field` varchar(64) NOT NULL, - `value_prev` varchar(500) DEFAULT NULL, - `value_new` varchar(500) DEFAULT NULL, - `id_change_set` int NOT NULL, - PRIMARY KEY (`id_audit`), - KEY `FK_Shop_Region_Branch_Audit_id_branch` (`id_branch`), - KEY `FK_Shop_Region_Branch_Audit_id_change_set` (`id_change_set`), - CONSTRAINT `FK_Shop_Region_Branch_Audit_id_branch` FOREIGN KEY (`id_branch`) REFERENCES `shop_region_branch` (`id_branch`) ON UPDATE RESTRICT, - CONSTRAINT `FK_Shop_Region_Branch_Audit_id_change_set` FOREIGN KEY (`id_change_set`) REFERENCES `shop_product_change_set` (`id_change_set`) -) ENGINE=InnoDB DEFAULT CHARSET=utf8mb4 COLLATE=utf8mb4_0900_ai_ci; -/*!40101 SET character_set_client = @saved_cs_client */; - --- --- Dumping data for table `shop_region_branch_audit` --- - -LOCK TABLES `shop_region_branch_audit` WRITE; -/*!40000 ALTER TABLE `shop_region_branch_audit` DISABLE KEYS */; -/*!40000 ALTER TABLE `shop_region_branch_audit` ENABLE KEYS */; -UNLOCK TABLES; - --- --- Table structure for table `shop_role` --- - -DROP TABLE IF EXISTS `shop_role`; -/*!40101 SET @saved_cs_client = @@character_set_client */; -/*!50503 SET character_set_client = utf8mb4 */; -CREATE TABLE `shop_role` ( - `id_role` int NOT NULL AUTO_INCREMENT, - `code` varchar(50) DEFAULT NULL, - `name` varchar(255) DEFAULT NULL, - `active` bit(1) NOT NULL DEFAULT b'1', - `display_order` int NOT NULL, - `created_on` datetime DEFAULT NULL, - `created_by` varchar(100) DEFAULT NULL, - `id_change_set` int DEFAULT NULL, - PRIMARY KEY (`id_role`), - KEY `FK_Shop_Role_id_change_set` (`id_change_set`), - CONSTRAINT `FK_Shop_Role_id_change_set` FOREIGN KEY (`id_change_set`) REFERENCES `shop_user_change_set` (`id_change_set`) -) ENGINE=InnoDB AUTO_INCREMENT=3 DEFAULT CHARSET=utf8mb4 COLLATE=utf8mb4_0900_ai_ci; -/*!40101 SET character_set_client = @saved_cs_client */; - --- --- Dumping data for table `shop_role` --- - -LOCK TABLES `shop_role` WRITE; -/*!40000 ALTER TABLE `shop_role` DISABLE KEYS */; -INSERT INTO `shop_role` VALUES (1,'DIRECTOR','Director',_binary '',1,'2024-04-28 19:03:07','root@localhost',NULL),(2,'USER','User',_binary '',2,'2024-04-28 19:03:07','root@localhost',NULL); -/*!40000 ALTER TABLE `shop_role` ENABLE KEYS */; -UNLOCK TABLES; -/*!50003 SET @saved_cs_client = @@character_set_client */ ; -/*!50003 SET @saved_cs_results = @@character_set_results */ ; -/*!50003 SET @saved_col_connection = @@collation_connection */ ; -/*!50003 SET character_set_client = utf8mb4 */ ; -/*!50003 SET character_set_results = utf8mb4 */ ; -/*!50003 SET collation_connection = utf8mb4_0900_ai_ci */ ; -/*!50003 SET @saved_sql_mode = @@sql_mode */ ; -/*!50003 SET sql_mode = 'ONLY_FULL_GROUP_BY,STRICT_TRANS_TABLES,NO_ZERO_IN_DATE,NO_ZERO_DATE,ERROR_FOR_DIVISION_BY_ZERO,NO_ENGINE_SUBSTITUTION' */ ; -DELIMITER ;;; -/*!50003 CREATE*/ /*!50017 DEFINER=`root`@`localhost`*/ /*!50003 TRIGGER `before_insert_Shop_Role` BEFORE INSERT ON `shop_role` FOR EACH ROW BEGIN - IF NEW.created_on <=> NULL THEN - SET NEW.created_on := IFNULL(NEW.created_on, NOW()); - END IF; - IF NEW.created_by <=> NULL THEN - SET NEW.created_by := IFNULL(NEW.created_by, IFNULL((SELECT id_user FROM Shop_User WHERE firstname = CURRENT_USER()), -1)); - END IF; -END */;; -DELIMITER ;; -/*!50003 SET sql_mode = @saved_sql_mode */ ; -/*!50003 SET character_set_client = @saved_cs_client */ ; -/*!50003 SET character_set_results = @saved_cs_results */ ; -/*!50003 SET collation_connection = @saved_col_connection */ ; -/*!50003 SET @saved_cs_client = @@character_set_client */ ; -/*!50003 SET @saved_cs_results = @@character_set_results */ ; -/*!50003 SET @saved_col_connection = @@collation_connection */ ; -/*!50003 SET character_set_client = utf8mb4 */ ; -/*!50003 SET character_set_results = utf8mb4 */ ; -/*!50003 SET collation_connection = utf8mb4_0900_ai_ci */ ; -/*!50003 SET @saved_sql_mode = @@sql_mode */ ; -/*!50003 SET sql_mode = 'ONLY_FULL_GROUP_BY,STRICT_TRANS_TABLES,NO_ZERO_IN_DATE,NO_ZERO_DATE,ERROR_FOR_DIVISION_BY_ZERO,NO_ENGINE_SUBSTITUTION' */ ; -DELIMITER ;;; -/*!50003 CREATE*/ /*!50017 DEFINER=`root`@`localhost`*/ /*!50003 TRIGGER `before_update_Shop_Role` BEFORE UPDATE ON `shop_role` FOR EACH ROW BEGIN - IF OLD.id_change_set <=> NEW.id_change_set THEN - SIGNAL SQLSTATE '45000' - SET MESSAGE_TEXT = 'New change Set ID must be provided.'; - END IF; - - INSERT INTO Shop_Role_Audit ( - id_role, - name_field, - value_prev, - value_new, - id_change_set - ) - # Changed code - SELECT NEW.id_role, 'code', OLD.code, NEW.code, NEW.id_change_set - WHERE NOT OLD.code <=> NEW.code - UNION - # Changed name - SELECT NEW.id_role, 'name', OLD.name, NEW.name, NEW.id_change_set - WHERE NOT OLD.name <=> NEW.name - UNION - # Changed active - SELECT NEW.id_role, 'active', CONVERT(CONVERT(OLD.active, SIGNED), CHAR), CONVERT(CONVERT(NEW.active, SIGNED), CHAR), NEW.id_change_set - WHERE NOT (OLD.active <=> NEW.active) - UNION - # Changed display_order - SELECT NEW.id_role, 'display_order', CONVERT(OLD.display_order, CHAR), CONVERT(NEW.display_order, CHAR), NEW.id_change_set - WHERE NOT OLD.display_order <=> NEW.display_order - ; -END */;; -DELIMITER ;; -/*!50003 SET sql_mode = @saved_sql_mode */ ; -/*!50003 SET character_set_client = @saved_cs_client */ ; -/*!50003 SET character_set_results = @saved_cs_results */ ; -/*!50003 SET collation_connection = @saved_col_connection */ ; - --- --- Table structure for table `shop_role_audit` --- - -DROP TABLE IF EXISTS `shop_role_audit`; -/*!40101 SET @saved_cs_client = @@character_set_client */; -/*!50503 SET character_set_client = utf8mb4 */; -CREATE TABLE `shop_role_audit` ( - `id_audit` int NOT NULL AUTO_INCREMENT, - `id_role` int NOT NULL, - `name_field` varchar(50) DEFAULT NULL, - `value_prev` varchar(500) DEFAULT NULL, - `value_new` varchar(500) DEFAULT NULL, - `id_change_set` int NOT NULL, - PRIMARY KEY (`id_audit`), - KEY `FK_Shop_Role_Audit_id_role` (`id_role`), - KEY `FK_Shop_Role_Audit_id_change_set` (`id_change_set`), - CONSTRAINT `FK_Shop_Role_Audit_id_change_set` FOREIGN KEY (`id_change_set`) REFERENCES `shop_user_change_set` (`id_change_set`) ON UPDATE RESTRICT, - CONSTRAINT `FK_Shop_Role_Audit_id_role` FOREIGN KEY (`id_role`) REFERENCES `shop_role` (`id_role`) ON UPDATE RESTRICT -) ENGINE=InnoDB DEFAULT CHARSET=utf8mb4 COLLATE=utf8mb4_0900_ai_ci; -/*!40101 SET character_set_client = @saved_cs_client */; - --- --- Dumping data for table `shop_role_audit` --- - -LOCK TABLES `shop_role_audit` WRITE; -/*!40000 ALTER TABLE `shop_role_audit` DISABLE KEYS */; -/*!40000 ALTER TABLE `shop_role_audit` ENABLE KEYS */; -UNLOCK TABLES; - --- --- Table structure for table `shop_role_permission_link` --- - -DROP TABLE IF EXISTS `shop_role_permission_link`; -/*!40101 SET @saved_cs_client = @@character_set_client */; -/*!50503 SET character_set_client = utf8mb4 */; -CREATE TABLE `shop_role_permission_link` ( - `id_link` int NOT NULL AUTO_INCREMENT, - `id_role` int DEFAULT NULL, - `id_permission` int DEFAULT NULL, - `id_access_level` int DEFAULT NULL, - `active` bit(1) NOT NULL DEFAULT b'1', - `created_on` datetime DEFAULT NULL, - `created_by` varchar(100) DEFAULT NULL, - `id_change_set` int DEFAULT NULL, - PRIMARY KEY (`id_link`), - KEY `FK_Shop_Role_Permission_Link_id_role` (`id_role`), - KEY `FK_Shop_Role_Permission_Link_id_permission` (`id_permission`), - KEY `FK_Shop_Role_Permission_Link_id_access_level` (`id_access_level`), - KEY `FK_Shop_Role_Permission_Link_id_change_set` (`id_change_set`), - CONSTRAINT `FK_Shop_Role_Permission_Link_id_access_level` FOREIGN KEY (`id_access_level`) REFERENCES `shop_access_level` (`id_access_level`), - CONSTRAINT `FK_Shop_Role_Permission_Link_id_change_set` FOREIGN KEY (`id_change_set`) REFERENCES `shop_user_change_set` (`id_change_set`), - CONSTRAINT `FK_Shop_Role_Permission_Link_id_permission` FOREIGN KEY (`id_permission`) REFERENCES `shop_permission` (`id_permission`) ON UPDATE RESTRICT, - CONSTRAINT `FK_Shop_Role_Permission_Link_id_role` FOREIGN KEY (`id_role`) REFERENCES `shop_role` (`id_role`) ON UPDATE RESTRICT -) ENGINE=InnoDB AUTO_INCREMENT=11 DEFAULT CHARSET=utf8mb4 COLLATE=utf8mb4_0900_ai_ci; -/*!40101 SET character_set_client = @saved_cs_client */; - --- --- Dumping data for table `shop_role_permission_link` --- - -LOCK TABLES `shop_role_permission_link` WRITE; -/*!40000 ALTER TABLE `shop_role_permission_link` DISABLE KEYS */; -INSERT INTO `shop_role_permission_link` VALUES (1,1,1,3,_binary '','2024-04-28 19:03:07','root@localhost',NULL),(2,1,2,3,_binary '','2024-04-28 19:03:07','root@localhost',NULL),(3,1,3,3,_binary '','2024-04-28 19:03:07','root@localhost',NULL),(4,1,4,3,_binary '','2024-04-28 19:03:07','root@localhost',NULL),(5,1,5,3,_binary '','2024-04-28 19:03:07','root@localhost',NULL),(6,2,1,1,_binary '','2024-04-28 19:03:07','root@localhost',NULL),(7,2,2,1,_binary '','2024-04-28 19:03:07','root@localhost',NULL),(8,2,3,1,_binary '','2024-04-28 19:03:07','root@localhost',NULL),(9,2,4,1,_binary '','2024-04-28 19:03:07','root@localhost',NULL),(10,2,5,1,_binary '','2024-04-28 19:03:07','root@localhost',NULL); -/*!40000 ALTER TABLE `shop_role_permission_link` ENABLE KEYS */; -UNLOCK TABLES; -/*!50003 SET @saved_cs_client = @@character_set_client */ ; -/*!50003 SET @saved_cs_results = @@character_set_results */ ; -/*!50003 SET @saved_col_connection = @@collation_connection */ ; -/*!50003 SET character_set_client = utf8mb4 */ ; -/*!50003 SET character_set_results = utf8mb4 */ ; -/*!50003 SET collation_connection = utf8mb4_0900_ai_ci */ ; -/*!50003 SET @saved_sql_mode = @@sql_mode */ ; -/*!50003 SET sql_mode = 'ONLY_FULL_GROUP_BY,STRICT_TRANS_TABLES,NO_ZERO_IN_DATE,NO_ZERO_DATE,ERROR_FOR_DIVISION_BY_ZERO,NO_ENGINE_SUBSTITUTION' */ ; -DELIMITER ;;; -/*!50003 CREATE*/ /*!50017 DEFINER=`root`@`localhost`*/ /*!50003 TRIGGER `before_insert_Shop_Role_Permission_Link` BEFORE INSERT ON `shop_role_permission_link` FOR EACH ROW BEGIN - IF NEW.created_on <=> NULL THEN - SET NEW.created_on := IFNULL(NEW.created_on, NOW()); - END IF; - IF NEW.created_by <=> NULL THEN - SET NEW.created_by := IFNULL(NEW.created_by, IFNULL((SELECT id_user FROM Shop_User WHERE firstname = CURRENT_USER()), -1)); - END IF; -END */;; -DELIMITER ;; -/*!50003 SET sql_mode = @saved_sql_mode */ ; -/*!50003 SET character_set_client = @saved_cs_client */ ; -/*!50003 SET character_set_results = @saved_cs_results */ ; -/*!50003 SET collation_connection = @saved_col_connection */ ; -/*!50003 SET @saved_cs_client = @@character_set_client */ ; -/*!50003 SET @saved_cs_results = @@character_set_results */ ; -/*!50003 SET @saved_col_connection = @@collation_connection */ ; -/*!50003 SET character_set_client = utf8mb4 */ ; -/*!50003 SET character_set_results = utf8mb4 */ ; -/*!50003 SET collation_connection = utf8mb4_0900_ai_ci */ ; -/*!50003 SET @saved_sql_mode = @@sql_mode */ ; -/*!50003 SET sql_mode = 'ONLY_FULL_GROUP_BY,STRICT_TRANS_TABLES,NO_ZERO_IN_DATE,NO_ZERO_DATE,ERROR_FOR_DIVISION_BY_ZERO,NO_ENGINE_SUBSTITUTION' */ ; -DELIMITER ;;; -/*!50003 CREATE*/ /*!50017 DEFINER=`root`@`localhost`*/ /*!50003 TRIGGER `before_update_Shop_Role_Permission_Link` BEFORE UPDATE ON `shop_role_permission_link` FOR EACH ROW BEGIN - IF OLD.id_change_set <=> NEW.id_change_set THEN - SIGNAL SQLSTATE '45000' - SET MESSAGE_TEXT = 'New change Set ID must be provided.'; - END IF; - - INSERT INTO Shop_Role_Permission_Link_Audit ( - id_link, - name_field, - value_prev, - value_new, - id_change_set - ) - /* - # Changed id_role - SELECT NEW.id_link, 'id_role', CONVERT(OLD.id_role, CHAR), CONVERT(NEW.id_role, CHAR), NEW.id_change_set - WHERE NOT OLD.id_role <=> NEW.id_role - UNION - # Changed id_permission - SELECT NEW.id_link, 'id_permission', CONVERT(OLD.id_permission, CHAR), CONVERT(NEW.id_permission, CHAR), NEW.id_change_set - WHERE NOT OLD.id_permission <=> NEW.id_permission - UNION - */ - # Changed id_access_level - SELECT NEW.id_link, 'id_access_level', CONVERT(OLD.id_access_level, CHAR), CONVERT(NEW.id_access_level, CHAR), NEW.id_change_set - WHERE NOT OLD.id_access_level <=> NEW.id_access_level - UNION - # Changed active - SELECT NEW.id_link, 'active', CONVERT(CONVERT(OLD.active, SIGNED), CHAR), CONVERT(CONVERT(NEW.active, SIGNED), CHAR), NEW.id_change_set - WHERE NOT (OLD.active <=> NEW.active) - ; -END */;; -DELIMITER ;; -/*!50003 SET sql_mode = @saved_sql_mode */ ; -/*!50003 SET character_set_client = @saved_cs_client */ ; -/*!50003 SET character_set_results = @saved_cs_results */ ; -/*!50003 SET collation_connection = @saved_col_connection */ ; - --- --- Table structure for table `shop_role_permission_link_audit` --- - -DROP TABLE IF EXISTS `shop_role_permission_link_audit`; -/*!40101 SET @saved_cs_client = @@character_set_client */; -/*!50503 SET character_set_client = utf8mb4 */; -CREATE TABLE `shop_role_permission_link_audit` ( - `id_audit` int NOT NULL AUTO_INCREMENT, - `id_link` int NOT NULL, - `name_field` varchar(50) DEFAULT NULL, - `value_prev` varchar(500) DEFAULT NULL, - `value_new` varchar(500) DEFAULT NULL, - `id_change_set` int NOT NULL, - PRIMARY KEY (`id_audit`), - KEY `FK_Shop_Role_Permission_Link_Audit_id_link` (`id_link`), - KEY `FK_Shop_Role_Permission_Link_Audit_id_change_set` (`id_change_set`), - CONSTRAINT `FK_Shop_Role_Permission_Link_Audit_id_change_set` FOREIGN KEY (`id_change_set`) REFERENCES `shop_user_change_set` (`id_change_set`), - CONSTRAINT `FK_Shop_Role_Permission_Link_Audit_id_link` FOREIGN KEY (`id_link`) REFERENCES `shop_role_permission_link` (`id_link`) ON UPDATE RESTRICT -) ENGINE=InnoDB DEFAULT CHARSET=utf8mb4 COLLATE=utf8mb4_0900_ai_ci; -/*!40101 SET character_set_client = @saved_cs_client */; - --- --- Dumping data for table `shop_role_permission_link_audit` --- - -LOCK TABLES `shop_role_permission_link_audit` WRITE; -/*!40000 ALTER TABLE `shop_role_permission_link_audit` DISABLE KEYS */; -/*!40000 ALTER TABLE `shop_role_permission_link_audit` ENABLE KEYS */; -UNLOCK TABLES; - --- --- Table structure for table `shop_tax_or_surcharge` --- - -DROP TABLE IF EXISTS `shop_tax_or_surcharge`; -/*!40101 SET @saved_cs_client = @@character_set_client */; -/*!50503 SET character_set_client = utf8mb4 */; -CREATE TABLE `shop_tax_or_surcharge` ( - `id_tax` int NOT NULL AUTO_INCREMENT, - `code` varchar(50) NOT NULL, - `name` varchar(200) NOT NULL, - `id_region_buyer` int NOT NULL, - `id_region_seller` int NOT NULL, - `id_currency` int DEFAULT NULL, - `fixed_fee` float NOT NULL DEFAULT '0', - `multiplier` float NOT NULL DEFAULT '1', - `apply_fixed_fee_before_multiplier` bit(1) DEFAULT b'1', - `quantity_min` float NOT NULL DEFAULT '0', - `quantity_max` float NOT NULL, - `active` bit(1) NOT NULL DEFAULT b'1', - `display_order` int NOT NULL, - `created_on` datetime DEFAULT NULL, - `created_by` varchar(100) DEFAULT NULL, - `id_change_set` int DEFAULT NULL, - PRIMARY KEY (`id_tax`), - KEY `FK_Shop_Tax_Or_Surcharge_id_region_buyer` (`id_region_buyer`), - KEY `FK_Shop_Tax_Or_Surcharge_id_region_seller` (`id_region_seller`), - KEY `FK_Shop_Tax_Or_Surcharge_id_currency` (`id_currency`), - KEY `FK_Shop_Tax_Or_Surcharge_id_change_set` (`id_change_set`), - CONSTRAINT `FK_Shop_Tax_Or_Surcharge_id_change_set` FOREIGN KEY (`id_change_set`) REFERENCES `shop_product_change_set` (`id_change_set`), - CONSTRAINT `FK_Shop_Tax_Or_Surcharge_id_currency` FOREIGN KEY (`id_currency`) REFERENCES `shop_currency` (`id_currency`) ON UPDATE RESTRICT, - CONSTRAINT `FK_Shop_Tax_Or_Surcharge_id_region_buyer` FOREIGN KEY (`id_region_buyer`) REFERENCES `shop_region` (`id_region`), - CONSTRAINT `FK_Shop_Tax_Or_Surcharge_id_region_seller` FOREIGN KEY (`id_region_seller`) REFERENCES `shop_region` (`id_region`), - CONSTRAINT `shop_tax_or_surcharge_chk_1` CHECK ((`multiplier` > 0)) -) ENGINE=InnoDB AUTO_INCREMENT=2 DEFAULT CHARSET=utf8mb4 COLLATE=utf8mb4_0900_ai_ci; -/*!40101 SET character_set_client = @saved_cs_client */; - --- --- Dumping data for table `shop_tax_or_surcharge` --- - -LOCK TABLES `shop_tax_or_surcharge` WRITE; -/*!40000 ALTER TABLE `shop_tax_or_surcharge` DISABLE KEYS */; -INSERT INTO `shop_tax_or_surcharge` VALUES (1,'VAT','Value Added Tax',1,1,NULL,0,0.2,_binary '',0,1,_binary '',1,'2024-04-28 19:03:07','root@localhost',NULL); -/*!40000 ALTER TABLE `shop_tax_or_surcharge` ENABLE KEYS */; -UNLOCK TABLES; -/*!50003 SET @saved_cs_client = @@character_set_client */ ; -/*!50003 SET @saved_cs_results = @@character_set_results */ ; -/*!50003 SET @saved_col_connection = @@collation_connection */ ; -/*!50003 SET character_set_client = utf8mb4 */ ; -/*!50003 SET character_set_results = utf8mb4 */ ; -/*!50003 SET collation_connection = utf8mb4_0900_ai_ci */ ; -/*!50003 SET @saved_sql_mode = @@sql_mode */ ; -/*!50003 SET sql_mode = 'ONLY_FULL_GROUP_BY,STRICT_TRANS_TABLES,NO_ZERO_IN_DATE,NO_ZERO_DATE,ERROR_FOR_DIVISION_BY_ZERO,NO_ENGINE_SUBSTITUTION' */ ; -DELIMITER ;;; -/*!50003 CREATE*/ /*!50017 DEFINER=`root`@`localhost`*/ /*!50003 TRIGGER `before_insert_Shop_Tax_Or_Surcharge` BEFORE INSERT ON `shop_tax_or_surcharge` FOR EACH ROW BEGIN - SET NEW.created_on := IFNULL(NEW.created_on, NOW()); - SET NEW.created_by := IFNULL(NEW.created_by, IFNULL((SELECT id_user FROM Shop_User WHERE firstname = CURRENT_USER()), -1)); -END */;; -DELIMITER ;; -/*!50003 SET sql_mode = @saved_sql_mode */ ; -/*!50003 SET character_set_client = @saved_cs_client */ ; -/*!50003 SET character_set_results = @saved_cs_results */ ; -/*!50003 SET collation_connection = @saved_col_connection */ ; -/*!50003 SET @saved_cs_client = @@character_set_client */ ; -/*!50003 SET @saved_cs_results = @@character_set_results */ ; -/*!50003 SET @saved_col_connection = @@collation_connection */ ; -/*!50003 SET character_set_client = utf8mb4 */ ; -/*!50003 SET character_set_results = utf8mb4 */ ; -/*!50003 SET collation_connection = utf8mb4_0900_ai_ci */ ; -/*!50003 SET @saved_sql_mode = @@sql_mode */ ; -/*!50003 SET sql_mode = 'ONLY_FULL_GROUP_BY,STRICT_TRANS_TABLES,NO_ZERO_IN_DATE,NO_ZERO_DATE,ERROR_FOR_DIVISION_BY_ZERO,NO_ENGINE_SUBSTITUTION' */ ; -DELIMITER ;;; -/*!50003 CREATE*/ /*!50017 DEFINER=`root`@`localhost`*/ /*!50003 TRIGGER `before_update_Shop_Tax_Or_Surcharge` BEFORE UPDATE ON `shop_tax_or_surcharge` FOR EACH ROW BEGIN - IF OLD.id_change_set <=> NEW.id_change_set THEN - SIGNAL SQLSTATE '45000' - SET MESSAGE_TEXT = 'New change Set ID must be provided.'; - END IF; - - INSERT INTO Shop_Tax_Or_Surcharge_Audit ( - id_tax, - name_field, - value_prev, - value_new, - id_change_set - ) - # Changed code - SELECT NEW.id_tax, 'code', OLD.code, NEW.code, NEW.id_change_set - WHERE NOT OLD.code <=> NEW.code - UNION - # Changed name - SELECT NEW.id_tax, 'name', OLD.name, NEW.name, NEW.id_change_set - WHERE NOT OLD.name <=> NEW.name - UNION - # Changed fixed_fee - SELECT NEW.id_tax, 'fixed_fee', OLD.fixed_fee, NEW.fixed_fee, NEW.id_change_set - WHERE NOT OLD.fixed_fee <=> NEW.fixed_fee - UNION - # Changed multiplier - SELECT NEW.id_tax, 'multiplier', OLD.multiplier, NEW.multiplier, NEW.id_change_set - WHERE NOT OLD.multiplier <=> NEW.multiplier - UNION - # Changed apply_fixed_fee_before_multiplier - SELECT NEW.id_tax, 'apply_fixed_fee_before_multiplier', CONVERT(CONVERT(OLD.apply_fixed_fee_before_multiplier, SIGNED), CHAR), CONVERT(CONVERT(NEW.apply_fixed_fee_before_multiplier, SIGNED), CHAR), NEW.id_change_set - WHERE NOT OLD.apply_fixed_fee_before_multiplier <=> NEW.apply_fixed_fee_before_multiplier - UNION - # Changed quantity_min - SELECT NEW.id_tax, 'quantity_min', OLD.quantity_min, NEW.quantity_min, NEW.id_change_set - WHERE NOT OLD.quantity_min <=> NEW.quantity_min - UNION - # Changed quantity_max - SELECT NEW.id_tax, 'quantity_max', OLD.quantity_max, NEW.quantity_max, NEW.id_change_set - WHERE NOT OLD.quantity_max <=> NEW.quantity_max - UNION - # Changed display_order - SELECT NEW.id_tax, 'display_order', CONVERT(OLD.display_order, CHAR), CONVERT(NEW.display_order, CHAR), NEW.id_change_set - WHERE NOT OLD.display_order <=> NEW.display_order - UNION - # Changed active - SELECT NEW.id_tax, 'active', CONVERT(CONVERT(OLD.active, SIGNED), CHAR), CONVERT(CONVERT(NEW.active, SIGNED), CHAR), NEW.id_change_set - WHERE NOT OLD.active <=> NEW.active - ; -END */;; -DELIMITER ;; -/*!50003 SET sql_mode = @saved_sql_mode */ ; -/*!50003 SET character_set_client = @saved_cs_client */ ; -/*!50003 SET character_set_results = @saved_cs_results */ ; -/*!50003 SET collation_connection = @saved_col_connection */ ; - --- --- Table structure for table `shop_tax_or_surcharge_audit` --- - -DROP TABLE IF EXISTS `shop_tax_or_surcharge_audit`; -/*!40101 SET @saved_cs_client = @@character_set_client */; -/*!50503 SET character_set_client = utf8mb4 */; -CREATE TABLE `shop_tax_or_surcharge_audit` ( - `id_audit` int NOT NULL AUTO_INCREMENT, - `id_tax` int NOT NULL, - `name_field` varchar(50) DEFAULT NULL, - `value_prev` varchar(500) DEFAULT NULL, - `value_new` varchar(500) DEFAULT NULL, - `id_change_set` int NOT NULL, - PRIMARY KEY (`id_audit`), - KEY `FK_Shop_Tax_Or_Surcharge_Audit_id_discount` (`id_tax`), - KEY `FK_Shop_Tax_Or_Surcharge_Audit_id_change_set` (`id_change_set`), - CONSTRAINT `FK_Shop_Tax_Or_Surcharge_Audit_id_change_set` FOREIGN KEY (`id_change_set`) REFERENCES `shop_product_change_set` (`id_change_set`) ON UPDATE RESTRICT, - CONSTRAINT `FK_Shop_Tax_Or_Surcharge_Audit_id_discount` FOREIGN KEY (`id_tax`) REFERENCES `shop_tax_or_surcharge` (`id_tax`) ON UPDATE RESTRICT -) ENGINE=InnoDB DEFAULT CHARSET=utf8mb4 COLLATE=utf8mb4_0900_ai_ci; -/*!40101 SET character_set_client = @saved_cs_client */; - --- --- Dumping data for table `shop_tax_or_surcharge_audit` --- - -LOCK TABLES `shop_tax_or_surcharge_audit` WRITE; -/*!40000 ALTER TABLE `shop_tax_or_surcharge_audit` DISABLE KEYS */; -/*!40000 ALTER TABLE `shop_tax_or_surcharge_audit` ENABLE KEYS */; -UNLOCK TABLES; - --- --- Table structure for table `shop_user` --- - -DROP TABLE IF EXISTS `shop_user`; -/*!40101 SET @saved_cs_client = @@character_set_client */; -/*!50503 SET character_set_client = utf8mb4 */; -CREATE TABLE `shop_user` ( - `id_user` varchar(200) NOT NULL, - `name` varchar(255) NOT NULL, - `email` varchar(254) NOT NULL, - `email_verified` bit(1) NOT NULL DEFAULT b'0', - `is_super_user` bit(1) NOT NULL DEFAULT b'0', - `active` bit(1) NOT NULL DEFAULT b'1', - `created_on` datetime DEFAULT NULL, - `created_by` varchar(100) DEFAULT NULL, - `id_change_set` int DEFAULT NULL, - PRIMARY KEY (`id_user`), - KEY `FK_Shop_User_id_change_set` (`id_change_set`), - CONSTRAINT `FK_Shop_User_id_change_set` FOREIGN KEY (`id_change_set`) REFERENCES `shop_user_change_set` (`id_change_set`) -) ENGINE=InnoDB DEFAULT CHARSET=utf8mb4 COLLATE=utf8mb4_0900_ai_ci; -/*!40101 SET character_set_client = @saved_cs_client */; - --- --- Dumping data for table `shop_user` --- - -LOCK TABLES `shop_user` WRITE; -/*!40000 ALTER TABLE `shop_user` DISABLE KEYS */; -INSERT INTO `shop_user` VALUES ('auth0|6582b95c895d09a70ba10fef','Teddy','edward.middletonsmith@gmail.com',_binary '\0',_binary '',_binary '','2024-04-28 19:03:07','root@localhost',NULL),('parts_guest','Guest','',_binary '\0',_binary '\0',_binary '','2024-04-28 19:03:07','root@localhost',NULL); -/*!40000 ALTER TABLE `shop_user` ENABLE KEYS */; -UNLOCK TABLES; -/*!50003 SET @saved_cs_client = @@character_set_client */ ; -/*!50003 SET @saved_cs_results = @@character_set_results */ ; -/*!50003 SET @saved_col_connection = @@collation_connection */ ; -/*!50003 SET character_set_client = utf8mb4 */ ; -/*!50003 SET character_set_results = utf8mb4 */ ; -/*!50003 SET collation_connection = utf8mb4_0900_ai_ci */ ; -/*!50003 SET @saved_sql_mode = @@sql_mode */ ; -/*!50003 SET sql_mode = 'ONLY_FULL_GROUP_BY,STRICT_TRANS_TABLES,NO_ZERO_IN_DATE,NO_ZERO_DATE,ERROR_FOR_DIVISION_BY_ZERO,NO_ENGINE_SUBSTITUTION' */ ; -DELIMITER ;;; -/*!50003 CREATE*/ /*!50017 DEFINER=`root`@`localhost`*/ /*!50003 TRIGGER `before_insert_Shop_User` BEFORE INSERT ON `shop_user` FOR EACH ROW BEGIN - IF NEW.created_on <=> NULL THEN - SET NEW.created_on := IFNULL(NEW.created_on, NOW()); - END IF; - IF NEW.created_by <=> NULL THEN - SET NEW.created_by := IFNULL(NEW.created_by, IFNULL((SELECT id_user FROM Shop_User WHERE firstname = CURRENT_USER()), -1)); - END IF; -END */;; -DELIMITER ;; -/*!50003 SET sql_mode = @saved_sql_mode */ ; -/*!50003 SET character_set_client = @saved_cs_client */ ; -/*!50003 SET character_set_results = @saved_cs_results */ ; -/*!50003 SET collation_connection = @saved_col_connection */ ; -/*!50003 SET @saved_cs_client = @@character_set_client */ ; -/*!50003 SET @saved_cs_results = @@character_set_results */ ; -/*!50003 SET @saved_col_connection = @@collation_connection */ ; -/*!50003 SET character_set_client = utf8mb4 */ ; -/*!50003 SET character_set_results = utf8mb4 */ ; -/*!50003 SET collation_connection = utf8mb4_0900_ai_ci */ ; -/*!50003 SET @saved_sql_mode = @@sql_mode */ ; -/*!50003 SET sql_mode = 'ONLY_FULL_GROUP_BY,STRICT_TRANS_TABLES,NO_ZERO_IN_DATE,NO_ZERO_DATE,ERROR_FOR_DIVISION_BY_ZERO,NO_ENGINE_SUBSTITUTION' */ ; -DELIMITER ;;; -/*!50003 CREATE*/ /*!50017 DEFINER=`root`@`localhost`*/ /*!50003 TRIGGER `before_update_Shop_User` BEFORE UPDATE ON `shop_user` FOR EACH ROW BEGIN - IF OLD.id_change_set <=> NEW.id_change_set THEN - SIGNAL SQLSTATE '45000' - SET MESSAGE_TEXT = 'New change Set ID must be provided.'; - END IF; - - INSERT INTO Shop_User_Audit ( - id_user, - name_field, - value_prev, - value_new, - id_change_set - ) - # Changed name - SELECT NEW.id_user, 'name', OLD.name, NEW.name, NEW.id_change_set - WHERE NOT (OLD.name <=> NEW.name) - UNION - # Changed is_super_user - SELECT NEW.id_user, 'is_super_user', CONVERT(CONVERT(OLD.is_super_user, SIGNED), CHAR), CONVERT(CONVERT(NEW.is_super_user, SIGNED), CHAR), NEW.id_change_set - WHERE NOT (OLD.is_super_user <=> NEW.is_super_user) - UNION - # Changed active - SELECT NEW.id_user, 'active', CONVERT(CONVERT(OLD.active, SIGNED), CHAR), CONVERT(CONVERT(NEW.active, SIGNED), CHAR), NEW.id_change_set - WHERE NOT (OLD.active <=> NEW.active) - ; -END */;; -DELIMITER ;; -/*!50003 SET sql_mode = @saved_sql_mode */ ; -/*!50003 SET character_set_client = @saved_cs_client */ ; -/*!50003 SET character_set_results = @saved_cs_results */ ; -/*!50003 SET collation_connection = @saved_col_connection */ ; - --- --- Table structure for table `shop_user_audit` --- - -DROP TABLE IF EXISTS `shop_user_audit`; -/*!40101 SET @saved_cs_client = @@character_set_client */; -/*!50503 SET character_set_client = utf8mb4 */; -CREATE TABLE `shop_user_audit` ( - `id_audit` int NOT NULL AUTO_INCREMENT, - `id_user` varchar(200) NOT NULL, - `name_field` varchar(50) DEFAULT NULL, - `value_prev` varchar(500) DEFAULT NULL, - `value_new` varchar(500) DEFAULT NULL, - `id_change_set` int NOT NULL, - PRIMARY KEY (`id_audit`), - KEY `FK_Shop_User_Audit_id_user` (`id_user`), - KEY `FK_Shop_User_Audit_id_change_set` (`id_change_set`), - CONSTRAINT `FK_Shop_User_Audit_id_change_set` FOREIGN KEY (`id_change_set`) REFERENCES `shop_user_change_set` (`id_change_set`) ON UPDATE RESTRICT, - CONSTRAINT `FK_Shop_User_Audit_id_user` FOREIGN KEY (`id_user`) REFERENCES `shop_user` (`id_user`) ON UPDATE RESTRICT -) ENGINE=InnoDB DEFAULT CHARSET=utf8mb4 COLLATE=utf8mb4_0900_ai_ci; -/*!40101 SET character_set_client = @saved_cs_client */; - --- --- Dumping data for table `shop_user_audit` --- - -LOCK TABLES `shop_user_audit` WRITE; -/*!40000 ALTER TABLE `shop_user_audit` DISABLE KEYS */; -/*!40000 ALTER TABLE `shop_user_audit` ENABLE KEYS */; -UNLOCK TABLES; - --- --- Table structure for table `shop_user_basket` --- - -DROP TABLE IF EXISTS `shop_user_basket`; -/*!40101 SET @saved_cs_client = @@character_set_client */; -/*!50503 SET character_set_client = utf8mb4 */; -CREATE TABLE `shop_user_basket` ( - `id_item` int NOT NULL AUTO_INCREMENT, - `id_user` varchar(200) NOT NULL, - `id_product` int NOT NULL, - `id_permutation` int DEFAULT NULL, - `quantity` int NOT NULL, - `active` bit(1) NOT NULL DEFAULT b'1', - `created_on` datetime DEFAULT NULL, - `created_by` varchar(100) DEFAULT NULL, - `id_change_set_user` int DEFAULT NULL, - PRIMARY KEY (`id_item`), - KEY `FK_Shop_User_Basket_id_user` (`id_user`), - KEY `FK_Shop_User_Basket_id_product` (`id_product`), - KEY `FK_Shop_User_Basket_id_permutation` (`id_permutation`), - KEY `FK_Shop_User_Basket_id_change_set_user` (`id_change_set_user`), - CONSTRAINT `FK_Shop_User_Basket_id_change_set_user` FOREIGN KEY (`id_change_set_user`) REFERENCES `shop_user_change_set` (`id_change_set`), - CONSTRAINT `FK_Shop_User_Basket_id_permutation` FOREIGN KEY (`id_permutation`) REFERENCES `shop_product_permutation` (`id_permutation`) ON UPDATE RESTRICT, - CONSTRAINT `FK_Shop_User_Basket_id_product` FOREIGN KEY (`id_product`) REFERENCES `shop_product` (`id_product`) ON UPDATE RESTRICT, - CONSTRAINT `FK_Shop_User_Basket_id_user` FOREIGN KEY (`id_user`) REFERENCES `shop_user` (`id_user`) ON UPDATE RESTRICT -) ENGINE=InnoDB AUTO_INCREMENT=2 DEFAULT CHARSET=utf8mb4 COLLATE=utf8mb4_0900_ai_ci; -/*!40101 SET character_set_client = @saved_cs_client */; - --- --- Dumping data for table `shop_user_basket` --- - -LOCK TABLES `shop_user_basket` WRITE; -/*!40000 ALTER TABLE `shop_user_basket` DISABLE KEYS */; -INSERT INTO `shop_user_basket` VALUES (1,'auth0|6582b95c895d09a70ba10fef',1,1,69,_binary '','2024-04-28 19:03:07','root@localhost',NULL); -/*!40000 ALTER TABLE `shop_user_basket` ENABLE KEYS */; -UNLOCK TABLES; -/*!50003 SET @saved_cs_client = @@character_set_client */ ; -/*!50003 SET @saved_cs_results = @@character_set_results */ ; -/*!50003 SET @saved_col_connection = @@collation_connection */ ; -/*!50003 SET character_set_client = utf8mb4 */ ; -/*!50003 SET character_set_results = utf8mb4 */ ; -/*!50003 SET collation_connection = utf8mb4_0900_ai_ci */ ; -/*!50003 SET @saved_sql_mode = @@sql_mode */ ; -/*!50003 SET sql_mode = 'ONLY_FULL_GROUP_BY,STRICT_TRANS_TABLES,NO_ZERO_IN_DATE,NO_ZERO_DATE,ERROR_FOR_DIVISION_BY_ZERO,NO_ENGINE_SUBSTITUTION' */ ; -DELIMITER ;;; -/*!50003 CREATE*/ /*!50017 DEFINER=`root`@`localhost`*/ /*!50003 TRIGGER `before_insert_Shop_User_Basket` BEFORE INSERT ON `shop_user_basket` FOR EACH ROW BEGIN - IF NEW.created_on <=> NULL THEN - SET NEW.created_on := IFNULL(NEW.created_on, NOW()); - END IF; - IF NEW.created_by <=> NULL THEN - SET NEW.created_by := IFNULL(NEW.created_by, IFNULL((SELECT id_user FROM Shop_User WHERE firstname = CURRENT_USER()), -1)); - END IF; -END */;; -DELIMITER ;; -/*!50003 SET sql_mode = @saved_sql_mode */ ; -/*!50003 SET character_set_client = @saved_cs_client */ ; -/*!50003 SET character_set_results = @saved_cs_results */ ; -/*!50003 SET collation_connection = @saved_col_connection */ ; -/*!50003 SET @saved_cs_client = @@character_set_client */ ; -/*!50003 SET @saved_cs_results = @@character_set_results */ ; -/*!50003 SET @saved_col_connection = @@collation_connection */ ; -/*!50003 SET character_set_client = utf8mb4 */ ; -/*!50003 SET character_set_results = utf8mb4 */ ; -/*!50003 SET collation_connection = utf8mb4_0900_ai_ci */ ; -/*!50003 SET @saved_sql_mode = @@sql_mode */ ; -/*!50003 SET sql_mode = 'ONLY_FULL_GROUP_BY,STRICT_TRANS_TABLES,NO_ZERO_IN_DATE,NO_ZERO_DATE,ERROR_FOR_DIVISION_BY_ZERO,NO_ENGINE_SUBSTITUTION' */ ; -DELIMITER ;;; -/*!50003 CREATE*/ /*!50017 DEFINER=`root`@`localhost`*/ /*!50003 TRIGGER `before_update_Shop_User_Basket` BEFORE UPDATE ON `shop_user_basket` FOR EACH ROW BEGIN - IF NEW.id_change_set_user <=> OLD.id_change_set_user THEN - SIGNAL SQLSTATE '45000' - SET MESSAGE_TEXT = 'New change Set ID must be provided.'; - END IF; - - INSERT INTO Shop_User_Basket_Audit ( - id_item, - name_field, - value_prev, - value_new, - id_change_set_user - ) - # Changed id_user - SELECT NEW.id_item, 'id_user', OLD.id_user, NEW.id_user, NEW.id_change_set_user - WHERE NOT OLD.id_user <=> NEW.id_user - UNION - # Changed id_product - SELECT NEW.id_item, 'id_product', OLD.id_product, NEW.id_product, NEW.id_change_set_user - WHERE NOT OLD.id_product <=> NEW.id_product - UNION - # Changed quantity - SELECT NEW.id_item, 'quantity', CONVERT(OLD.quantity, CHAR), CONVERT(NEW.quantity, CHAR), NEW.id_change_set_user - WHERE NOT (OLD.quantity <=> NEW.quantity) - UNION - # Changed active - SELECT NEW.id_item, 'active', CONVERT(CONVERT(OLD.active, SIGNED), CHAR), CONVERT(CONVERT(NEW.active, SIGNED), CHAR), NEW.id_change_set_user - WHERE NOT (OLD.active <=> NEW.active) - ; -END */;; -DELIMITER ;; -/*!50003 SET sql_mode = @saved_sql_mode */ ; -/*!50003 SET character_set_client = @saved_cs_client */ ; -/*!50003 SET character_set_results = @saved_cs_results */ ; -/*!50003 SET collation_connection = @saved_col_connection */ ; - --- --- Table structure for table `shop_user_basket_audit` --- - -DROP TABLE IF EXISTS `shop_user_basket_audit`; -/*!40101 SET @saved_cs_client = @@character_set_client */; -/*!50503 SET character_set_client = utf8mb4 */; -CREATE TABLE `shop_user_basket_audit` ( - `id_audit` int NOT NULL AUTO_INCREMENT, - `id_item` int NOT NULL, - `name_field` varchar(50) DEFAULT NULL, - `value_prev` varchar(500) DEFAULT NULL, - `value_new` varchar(500) DEFAULT NULL, - `id_change_set_user` int DEFAULT NULL, - PRIMARY KEY (`id_audit`), - KEY `FK_Shop_User_Basket_Audit_id_link` (`id_item`), - KEY `FK_Shop_User_Basket_Audit_id_change_set_user` (`id_change_set_user`), - CONSTRAINT `FK_Shop_User_Basket_Audit_id_change_set_user` FOREIGN KEY (`id_change_set_user`) REFERENCES `shop_user_change_set` (`id_change_set`), - CONSTRAINT `FK_Shop_User_Basket_Audit_id_link` FOREIGN KEY (`id_item`) REFERENCES `shop_user_basket` (`id_item`) ON UPDATE RESTRICT -) ENGINE=InnoDB DEFAULT CHARSET=utf8mb4 COLLATE=utf8mb4_0900_ai_ci; -/*!40101 SET character_set_client = @saved_cs_client */; - --- --- Dumping data for table `shop_user_basket_audit` --- - -LOCK TABLES `shop_user_basket_audit` WRITE; -/*!40000 ALTER TABLE `shop_user_basket_audit` DISABLE KEYS */; -/*!40000 ALTER TABLE `shop_user_basket_audit` ENABLE KEYS */; -UNLOCK TABLES; - --- --- Table structure for table `shop_user_change_set` --- - -DROP TABLE IF EXISTS `shop_user_change_set`; -/*!40101 SET @saved_cs_client = @@character_set_client */; -/*!50503 SET character_set_client = utf8mb4 */; -CREATE TABLE `shop_user_change_set` ( - `id_change_set` int NOT NULL AUTO_INCREMENT, - `comment` varchar(500) DEFAULT NULL, - `updated_last_on` datetime DEFAULT NULL, - `updated_last_by` varchar(100) DEFAULT NULL, - PRIMARY KEY (`id_change_set`) -) ENGINE=InnoDB DEFAULT CHARSET=utf8mb4 COLLATE=utf8mb4_0900_ai_ci; -/*!40101 SET character_set_client = @saved_cs_client */; - --- --- Dumping data for table `shop_user_change_set` --- - -LOCK TABLES `shop_user_change_set` WRITE; -/*!40000 ALTER TABLE `shop_user_change_set` DISABLE KEYS */; -/*!40000 ALTER TABLE `shop_user_change_set` ENABLE KEYS */; -UNLOCK TABLES; -/*!50003 SET @saved_cs_client = @@character_set_client */ ; -/*!50003 SET @saved_cs_results = @@character_set_results */ ; -/*!50003 SET @saved_col_connection = @@collation_connection */ ; -/*!50003 SET character_set_client = utf8mb4 */ ; -/*!50003 SET character_set_results = utf8mb4 */ ; -/*!50003 SET collation_connection = utf8mb4_0900_ai_ci */ ; -/*!50003 SET @saved_sql_mode = @@sql_mode */ ; -/*!50003 SET sql_mode = 'ONLY_FULL_GROUP_BY,STRICT_TRANS_TABLES,NO_ZERO_IN_DATE,NO_ZERO_DATE,ERROR_FOR_DIVISION_BY_ZERO,NO_ENGINE_SUBSTITUTION' */ ; -DELIMITER ;;; -/*!50003 CREATE*/ /*!50017 DEFINER=`root`@`localhost`*/ /*!50003 TRIGGER `before_insert_Shop_User_Change_Set` BEFORE INSERT ON `shop_user_change_set` FOR EACH ROW BEGIN - IF NEW.updated_last_on <=> NULL THEN - SET NEW.updated_last_on = NOW(); - END IF; - IF NEW.updated_last_by <=> NULL THEN - SET NEW.updated_last_by = CURRENT_USER(); - END IF; -END */;; -DELIMITER ;; -/*!50003 SET sql_mode = @saved_sql_mode */ ; -/*!50003 SET character_set_client = @saved_cs_client */ ; -/*!50003 SET character_set_results = @saved_cs_results */ ; -/*!50003 SET collation_connection = @saved_col_connection */ ; - --- --- Table structure for table `shop_user_order` --- - -DROP TABLE IF EXISTS `shop_user_order`; -/*!40101 SET @saved_cs_client = @@character_set_client */; -/*!50503 SET character_set_client = utf8mb4 */; -CREATE TABLE `shop_user_order` ( - `id_order` int NOT NULL AUTO_INCREMENT, - `id_user` varchar(200) NOT NULL, - `value_total` float DEFAULT NULL, - `id_order_status` int NOT NULL, - `id_checkout_session` varchar(200) NOT NULL, - `id_currency` int NOT NULL, - `active` bit(1) NOT NULL DEFAULT b'1', - `created_on` datetime DEFAULT NULL, - `created_by` varchar(100) DEFAULT NULL, - `id_change_set_user` int DEFAULT NULL, - PRIMARY KEY (`id_order`), - KEY `FK_Shop_User_Order_id_user` (`id_user`), - KEY `FK_Shop_User_Order_id_order_status` (`id_order_status`), - KEY `FK_Shop_User_Order_id_currency` (`id_currency`), - KEY `FK_Shop_User_Order_id_change_set_user` (`id_change_set_user`), - CONSTRAINT `FK_Shop_User_Order_id_change_set_user` FOREIGN KEY (`id_change_set_user`) REFERENCES `shop_user_change_set` (`id_change_set`), - CONSTRAINT `FK_Shop_User_Order_id_currency` FOREIGN KEY (`id_currency`) REFERENCES `shop_currency` (`id_currency`) ON UPDATE RESTRICT, - CONSTRAINT `FK_Shop_User_Order_id_order_status` FOREIGN KEY (`id_order_status`) REFERENCES `shop_user_order_status` (`id_status`), - CONSTRAINT `FK_Shop_User_Order_id_user` FOREIGN KEY (`id_user`) REFERENCES `shop_user` (`id_user`) ON UPDATE RESTRICT -) ENGINE=InnoDB AUTO_INCREMENT=3 DEFAULT CHARSET=utf8mb4 COLLATE=utf8mb4_0900_ai_ci; -/*!40101 SET character_set_client = @saved_cs_client */; - --- --- Dumping data for table `shop_user_order` --- - -LOCK TABLES `shop_user_order` WRITE; -/*!40000 ALTER TABLE `shop_user_order` DISABLE KEYS */; -INSERT INTO `shop_user_order` VALUES (1,'auth0|6582b95c895d09a70ba10fef',25,1,'noods',1,_binary '','2024-04-28 19:03:07','root@localhost',NULL),(2,'auth0|6582b95c895d09a70ba10fef',25,1,'noods',1,_binary '','2024-04-28 19:03:07','root@localhost',NULL); -/*!40000 ALTER TABLE `shop_user_order` ENABLE KEYS */; -UNLOCK TABLES; -/*!50003 SET @saved_cs_client = @@character_set_client */ ; -/*!50003 SET @saved_cs_results = @@character_set_results */ ; -/*!50003 SET @saved_col_connection = @@collation_connection */ ; -/*!50003 SET character_set_client = utf8mb4 */ ; -/*!50003 SET character_set_results = utf8mb4 */ ; -/*!50003 SET collation_connection = utf8mb4_0900_ai_ci */ ; -/*!50003 SET @saved_sql_mode = @@sql_mode */ ; -/*!50003 SET sql_mode = 'ONLY_FULL_GROUP_BY,STRICT_TRANS_TABLES,NO_ZERO_IN_DATE,NO_ZERO_DATE,ERROR_FOR_DIVISION_BY_ZERO,NO_ENGINE_SUBSTITUTION' */ ; -DELIMITER ;;; -/*!50003 CREATE*/ /*!50017 DEFINER=`root`@`localhost`*/ /*!50003 TRIGGER `before_insert_Shop_User_Order` BEFORE INSERT ON `shop_user_order` FOR EACH ROW BEGIN - IF NEW.created_on <=> NULL THEN - SET NEW.created_on := IFNULL(NEW.created_on, NOW()); - END IF; - IF NEW.created_by <=> NULL THEN - SET NEW.created_by := IFNULL(NEW.created_by, IFNULL((SELECT id_user FROM Shop_User WHERE firstname = CURRENT_USER()), -1)); - END IF; -END */;; -DELIMITER ;; -/*!50003 SET sql_mode = @saved_sql_mode */ ; -/*!50003 SET character_set_client = @saved_cs_client */ ; -/*!50003 SET character_set_results = @saved_cs_results */ ; -/*!50003 SET collation_connection = @saved_col_connection */ ; -/*!50003 SET @saved_cs_client = @@character_set_client */ ; -/*!50003 SET @saved_cs_results = @@character_set_results */ ; -/*!50003 SET @saved_col_connection = @@collation_connection */ ; -/*!50003 SET character_set_client = utf8mb4 */ ; -/*!50003 SET character_set_results = utf8mb4 */ ; -/*!50003 SET collation_connection = utf8mb4_0900_ai_ci */ ; -/*!50003 SET @saved_sql_mode = @@sql_mode */ ; -/*!50003 SET sql_mode = 'ONLY_FULL_GROUP_BY,STRICT_TRANS_TABLES,NO_ZERO_IN_DATE,NO_ZERO_DATE,ERROR_FOR_DIVISION_BY_ZERO,NO_ENGINE_SUBSTITUTION' */ ; -DELIMITER ;;; -/*!50003 CREATE*/ /*!50017 DEFINER=`root`@`localhost`*/ /*!50003 TRIGGER `before_update_Shop_User_Order` BEFORE UPDATE ON `shop_user_order` FOR EACH ROW BEGIN - IF OLD.id_change_set_user <=> NEW.id_change_set_user THEN - SIGNAL SQLSTATE '45000' - SET MESSAGE_TEXT = 'New change Set ID must be provided.'; - END IF; - IF NOT (NEW.id_checkout_session <=> OLD.id_checkout_session) THEN - SIGNAL SQLSTATE '45000' - SET MESSAGE_TEXT = 'Checkout session ID must not change.'; - END IF; - - INSERT INTO Shop_User_Order_Audit ( - id_order, - name_field, - value_prev, - value_new, - id_change_set_user - ) - # Changed id_user - SELECT NEW.id_order, 'id_user', OLD.id_user, NEW.id_user, NEW.id_change_set_user - WHERE NOT OLD.id_user <=> NEW.id_user - UNION - # Changed value_total - SELECT NEW.id_order, 'value_total', CONVERT(OLD.value_total, CHAR), CONVERT(NEW.value_total, CHAR), NEW.id_change_set_user - WHERE NOT (OLD.value_total <=> NEW.value_total) - UNION - # Changed id_order_status - SELECT NEW.id_order, 'id_order_status', CONVERT(OLD.id_order_status, CHAR), CONVERT(NEW.id_order_status, CHAR), NEW.id_change_set_user - WHERE NOT (OLD.id_order_status <=> NEW.id_order_status) - UNION - # Changed id_checkout_session - SELECT NEW.id_order, 'id_checkout_session', OLD.id_checkout_session, NEW.id_checkout_session, NEW.id_change_set_user - WHERE NOT (OLD.id_checkout_session <=> NEW.id_checkout_session) - UNION - # Changed active - SELECT NEW.id_order, 'active', CONVERT(CONVERT(OLD.active, SIGNED), CHAR), CONVERT(CONVERT(NEW.active, SIGNED), CHAR), NEW.id_change_set_user - WHERE NOT (OLD.active <=> NEW.active) - ; -END */;; -DELIMITER ;; -/*!50003 SET sql_mode = @saved_sql_mode */ ; -/*!50003 SET character_set_client = @saved_cs_client */ ; -/*!50003 SET character_set_results = @saved_cs_results */ ; -/*!50003 SET collation_connection = @saved_col_connection */ ; - --- --- Table structure for table `shop_user_order_audit` --- - -DROP TABLE IF EXISTS `shop_user_order_audit`; -/*!40101 SET @saved_cs_client = @@character_set_client */; -/*!50503 SET character_set_client = utf8mb4 */; -CREATE TABLE `shop_user_order_audit` ( - `id_audit` int NOT NULL AUTO_INCREMENT, - `id_order` int NOT NULL, - `name_field` varchar(50) DEFAULT NULL, - `value_prev` varchar(500) DEFAULT NULL, - `value_new` varchar(500) DEFAULT NULL, - `id_change_set_user` int DEFAULT NULL, - PRIMARY KEY (`id_audit`), - KEY `FK_Shop_User_Order_Audit_id_order` (`id_order`), - KEY `FK_Shop_User_Order_Audit_id_change_set_user` (`id_change_set_user`), - CONSTRAINT `FK_Shop_User_Order_Audit_id_change_set_user` FOREIGN KEY (`id_change_set_user`) REFERENCES `shop_user_change_set` (`id_change_set`), - CONSTRAINT `FK_Shop_User_Order_Audit_id_order` FOREIGN KEY (`id_order`) REFERENCES `shop_user_order` (`id_order`) ON UPDATE RESTRICT -) ENGINE=InnoDB DEFAULT CHARSET=utf8mb4 COLLATE=utf8mb4_0900_ai_ci; -/*!40101 SET character_set_client = @saved_cs_client */; - --- --- Dumping data for table `shop_user_order_audit` --- - -LOCK TABLES `shop_user_order_audit` WRITE; -/*!40000 ALTER TABLE `shop_user_order_audit` DISABLE KEYS */; -/*!40000 ALTER TABLE `shop_user_order_audit` ENABLE KEYS */; -UNLOCK TABLES; - --- --- Table structure for table `shop_user_order_product_link` --- - -DROP TABLE IF EXISTS `shop_user_order_product_link`; -/*!40101 SET @saved_cs_client = @@character_set_client */; -/*!50503 SET character_set_client = utf8mb4 */; -CREATE TABLE `shop_user_order_product_link` ( - `id_link` int NOT NULL AUTO_INCREMENT, - `id_order` int NOT NULL, - `id_product` int NOT NULL, - `id_permutation` int DEFAULT NULL, - `quantity` float NOT NULL, - `active` bit(1) NOT NULL DEFAULT b'1', - `created_on` datetime DEFAULT NULL, - `created_by` varchar(100) DEFAULT NULL, - `id_change_set` int DEFAULT NULL, - PRIMARY KEY (`id_link`), - KEY `FK_Shop_User_Order_Product_Link_id_order` (`id_order`), - KEY `FK_Shop_User_Order_Product_Link_id_product` (`id_product`), - KEY `FK_Shop_User_Order_Product_Link_id_permutation` (`id_permutation`), - KEY `FK_Shop_User_Order_Product_Link_id_change_set` (`id_change_set`), - CONSTRAINT `FK_Shop_User_Order_Product_Link_id_change_set` FOREIGN KEY (`id_change_set`) REFERENCES `shop_user_change_set` (`id_change_set`), - CONSTRAINT `FK_Shop_User_Order_Product_Link_id_order` FOREIGN KEY (`id_order`) REFERENCES `shop_user_order` (`id_order`) ON UPDATE RESTRICT, - CONSTRAINT `FK_Shop_User_Order_Product_Link_id_permutation` FOREIGN KEY (`id_permutation`) REFERENCES `shop_product_permutation` (`id_permutation`) ON UPDATE RESTRICT, - CONSTRAINT `FK_Shop_User_Order_Product_Link_id_product` FOREIGN KEY (`id_product`) REFERENCES `shop_product` (`id_product`) ON UPDATE RESTRICT -) ENGINE=InnoDB AUTO_INCREMENT=4 DEFAULT CHARSET=utf8mb4 COLLATE=utf8mb4_0900_ai_ci; -/*!40101 SET character_set_client = @saved_cs_client */; - --- --- Dumping data for table `shop_user_order_product_link` --- - -LOCK TABLES `shop_user_order_product_link` WRITE; -/*!40000 ALTER TABLE `shop_user_order_product_link` DISABLE KEYS */; -INSERT INTO `shop_user_order_product_link` VALUES (1,1,1,1,69,_binary '','2024-04-28 19:03:07','root@localhost',NULL),(2,1,2,NULL,69,_binary '','2024-04-28 19:03:07','root@localhost',NULL),(3,1,1,2,69,_binary '','2024-04-28 19:03:07','root@localhost',NULL); -/*!40000 ALTER TABLE `shop_user_order_product_link` ENABLE KEYS */; -UNLOCK TABLES; -/*!50003 SET @saved_cs_client = @@character_set_client */ ; -/*!50003 SET @saved_cs_results = @@character_set_results */ ; -/*!50003 SET @saved_col_connection = @@collation_connection */ ; -/*!50003 SET character_set_client = utf8mb4 */ ; -/*!50003 SET character_set_results = utf8mb4 */ ; -/*!50003 SET collation_connection = utf8mb4_0900_ai_ci */ ; -/*!50003 SET @saved_sql_mode = @@sql_mode */ ; -/*!50003 SET sql_mode = 'ONLY_FULL_GROUP_BY,STRICT_TRANS_TABLES,NO_ZERO_IN_DATE,NO_ZERO_DATE,ERROR_FOR_DIVISION_BY_ZERO,NO_ENGINE_SUBSTITUTION' */ ; -DELIMITER ;;; -/*!50003 CREATE*/ /*!50017 DEFINER=`root`@`localhost`*/ /*!50003 TRIGGER `before_insert_Shop_User_Order_Product_Link` BEFORE INSERT ON `shop_user_order_product_link` FOR EACH ROW BEGIN - IF NEW.created_on <=> NULL THEN - SET NEW.created_on := IFNULL(NEW.created_on, NOW()); - END IF; - IF NEW.created_by <=> NULL THEN - SET NEW.created_by := IFNULL(NEW.created_by, IFNULL((SELECT id_user FROM Shop_User WHERE firstname = CURRENT_USER()), -1)); - END IF; -END */;; -DELIMITER ;; -/*!50003 SET sql_mode = @saved_sql_mode */ ; -/*!50003 SET character_set_client = @saved_cs_client */ ; -/*!50003 SET character_set_results = @saved_cs_results */ ; -/*!50003 SET collation_connection = @saved_col_connection */ ; -/*!50003 SET @saved_cs_client = @@character_set_client */ ; -/*!50003 SET @saved_cs_results = @@character_set_results */ ; -/*!50003 SET @saved_col_connection = @@collation_connection */ ; -/*!50003 SET character_set_client = utf8mb4 */ ; -/*!50003 SET character_set_results = utf8mb4 */ ; -/*!50003 SET collation_connection = utf8mb4_0900_ai_ci */ ; -/*!50003 SET @saved_sql_mode = @@sql_mode */ ; -/*!50003 SET sql_mode = 'ONLY_FULL_GROUP_BY,STRICT_TRANS_TABLES,NO_ZERO_IN_DATE,NO_ZERO_DATE,ERROR_FOR_DIVISION_BY_ZERO,NO_ENGINE_SUBSTITUTION' */ ; -DELIMITER ;;; -/*!50003 CREATE*/ /*!50017 DEFINER=`root`@`localhost`*/ /*!50003 TRIGGER `before_update_Shop_User_Order_Product_Link` BEFORE UPDATE ON `shop_user_order_product_link` FOR EACH ROW BEGIN - IF OLD.id_change_set <=> NEW.id_change_set THEN - SIGNAL SQLSTATE '45000' - SET MESSAGE_TEXT = 'New change Set ID must be provided.'; - END IF; - - INSERT INTO Shop_User_Order_Product_Link_Audit ( - id_link, - name_field, - value_prev, - value_new, - id_change_set - ) - # Changed id_product - SELECT NEW.id_link, 'active', CONVERT(OLD.id_product, CHAR), CONVERT(NEW.id_product, CHAR), NEW.id_change_set - WHERE NOT (OLD.id_product <=> NEW.id_product) - UNION - # Changed quantity - SELECT NEW.id_link, 'quantity', CONVERT(OLD.quantity, CHAR), CONVERT(NEW.quantity, CHAR), NEW.id_change_set - WHERE NOT (OLD.quantity <=> NEW.quantity) - UNION - # Changed active - SELECT NEW.id_link, 'active', CONVERT(CONVERT(OLD.active, SIGNED), CHAR), CONVERT(CONVERT(NEW.active, SIGNED), CHAR), NEW.id_change_set - WHERE NOT (OLD.active <=> NEW.active) - ; -END */;; -DELIMITER ;; -/*!50003 SET sql_mode = @saved_sql_mode */ ; -/*!50003 SET character_set_client = @saved_cs_client */ ; -/*!50003 SET character_set_results = @saved_cs_results */ ; -/*!50003 SET collation_connection = @saved_col_connection */ ; - --- --- Table structure for table `shop_user_order_product_link_audit` --- - -DROP TABLE IF EXISTS `shop_user_order_product_link_audit`; -/*!40101 SET @saved_cs_client = @@character_set_client */; -/*!50503 SET character_set_client = utf8mb4 */; -CREATE TABLE `shop_user_order_product_link_audit` ( - `id_audit` int NOT NULL AUTO_INCREMENT, - `id_link` int NOT NULL, - `name_field` varchar(50) DEFAULT NULL, - `value_prev` varchar(500) DEFAULT NULL, - `value_new` varchar(500) DEFAULT NULL, - `id_change_set` int NOT NULL, - PRIMARY KEY (`id_audit`), - KEY `FK_Shop_User_Order_Product_Link_Audit_id_link` (`id_link`), - KEY `FK_Shop_User_Order_Product_Link_Audit_id_change_set` (`id_change_set`), - CONSTRAINT `FK_Shop_User_Order_Product_Link_Audit_id_change_set` FOREIGN KEY (`id_change_set`) REFERENCES `shop_user_change_set` (`id_change_set`), - CONSTRAINT `FK_Shop_User_Order_Product_Link_Audit_id_link` FOREIGN KEY (`id_link`) REFERENCES `shop_user_order_product_link` (`id_link`) ON UPDATE RESTRICT -) ENGINE=InnoDB DEFAULT CHARSET=utf8mb4 COLLATE=utf8mb4_0900_ai_ci; -/*!40101 SET character_set_client = @saved_cs_client */; - --- --- Dumping data for table `shop_user_order_product_link_audit` --- - -LOCK TABLES `shop_user_order_product_link_audit` WRITE; -/*!40000 ALTER TABLE `shop_user_order_product_link_audit` DISABLE KEYS */; -/*!40000 ALTER TABLE `shop_user_order_product_link_audit` ENABLE KEYS */; -UNLOCK TABLES; - --- --- Table structure for table `shop_user_order_status` --- - -DROP TABLE IF EXISTS `shop_user_order_status`; -/*!40101 SET @saved_cs_client = @@character_set_client */; -/*!50503 SET character_set_client = utf8mb4 */; -CREATE TABLE `shop_user_order_status` ( - `id_status` int NOT NULL AUTO_INCREMENT, - `code` varchar(50) DEFAULT NULL, - `name` varchar(255) DEFAULT NULL, - `name_plural` varchar(256) DEFAULT NULL, - `active` bit(1) NOT NULL DEFAULT b'1', - `display_order` int NOT NULL, - `created_on` datetime DEFAULT NULL, - `created_by` varchar(100) DEFAULT NULL, - `id_change_set` int DEFAULT NULL, - PRIMARY KEY (`id_status`), - KEY `FK_Shop_User_Order_Status_id_change_set` (`id_change_set`), - CONSTRAINT `FK_Shop_User_Order_Status_id_change_set` FOREIGN KEY (`id_change_set`) REFERENCES `shop_user_change_set` (`id_change_set`) -) ENGINE=InnoDB AUTO_INCREMENT=3 DEFAULT CHARSET=utf8mb4 COLLATE=utf8mb4_0900_ai_ci; -/*!40101 SET character_set_client = @saved_cs_client */; - --- --- Dumping data for table `shop_user_order_status` --- - -LOCK TABLES `shop_user_order_status` WRITE; -/*!40000 ALTER TABLE `shop_user_order_status` DISABLE KEYS */; -INSERT INTO `shop_user_order_status` VALUES (1,'SUCCESS','Success','Successes',_binary '',1,'2024-04-28 19:03:07','root@localhost',NULL),(2,'FAIL','Failure','Failures',_binary '',2,'2024-04-28 19:03:07','root@localhost',NULL); -/*!40000 ALTER TABLE `shop_user_order_status` ENABLE KEYS */; -UNLOCK TABLES; -/*!50003 SET @saved_cs_client = @@character_set_client */ ; -/*!50003 SET @saved_cs_results = @@character_set_results */ ; -/*!50003 SET @saved_col_connection = @@collation_connection */ ; -/*!50003 SET character_set_client = utf8mb4 */ ; -/*!50003 SET character_set_results = utf8mb4 */ ; -/*!50003 SET collation_connection = utf8mb4_0900_ai_ci */ ; -/*!50003 SET @saved_sql_mode = @@sql_mode */ ; -/*!50003 SET sql_mode = 'ONLY_FULL_GROUP_BY,STRICT_TRANS_TABLES,NO_ZERO_IN_DATE,NO_ZERO_DATE,ERROR_FOR_DIVISION_BY_ZERO,NO_ENGINE_SUBSTITUTION' */ ; -DELIMITER ;;; -/*!50003 CREATE*/ /*!50017 DEFINER=`root`@`localhost`*/ /*!50003 TRIGGER `before_insert_Shop_User_Order_Status` BEFORE INSERT ON `shop_user_order_status` FOR EACH ROW BEGIN - SET NEW.created_on := IFNULL(NEW.created_on, NOW()); - SET NEW.created_by := IFNULL(NEW.created_by, IFNULL((SELECT id_user FROM Shop_User WHERE firstname = CURRENT_USER()), -1)); -END */;; -DELIMITER ;; -/*!50003 SET sql_mode = @saved_sql_mode */ ; -/*!50003 SET character_set_client = @saved_cs_client */ ; -/*!50003 SET character_set_results = @saved_cs_results */ ; -/*!50003 SET collation_connection = @saved_col_connection */ ; -/*!50003 SET @saved_cs_client = @@character_set_client */ ; -/*!50003 SET @saved_cs_results = @@character_set_results */ ; -/*!50003 SET @saved_col_connection = @@collation_connection */ ; -/*!50003 SET character_set_client = utf8mb4 */ ; -/*!50003 SET character_set_results = utf8mb4 */ ; -/*!50003 SET collation_connection = utf8mb4_0900_ai_ci */ ; -/*!50003 SET @saved_sql_mode = @@sql_mode */ ; -/*!50003 SET sql_mode = 'ONLY_FULL_GROUP_BY,STRICT_TRANS_TABLES,NO_ZERO_IN_DATE,NO_ZERO_DATE,ERROR_FOR_DIVISION_BY_ZERO,NO_ENGINE_SUBSTITUTION' */ ; -DELIMITER ;;; -/*!50003 CREATE*/ /*!50017 DEFINER=`root`@`localhost`*/ /*!50003 TRIGGER `before_update_Shop_User_Order_Status` BEFORE UPDATE ON `shop_user_order_status` FOR EACH ROW BEGIN - IF OLD.id_change_set <=> NEW.id_change_set THEN - SIGNAL SQLSTATE '45000' - SET MESSAGE_TEXT = 'New change Set ID must be provided.'; - END IF; - - INSERT INTO Shop_User_Order_Status_Audit ( - id_Status, - name_field, - value_prev, - value_new, - id_change_set - ) - # Changed code - SELECT NEW.id_Status, 'code', OLD.code, NEW.code, NEW.id_change_set - WHERE NOT OLD.code <=> NEW.code - UNION - # Changed name - SELECT NEW.id_Status, 'name', OLD.name, NEW.name, NEW.id_change_set - WHERE NOT OLD.name <=> NEW.name - UNION - # Changed name_plural - SELECT NEW.id_Status, 'name_plural', OLD.name_plural, NEW.name_plural, NEW.id_change_set - WHERE NOT OLD.name_plural <=> NEW.name_plural - UNION - # Changed active - SELECT NEW.id_Status, 'active', CONVERT(CONVERT(OLD.active, SIGNED), CHAR), CONVERT(CONVERT(NEW.active, SIGNED), CHAR), NEW.id_change_set - WHERE NOT (OLD.active <=> NEW.active) - UNION - # Changed display_order - SELECT NEW.id_Status, 'display_order', CONVERT(OLD.display_order, CHAR), CONVERT(NEW.display_order, CHAR), NEW.id_change_set - WHERE NOT (OLD.display_order <=> NEW.display_order) - ; -END */;; -DELIMITER ;; -/*!50003 SET sql_mode = @saved_sql_mode */ ; -/*!50003 SET character_set_client = @saved_cs_client */ ; -/*!50003 SET character_set_results = @saved_cs_results */ ; -/*!50003 SET collation_connection = @saved_col_connection */ ; - --- --- Table structure for table `shop_user_order_status_audit` --- - -DROP TABLE IF EXISTS `shop_user_order_status_audit`; -/*!40101 SET @saved_cs_client = @@character_set_client */; -/*!50503 SET character_set_client = utf8mb4 */; -CREATE TABLE `shop_user_order_status_audit` ( - `id_audit` int NOT NULL AUTO_INCREMENT, - `id_status` int NOT NULL, - `name_field` varchar(50) DEFAULT NULL, - `value_prev` varchar(500) DEFAULT NULL, - `value_new` varchar(500) DEFAULT NULL, - `id_change_set` int NOT NULL, - PRIMARY KEY (`id_audit`), - KEY `FK_Shop_User_Order_Status_Audit_id_status` (`id_status`), - KEY `FK_Shop_User_Order_Status_Audit_id_change_set` (`id_change_set`), - CONSTRAINT `FK_Shop_User_Order_Status_Audit_id_change_set` FOREIGN KEY (`id_change_set`) REFERENCES `shop_product_change_set` (`id_change_set`), - CONSTRAINT `FK_Shop_User_Order_Status_Audit_id_status` FOREIGN KEY (`id_status`) REFERENCES `shop_user_order_status` (`id_status`) ON UPDATE RESTRICT -) ENGINE=InnoDB DEFAULT CHARSET=utf8mb4 COLLATE=utf8mb4_0900_ai_ci; -/*!40101 SET character_set_client = @saved_cs_client */; - --- --- Dumping data for table `shop_user_order_status_audit` --- - -LOCK TABLES `shop_user_order_status_audit` WRITE; -/*!40000 ALTER TABLE `shop_user_order_status_audit` DISABLE KEYS */; -/*!40000 ALTER TABLE `shop_user_order_status_audit` ENABLE KEYS */; -UNLOCK TABLES; - --- --- Table structure for table `shop_user_role_link` --- - -DROP TABLE IF EXISTS `shop_user_role_link`; -/*!40101 SET @saved_cs_client = @@character_set_client */; -/*!50503 SET character_set_client = utf8mb4 */; -CREATE TABLE `shop_user_role_link` ( - `id_link` int NOT NULL AUTO_INCREMENT, - `id_user` varchar(200) NOT NULL, - `id_role` int NOT NULL, - `active` bit(1) NOT NULL DEFAULT b'1', - `created_on` datetime DEFAULT NULL, - `created_by` varchar(100) DEFAULT NULL, - `id_change_set` int DEFAULT NULL, - PRIMARY KEY (`id_link`), - KEY `FK_Shop_User_Role_Link_id_user` (`id_user`), - KEY `FK_Shop_User_Role_Link_id_role` (`id_role`), - KEY `FK_Shop_User_Role_Link_id_change_set` (`id_change_set`), - CONSTRAINT `FK_Shop_User_Role_Link_id_change_set` FOREIGN KEY (`id_change_set`) REFERENCES `shop_user_change_set` (`id_change_set`), - CONSTRAINT `FK_Shop_User_Role_Link_id_role` FOREIGN KEY (`id_role`) REFERENCES `shop_role` (`id_role`), - CONSTRAINT `FK_Shop_User_Role_Link_id_user` FOREIGN KEY (`id_user`) REFERENCES `shop_user` (`id_user`) ON UPDATE RESTRICT -) ENGINE=InnoDB AUTO_INCREMENT=2 DEFAULT CHARSET=utf8mb4 COLLATE=utf8mb4_0900_ai_ci; -/*!40101 SET character_set_client = @saved_cs_client */; - --- --- Dumping data for table `shop_user_role_link` --- - -LOCK TABLES `shop_user_role_link` WRITE; -/*!40000 ALTER TABLE `shop_user_role_link` DISABLE KEYS */; -INSERT INTO `shop_user_role_link` VALUES (1,'auth0|6582b95c895d09a70ba10fef',1,_binary '','2024-04-28 19:03:07','root@localhost',NULL); -/*!40000 ALTER TABLE `shop_user_role_link` ENABLE KEYS */; -UNLOCK TABLES; -/*!50003 SET @saved_cs_client = @@character_set_client */ ; -/*!50003 SET @saved_cs_results = @@character_set_results */ ; -/*!50003 SET @saved_col_connection = @@collation_connection */ ; -/*!50003 SET character_set_client = utf8mb4 */ ; -/*!50003 SET character_set_results = utf8mb4 */ ; -/*!50003 SET collation_connection = utf8mb4_0900_ai_ci */ ; -/*!50003 SET @saved_sql_mode = @@sql_mode */ ; -/*!50003 SET sql_mode = 'ONLY_FULL_GROUP_BY,STRICT_TRANS_TABLES,NO_ZERO_IN_DATE,NO_ZERO_DATE,ERROR_FOR_DIVISION_BY_ZERO,NO_ENGINE_SUBSTITUTION' */ ; -DELIMITER ;;; -/*!50003 CREATE*/ /*!50017 DEFINER=`root`@`localhost`*/ /*!50003 TRIGGER `before_insert_Shop_User_Role_Link` BEFORE INSERT ON `shop_user_role_link` FOR EACH ROW BEGIN - IF NEW.created_on <=> NULL THEN - SET NEW.created_on := IFNULL(NEW.created_on, NOW()); - END IF; - IF NEW.created_by <=> NULL THEN - SET NEW.created_by := IFNULL(NEW.created_by, IFNULL((SELECT id_user FROM Shop_User WHERE firstname = CURRENT_USER()), -1)); - END IF; -END */;; -DELIMITER ;; -/*!50003 SET sql_mode = @saved_sql_mode */ ; -/*!50003 SET character_set_client = @saved_cs_client */ ; -/*!50003 SET character_set_results = @saved_cs_results */ ; -/*!50003 SET collation_connection = @saved_col_connection */ ; -/*!50003 SET @saved_cs_client = @@character_set_client */ ; -/*!50003 SET @saved_cs_results = @@character_set_results */ ; -/*!50003 SET @saved_col_connection = @@collation_connection */ ; -/*!50003 SET character_set_client = utf8mb4 */ ; -/*!50003 SET character_set_results = utf8mb4 */ ; -/*!50003 SET collation_connection = utf8mb4_0900_ai_ci */ ; -/*!50003 SET @saved_sql_mode = @@sql_mode */ ; -/*!50003 SET sql_mode = 'ONLY_FULL_GROUP_BY,STRICT_TRANS_TABLES,NO_ZERO_IN_DATE,NO_ZERO_DATE,ERROR_FOR_DIVISION_BY_ZERO,NO_ENGINE_SUBSTITUTION' */ ; -DELIMITER ;;; -/*!50003 CREATE*/ /*!50017 DEFINER=`root`@`localhost`*/ /*!50003 TRIGGER `before_update_Shop_User_Role_Link` BEFORE UPDATE ON `shop_user_role_link` FOR EACH ROW BEGIN - IF OLD.id_change_set <=> NEW.id_change_set THEN - SIGNAL SQLSTATE '45000' - SET MESSAGE_TEXT = 'New change Set ID must be provided.'; - END IF; - - INSERT INTO Shop_User_Role_Link_Audit ( - id_link, - name_field, - value_prev, - value_new, - id_change_set - ) - # Changed active - SELECT NEW.id_link, 'active', CONVERT(CONVERT(OLD.active, SIGNED), CHAR), CONVERT(CONVERT(NEW.active, SIGNED), CHAR), NEW.id_change_set - WHERE NOT (OLD.active <=> NEW.active) - ; -END */;; -DELIMITER ;; -/*!50003 SET sql_mode = @saved_sql_mode */ ; -/*!50003 SET character_set_client = @saved_cs_client */ ; -/*!50003 SET character_set_results = @saved_cs_results */ ; -/*!50003 SET collation_connection = @saved_col_connection */ ; - --- --- Table structure for table `shop_user_role_link_audit` --- - -DROP TABLE IF EXISTS `shop_user_role_link_audit`; -/*!40101 SET @saved_cs_client = @@character_set_client */; -/*!50503 SET character_set_client = utf8mb4 */; -CREATE TABLE `shop_user_role_link_audit` ( - `id_audit` int NOT NULL AUTO_INCREMENT, - `id_link` int NOT NULL, - `name_field` varchar(50) DEFAULT NULL, - `value_prev` varchar(500) DEFAULT NULL, - `value_new` varchar(500) DEFAULT NULL, - `id_change_set` int NOT NULL, - PRIMARY KEY (`id_audit`), - KEY `FK_Shop_User_Role_Link_Audit_id_link` (`id_link`), - KEY `FK_Shop_User_Role_Link_Audit_id_change_set` (`id_change_set`), - CONSTRAINT `FK_Shop_User_Role_Link_Audit_id_change_set` FOREIGN KEY (`id_change_set`) REFERENCES `shop_user_change_set` (`id_change_set`), - CONSTRAINT `FK_Shop_User_Role_Link_Audit_id_link` FOREIGN KEY (`id_link`) REFERENCES `shop_user_role_link` (`id_link`) ON UPDATE RESTRICT -) ENGINE=InnoDB DEFAULT CHARSET=utf8mb4 COLLATE=utf8mb4_0900_ai_ci; -/*!40101 SET character_set_client = @saved_cs_client */; - --- --- Dumping data for table `shop_user_role_link_audit` --- - -LOCK TABLES `shop_user_role_link_audit` WRITE; -/*!40000 ALTER TABLE `shop_user_role_link_audit` DISABLE KEYS */; -/*!40000 ALTER TABLE `shop_user_role_link_audit` ENABLE KEYS */; -UNLOCK TABLES; - --- --- Table structure for table `shop_variation` --- - -DROP TABLE IF EXISTS `shop_variation`; -/*!40101 SET @saved_cs_client = @@character_set_client */; -/*!50503 SET character_set_client = utf8mb4 */; -CREATE TABLE `shop_variation` ( - `id_variation` int NOT NULL AUTO_INCREMENT, - `id_type` int NOT NULL, - `code` varchar(50) DEFAULT NULL, - `name` varchar(255) DEFAULT NULL, - `active` bit(1) NOT NULL DEFAULT b'1', - `display_order` int NOT NULL, - `created_on` datetime DEFAULT NULL, - `created_by` varchar(100) DEFAULT NULL, - `id_change_set` int DEFAULT NULL, - PRIMARY KEY (`id_variation`), - KEY `FK_Shop_Variation_id_type` (`id_type`), - KEY `FK_Shop_Variation_id_change_set` (`id_change_set`), - CONSTRAINT `FK_Shop_Variation_id_change_set` FOREIGN KEY (`id_change_set`) REFERENCES `shop_product_change_set` (`id_change_set`), - CONSTRAINT `FK_Shop_Variation_id_type` FOREIGN KEY (`id_type`) REFERENCES `shop_variation_type` (`id_type`) ON UPDATE RESTRICT -) ENGINE=InnoDB AUTO_INCREMENT=3 DEFAULT CHARSET=utf8mb4 COLLATE=utf8mb4_0900_ai_ci; -/*!40101 SET character_set_client = @saved_cs_client */; - --- --- Dumping data for table `shop_variation` --- - -LOCK TABLES `shop_variation` WRITE; -/*!40000 ALTER TABLE `shop_variation` DISABLE KEYS */; -INSERT INTO `shop_variation` VALUES (1,1,'RED','Red',_binary '',1,'2024-04-28 19:03:07','root@localhost',NULL),(2,1,'BLUE','Blue',_binary '',2,'2024-04-28 19:03:07','root@localhost',NULL); -/*!40000 ALTER TABLE `shop_variation` ENABLE KEYS */; -UNLOCK TABLES; -/*!50003 SET @saved_cs_client = @@character_set_client */ ; -/*!50003 SET @saved_cs_results = @@character_set_results */ ; -/*!50003 SET @saved_col_connection = @@collation_connection */ ; -/*!50003 SET character_set_client = utf8mb4 */ ; -/*!50003 SET character_set_results = utf8mb4 */ ; -/*!50003 SET collation_connection = utf8mb4_0900_ai_ci */ ; -/*!50003 SET @saved_sql_mode = @@sql_mode */ ; -/*!50003 SET sql_mode = 'ONLY_FULL_GROUP_BY,STRICT_TRANS_TABLES,NO_ZERO_IN_DATE,NO_ZERO_DATE,ERROR_FOR_DIVISION_BY_ZERO,NO_ENGINE_SUBSTITUTION' */ ; -DELIMITER ;;; -/*!50003 CREATE*/ /*!50017 DEFINER=`root`@`localhost`*/ /*!50003 TRIGGER `before_insert_Shop_Variation` BEFORE INSERT ON `shop_variation` FOR EACH ROW BEGIN - SET NEW.created_on := IFNULL(NEW.created_on, NOW()); - SET NEW.created_by := IFNULL(NEW.created_by, IFNULL((SELECT id_user FROM Shop_User WHERE firstname = CURRENT_USER()), -1)); -END */;; -DELIMITER ;; -/*!50003 SET sql_mode = @saved_sql_mode */ ; -/*!50003 SET character_set_client = @saved_cs_client */ ; -/*!50003 SET character_set_results = @saved_cs_results */ ; -/*!50003 SET collation_connection = @saved_col_connection */ ; -/*!50003 SET @saved_cs_client = @@character_set_client */ ; -/*!50003 SET @saved_cs_results = @@character_set_results */ ; -/*!50003 SET @saved_col_connection = @@collation_connection */ ; -/*!50003 SET character_set_client = utf8mb4 */ ; -/*!50003 SET character_set_results = utf8mb4 */ ; -/*!50003 SET collation_connection = utf8mb4_0900_ai_ci */ ; -/*!50003 SET @saved_sql_mode = @@sql_mode */ ; -/*!50003 SET sql_mode = 'ONLY_FULL_GROUP_BY,STRICT_TRANS_TABLES,NO_ZERO_IN_DATE,NO_ZERO_DATE,ERROR_FOR_DIVISION_BY_ZERO,NO_ENGINE_SUBSTITUTION' */ ; -DELIMITER ;;; -/*!50003 CREATE*/ /*!50017 DEFINER=`root`@`localhost`*/ /*!50003 TRIGGER `before_update_Shop_Variation` BEFORE UPDATE ON `shop_variation` FOR EACH ROW BEGIN - IF OLD.id_change_set <=> NEW.id_change_set THEN - SIGNAL SQLSTATE '45000' - SET MESSAGE_TEXT = 'New change Set ID must be provided.'; - END IF; - - INSERT INTO Shop_Variation_Audit ( - id_variation, - name_field, - value_prev, - value_new, - id_change_set - ) - # Changed code - SELECT NEW.id_variation, 'code', OLD.code, NEW.code, NEW.id_change_set - WHERE NOT OLD.code <=> NEW.code - UNION - # Changed name - SELECT NEW.id_variation, 'name', OLD.name, NEW.name, NEW.id_change_set - WHERE NOT OLD.name <=> NEW.name - UNION - # Changed active - SELECT NEW.id_variation, 'active', CONVERT(CONVERT(OLD.active, SIGNED), CHAR), CONVERT(CONVERT(NEW.active, SIGNED), CHAR), NEW.id_change_set - WHERE NOT (OLD.active <=> NEW.active) - UNION - # Changed display_order - SELECT NEW.id_variation, 'display_order', CONVERT(OLD.display_order, CHAR), CONVERT(NEW.display_order, CHAR), NEW.id_change_set - WHERE NOT (OLD.display_order <=> NEW.display_order) - ; -END */;; -DELIMITER ;; -/*!50003 SET sql_mode = @saved_sql_mode */ ; -/*!50003 SET character_set_client = @saved_cs_client */ ; -/*!50003 SET character_set_results = @saved_cs_results */ ; -/*!50003 SET collation_connection = @saved_col_connection */ ; - --- --- Table structure for table `shop_variation_audit` --- - -DROP TABLE IF EXISTS `shop_variation_audit`; -/*!40101 SET @saved_cs_client = @@character_set_client */; -/*!50503 SET character_set_client = utf8mb4 */; -CREATE TABLE `shop_variation_audit` ( - `id_audit` int NOT NULL AUTO_INCREMENT, - `id_variation` int NOT NULL, - `name_field` varchar(50) DEFAULT NULL, - `value_prev` varchar(500) DEFAULT NULL, - `value_new` varchar(500) DEFAULT NULL, - `id_change_set` int NOT NULL, - PRIMARY KEY (`id_audit`), - KEY `FK_Shop_Variation_Audit_id_variation` (`id_variation`), - KEY `FK_Shop_Variation_Audit_id_change_set` (`id_change_set`), - CONSTRAINT `FK_Shop_Variation_Audit_id_change_set` FOREIGN KEY (`id_change_set`) REFERENCES `shop_product_change_set` (`id_change_set`), - CONSTRAINT `FK_Shop_Variation_Audit_id_variation` FOREIGN KEY (`id_variation`) REFERENCES `shop_variation` (`id_variation`) ON UPDATE RESTRICT -) ENGINE=InnoDB DEFAULT CHARSET=utf8mb4 COLLATE=utf8mb4_0900_ai_ci; -/*!40101 SET character_set_client = @saved_cs_client */; - --- --- Dumping data for table `shop_variation_audit` --- - -LOCK TABLES `shop_variation_audit` WRITE; -/*!40000 ALTER TABLE `shop_variation_audit` DISABLE KEYS */; -/*!40000 ALTER TABLE `shop_variation_audit` ENABLE KEYS */; -UNLOCK TABLES; - --- --- Table structure for table `shop_variation_type` --- - -DROP TABLE IF EXISTS `shop_variation_type`; -/*!40101 SET @saved_cs_client = @@character_set_client */; -/*!50503 SET character_set_client = utf8mb4 */; -CREATE TABLE `shop_variation_type` ( - `id_type` int NOT NULL AUTO_INCREMENT, - `code` varchar(50) DEFAULT NULL, - `name` varchar(255) DEFAULT NULL, - `name_plural` varchar(256) DEFAULT NULL, - `active` bit(1) NOT NULL DEFAULT b'1', - `display_order` int NOT NULL, - `created_on` datetime DEFAULT NULL, - `created_by` varchar(100) DEFAULT NULL, - `id_change_set` int DEFAULT NULL, - PRIMARY KEY (`id_type`), - KEY `FK_Shop_Variation_Type_id_change_set` (`id_change_set`), - CONSTRAINT `FK_Shop_Variation_Type_id_change_set` FOREIGN KEY (`id_change_set`) REFERENCES `shop_product_change_set` (`id_change_set`) -) ENGINE=InnoDB AUTO_INCREMENT=2 DEFAULT CHARSET=utf8mb4 COLLATE=utf8mb4_0900_ai_ci; -/*!40101 SET character_set_client = @saved_cs_client */; - --- --- Dumping data for table `shop_variation_type` --- - -LOCK TABLES `shop_variation_type` WRITE; -/*!40000 ALTER TABLE `shop_variation_type` DISABLE KEYS */; -INSERT INTO `shop_variation_type` VALUES (1,'COLOUR','Colour','Colours',_binary '',1,'2024-04-28 19:03:07','root@localhost',NULL); -/*!40000 ALTER TABLE `shop_variation_type` ENABLE KEYS */; -UNLOCK TABLES; -/*!50003 SET @saved_cs_client = @@character_set_client */ ; -/*!50003 SET @saved_cs_results = @@character_set_results */ ; -/*!50003 SET @saved_col_connection = @@collation_connection */ ; -/*!50003 SET character_set_client = utf8mb4 */ ; -/*!50003 SET character_set_results = utf8mb4 */ ; -/*!50003 SET collation_connection = utf8mb4_0900_ai_ci */ ; -/*!50003 SET @saved_sql_mode = @@sql_mode */ ; -/*!50003 SET sql_mode = 'ONLY_FULL_GROUP_BY,STRICT_TRANS_TABLES,NO_ZERO_IN_DATE,NO_ZERO_DATE,ERROR_FOR_DIVISION_BY_ZERO,NO_ENGINE_SUBSTITUTION' */ ; -DELIMITER ;;; -/*!50003 CREATE*/ /*!50017 DEFINER=`root`@`localhost`*/ /*!50003 TRIGGER `before_insert_Shop_Variation_Type` BEFORE INSERT ON `shop_variation_type` FOR EACH ROW BEGIN - SET NEW.created_on := IFNULL(NEW.created_on, NOW()); - SET NEW.created_by := IFNULL(NEW.created_by, IFNULL((SELECT id_user FROM Shop_User WHERE firstname = CURRENT_USER()), -1)); -END */;; -DELIMITER ;; -/*!50003 SET sql_mode = @saved_sql_mode */ ; -/*!50003 SET character_set_client = @saved_cs_client */ ; -/*!50003 SET character_set_results = @saved_cs_results */ ; -/*!50003 SET collation_connection = @saved_col_connection */ ; -/*!50003 SET @saved_cs_client = @@character_set_client */ ; -/*!50003 SET @saved_cs_results = @@character_set_results */ ; -/*!50003 SET @saved_col_connection = @@collation_connection */ ; -/*!50003 SET character_set_client = utf8mb4 */ ; -/*!50003 SET character_set_results = utf8mb4 */ ; -/*!50003 SET collation_connection = utf8mb4_0900_ai_ci */ ; -/*!50003 SET @saved_sql_mode = @@sql_mode */ ; -/*!50003 SET sql_mode = 'ONLY_FULL_GROUP_BY,STRICT_TRANS_TABLES,NO_ZERO_IN_DATE,NO_ZERO_DATE,ERROR_FOR_DIVISION_BY_ZERO,NO_ENGINE_SUBSTITUTION' */ ; -DELIMITER ;;; -/*!50003 CREATE*/ /*!50017 DEFINER=`root`@`localhost`*/ /*!50003 TRIGGER `before_update_Shop_Variation_Type` BEFORE UPDATE ON `shop_variation_type` FOR EACH ROW BEGIN - IF OLD.id_change_set <=> NEW.id_change_set THEN - SIGNAL SQLSTATE '45000' - SET MESSAGE_TEXT = 'New change Set ID must be provided.'; - END IF; - - INSERT INTO Shop_Variation_Type_Audit ( - id_type, - name_field, - value_prev, - value_new, - id_change_set - ) - # Changed code - SELECT NEW.id_type, 'code', OLD.code, NEW.code, NEW.id_change_set - WHERE NOT OLD.code <=> NEW.code - UNION - # Changed name - SELECT NEW.id_type, 'name', OLD.name, NEW.name, NEW.id_change_set - WHERE NOT OLD.name <=> NEW.name - UNION - # Changed name_plural - SELECT NEW.id_type, 'name_plural', OLD.name_plural, NEW.name_plural, NEW.id_change_set - WHERE NOT OLD.name_plural <=> NEW.name_plural - UNION - # Changed active - SELECT NEW.id_type, 'active', CONVERT(CONVERT(OLD.active, SIGNED), CHAR), CONVERT(CONVERT(NEW.active, SIGNED), CHAR), NEW.id_change_set - WHERE NOT (OLD.active <=> NEW.active) - UNION - # Changed display_order - SELECT NEW.id_type, 'display_order', CONVERT(OLD.display_order, CHAR), CONVERT(NEW.display_order, CHAR), NEW.id_change_set - WHERE NOT (OLD.display_order <=> NEW.display_order) - ; -END */;; -DELIMITER ;; -/*!50003 SET sql_mode = @saved_sql_mode */ ; -/*!50003 SET character_set_client = @saved_cs_client */ ; -/*!50003 SET character_set_results = @saved_cs_results */ ; -/*!50003 SET collation_connection = @saved_col_connection */ ; - --- --- Table structure for table `shop_variation_type_audit` --- - -DROP TABLE IF EXISTS `shop_variation_type_audit`; -/*!40101 SET @saved_cs_client = @@character_set_client */; -/*!50503 SET character_set_client = utf8mb4 */; -CREATE TABLE `shop_variation_type_audit` ( - `id_audit` int NOT NULL AUTO_INCREMENT, - `id_type` int NOT NULL, - `name_field` varchar(50) DEFAULT NULL, - `value_prev` varchar(500) DEFAULT NULL, - `value_new` varchar(500) DEFAULT NULL, - `id_change_set` int NOT NULL, - PRIMARY KEY (`id_audit`), - KEY `FK_Shop_Variation_Type_Audit_id_type` (`id_type`), - KEY `FK_Shop_Variation_Type_Audit_id_change_set` (`id_change_set`), - CONSTRAINT `FK_Shop_Variation_Type_Audit_id_change_set` FOREIGN KEY (`id_change_set`) REFERENCES `shop_product_change_set` (`id_change_set`), - CONSTRAINT `FK_Shop_Variation_Type_Audit_id_type` FOREIGN KEY (`id_type`) REFERENCES `shop_variation_type` (`id_type`) ON UPDATE RESTRICT -) ENGINE=InnoDB DEFAULT CHARSET=utf8mb4 COLLATE=utf8mb4_0900_ai_ci; -/*!40101 SET character_set_client = @saved_cs_client */; - --- --- Dumping data for table `shop_variation_type_audit` --- - -LOCK TABLES `shop_variation_type_audit` WRITE; -/*!40000 ALTER TABLE `shop_variation_type_audit` DISABLE KEYS */; -/*!40000 ALTER TABLE `shop_variation_type_audit` ENABLE KEYS */; -UNLOCK TABLES; - --- --- Table structure for table `tmp_msg_error` --- - -DROP TABLE IF EXISTS `tmp_msg_error`; -/*!40101 SET @saved_cs_client = @@character_set_client */; -/*!50503 SET character_set_client = utf8mb4 */; -CREATE TABLE `tmp_msg_error` ( - `display_order` int NOT NULL AUTO_INCREMENT, - `guid` varchar(36) NOT NULL, - `id_type` int NOT NULL, - `msg` varchar(4000) NOT NULL, - PRIMARY KEY (`display_order`), - KEY `FK_tmp_Msg_Error_id_type` (`id_type`), - CONSTRAINT `FK_tmp_Msg_Error_id_type` FOREIGN KEY (`id_type`) REFERENCES `shop_msg_error_type` (`id_type`) -) ENGINE=InnoDB DEFAULT CHARSET=utf8mb4 COLLATE=utf8mb4_0900_ai_ci; -/*!40101 SET character_set_client = @saved_cs_client */; - --- --- Dumping data for table `tmp_msg_error` --- - -LOCK TABLES `tmp_msg_error` WRITE; -/*!40000 ALTER TABLE `tmp_msg_error` DISABLE KEYS */; -/*!40000 ALTER TABLE `tmp_msg_error` ENABLE KEYS */; -UNLOCK TABLES; - --- --- Dumping events for database 'partsltd_prod' --- - --- --- Dumping routines for database 'partsltd_prod' --- -/*!50003 DROP PROCEDURE IF EXISTS `p_shop_edit_user` */; -/*!50003 SET @saved_cs_client = @@character_set_client */ ; -/*!50003 SET @saved_cs_results = @@character_set_results */ ; -/*!50003 SET @saved_col_connection = @@collation_connection */ ; -/*!50003 SET character_set_client = utf8mb4 */ ; -/*!50003 SET character_set_results = utf8mb4 */ ; -/*!50003 SET collation_connection = utf8mb4_0900_ai_ci */ ; -/*!50003 SET @saved_sql_mode = @@sql_mode */ ; -/*!50003 SET sql_mode = 'ONLY_FULL_GROUP_BY,STRICT_TRANS_TABLES,NO_ZERO_IN_DATE,NO_ZERO_DATE,ERROR_FOR_DIVISION_BY_ZERO,NO_ENGINE_SUBSTITUTION' */ ; -DELIMITER ;;; -CREATE DEFINER=`root`@`localhost` PROCEDURE `p_shop_edit_user`( - IN a_id_user INT, - IN a_name VARCHAR(255), - IN a_email VARCHAR(254), - IN a_email_verified BIT -) -BEGIN - -- Argument redeclaration - -- Variable declaration - DECLARE v_has_filter_user BIT; - -- DECLARE v_now DATETIME; - - - -- Argument validation + default values - IF a_id_user IS NULL THEN - SET a_id_user = ''; - ELSE - SET a_id_user = TRIM(a_id_user); - END IF; - IF a_name IS NULL THEN - SET a_name = ''; - ELSE - SET a_name = TRIM(a_name); - END IF; - IF a_email IS NULL THEN - SET a_email = ''; - ELSE - SET a_email = TRIM(a_email); - END IF; - IF a_email_verified IS NULL THEN - SET a_email_verified = 0; - END IF; - - -- Temporary tables - DROP TABLE IF EXISTS tmp_Msg_Error; - DROP TABLE IF EXISTS tmp_Shop_User; - - CREATE TABLE tmp_Shop_User ( - id_user INT NOT NULL, - CONSTRAINT FK_tmp_Shop_User_id_user - FOREIGN KEY (id_user) - REFERENCES Shop_User(id_user), - active BIT NOT NULL - ); - - CREATE TABLE tmp_Msg_Error ( - display_order INT NOT NULL PRIMARY KEY AUTO_INCREMENT, - id_type INT NOT NULL, - # code VARCHAR(50) NOT NULL, - # CONSTRAINT chk_tmp_Msg_Error_code CHECK (code IN (SELECT code FROM Shop_Msg_Error_Type)), - CONSTRAINT FK_tmp_Msg_Error_id_type - FOREIGN KEY (id_type) - REFERENCES Shop_Msg_Error_Type(id_type), - msg VARCHAR(4000) NOT NULL - ); - - - -- Parse filters - SET v_has_filter_user = CASE WHEN a_id_user = '' THEN 0 ELSE 1 END; - - - -- User - IF v_has_filter_user THEN - INSERT INTO tmp_Shop_User ( - id_user, - active - ) - SELECT id_user, - active - FROM Shop_User - WHERE id_user LIKE CONCAT('%', a_id_user, '%') - AND active - LIMIT 1 - ; - - IF NOT EXISTS (SELECT id_user FROM tmp_Shop_User LIMIT 1) THEN - INSERT INTO Shop_User ( - id_user, - name, - email, - email_verified - ) - VALUES ( - a_id_user, - a_name, - a_email, - a_email_verified - ); - - INSERT INTO tmp_Shop_User ( - id_user, - active - ) - SELECT id_user, - active - FROM Shop_User - WHERE id_user LIKE CONCAT('%', a_id_user, '%') - AND active - LIMIT 1 - ; - END IF; - - SET a_id_user := (SELECT id_user FROM tmp_Shop_User LIMIT 1); - ELSE - INSERT INTO tmp_Msg_Error ( - id_type, - msg - ) - VALUES ( - (SELECT id_type FROM Shop_Msg_Error_Type WHERE code = 'BAD_DATA' LIMIT 1), - 'No user ID provided.' - ) - ; - END IF; - - - /* - IF NOT EXISTS (SELECT msg FROM tmp_Msg_Error LIMIT 1) THEN - END IF; - */ - - - -- Returns - # User - SELECT * - FROM tmp_Shop_User - ; - - # Errors - SELECT * - FROM tmp_Msg_Error - ; - - /* - # Return arguments for test - SELECT a_id_user, - a_name, - a_email, - a_email_verified - ; - */ - - -- Clean up - DROP TABLE IF EXISTS tmp_Msg_Error; - DROP TABLE IF EXISTS tmp_Shop_User; -END ;; -DELIMITER ;; -/*!50003 SET sql_mode = @saved_sql_mode */ ; -/*!50003 SET character_set_client = @saved_cs_client */ ; -/*!50003 SET character_set_results = @saved_cs_results */ ; -/*!50003 SET collation_connection = @saved_col_connection */ ; -/*!50003 DROP PROCEDURE IF EXISTS `p_shop_edit_user_basket` */; -/*!50003 SET @saved_cs_client = @@character_set_client */ ; -/*!50003 SET @saved_cs_results = @@character_set_results */ ; -/*!50003 SET @saved_col_connection = @@collation_connection */ ; -/*!50003 SET character_set_client = utf8mb4 */ ; -/*!50003 SET character_set_results = utf8mb4 */ ; -/*!50003 SET collation_connection = utf8mb4_0900_ai_ci */ ; -/*!50003 SET @saved_sql_mode = @@sql_mode */ ; -/*!50003 SET sql_mode = 'ONLY_FULL_GROUP_BY,STRICT_TRANS_TABLES,NO_ZERO_IN_DATE,NO_ZERO_DATE,ERROR_FOR_DIVISION_BY_ZERO,NO_ENGINE_SUBSTITUTION' */ ; -DELIMITER ;;; -CREATE DEFINER=`root`@`localhost` PROCEDURE `p_shop_edit_user_basket`( - IN a_id_user INT, - IN a_ids_permutation_basket VARCHAR(4000), - IN a_quantities_permutation_basket VARCHAR(4000), - IN a_id_permutation_edit INT, - IN a_quantity_permutation_edit INT, - IN a_sum_not_edit BIT, - IN a_id_currency INT, - IN a_id_region_purchase INT -) -BEGIN - -- Argument redeclaration - -- Variable declaration - DECLARE v_has_filter_user BIT; - DECLARE v_has_filter_permutation_basket BIT; - DECLARE v_has_filter_permutation_edit BIT; - DECLARE v_has_filter_region BIT; - DECLARE v_has_filter_currency BIT; - DECLARE v_n_id_permutation_basket INT; - DECLARE v_n_quantity_permutation_basket INT; - DECLARE v_row_number INT; - DECLARE v_guid BINARY(36); - # DECLARE v_id_user VARCHAR(100); - DECLARE v_id_permission_product INT; - DECLARE v_ids_permutation_permission VARCHAR(4000); - DECLARE v_now DATETIME; - # DECLARE v_quantity_new INT; - DECLARE v_change_set_used BIT; - DECLARE v_id_change_set INT; - - SET v_guid = UUID(); - - -- Argument validation + default values - IF a_id_user IS NULL THEN - SET a_id_user = ''; - ELSE - SET a_id_user = TRIM(a_id_user); - END IF; - IF a_ids_permutation_basket IS NULL THEN - SET a_ids_permutation_basket = ''; - ELSE - SET a_ids_permutation_basket = TRIM(a_ids_permutation_basket); - END IF; - IF a_quantities_permutation_basket IS NULL THEN - SET a_quantities_permutation_basket = ''; - ELSE - SET a_quantities_permutation_basket = TRIM(a_quantities_permutation_basket); - END IF; - IF a_sum_not_edit IS NULL THEN - SET a_sum_not_edit = 1; - END IF; - - -- Temporary tables - DROP TABLE IF EXISTS tmp_Msg_Error; - DROP TABLE IF EXISTS tmp_Shop_Basket; - DROP TEMPORARY TABLE IF EXISTS tmp_Shop_Quantity; - DROP TABLE IF EXISTS tmp_Shop_Product; - DROP TABLE IF EXISTS tmp_Shop_User; - - CREATE TABLE tmp_Shop_User ( - id_user INT NOT NULL, - CONSTRAINT FK_tmp_Shop_User_id_user - FOREIGN KEY (id_user) - REFERENCES Shop_User(id_user), - active BIT NOT NULL - ); - - CREATE TABLE tmp_Shop_Product ( - id_product INT NOT NULL, - CONSTRAINT FK_tmp_Shop_Product_id_product - FOREIGN KEY (id_product) - REFERENCES Shop_Product(id_product), - id_permutation INT NOT NULL, - CONSTRAINT FK_tmp_Shop_Product_id_permutation - FOREIGN KEY (id_permutation) - REFERENCES Shop_Product_Permutation(id_permutation), - display_order INT NOT NULL, - active INT NOT NULL DEFAULT 1 - ); - - CREATE TEMPORARY TABLE tmp_Shop_Quantity( - quantity INT NOT NULL, - display_order INT NOT NULL, - active INT NOT NULL DEFAULT 1 - ); - - CREATE TABLE tmp_Shop_Basket ( - id_category INT NOT NULL, - CONSTRAINT FK_tmp_Shop_Basket_id_category - FOREIGN KEY (id_category) - REFERENCES Shop_Product_Category(id_category), - id_product INT NOT NULL, - CONSTRAINT FK_tmp_Shop_Basket_id_product - FOREIGN KEY (id_product) - REFERENCES Shop_Product(id_product), - id_permutation INT NOT NULL, - CONSTRAINT FK_tmp_Shop_Basket_id_permutation - FOREIGN KEY (id_permutation) - REFERENCES Shop_Product_Permutation(id_permutation), - id_region_purchase INT NOT NULL, - CONSTRAINT FK_tmp_Shop_Basket_id_region_purchase - FOREIGN KEY (id_region_purchase) - REFERENCES Shop_Region(id_region), - id_currency INT NOT NULL, - CONSTRAINT FK_tmp_Shop_Basket_id_currency - FOREIGN KEY (id_currency) - REFERENCES Shop_Currency(id_currency), - quantity INT NOT NULL, - active BIT NOT NULL DEFAULT 1 - /* - display_order_category INT NOT NULL, - display_order_product INT NOT NULL - */ - ); - - CREATE TABLE IF NOT EXISTS tmp_Msg_Error ( - display_order INT NOT NULL PRIMARY KEY AUTO_INCREMENT, - guid BINARY(36) NOT NULL, - id_type INT NOT NULL, - # code VARCHAR(50) NOT NULL, - # CONSTRAINT chk_tmp_Msg_Error_code CHECK (code IN (SELECT code FROM Shop_Msg_Error_Type)), - CONSTRAINT FK_tmp_Msg_Error_id_type - FOREIGN KEY (id_type) - REFERENCES Shop_Msg_Error_Type(id_type), - msg VARCHAR(4000) NOT NULL - ); - - - -- Parse filters - SET v_has_filter_user = NOT (a_id_user = ''); - SET v_has_filter_permutation_basket = NOT (a_ids_permutation_basket = ''); - SET v_has_filter_permutation_edit = NOT ISNULL(a_id_permutation_edit); - SET v_has_filter_currency = NOT ISNULL(a_id_currency); - SET v_has_filter_region = NOT ISNULL(a_id_region_purchase); - # SET v_quantity_new = CASE WHEN a_sum_not_edit THEN quantity + a_quantity_product_edit ELSE a_quantity_product_edit END; - /* - SELECT v_has_filter_user, v_has_filter_basket - ; - - */ - - -- Currency - IF NOT v_has_filter_currency THEN - INSERT INTO tmp_Msg_Error ( - id_type, - guid, - msg - ) - VALUES ( - (SELECT id_type FROM Shop_Msg_Error_Type WHERE code = 'BAD_DATA' LIMIT 1), - v_guid, - 'Currency ID not provided.' - ) - ; - END IF; - IF v_has_filter_currency AND NOT EXISTS ( SELECT * FROM Shop_Currency WHERE id_currency = a_id_currency) THEN - INSERT INTO tmp_Msg_Error ( - id_type, - guid, - msg - ) - VALUES ( - (SELECT id_type FROM Shop_Msg_Error_Type WHERE code = 'BAD_DATA' LIMIT 1), - v_guid, - CONCAT('Currency ID not found: ', a_id_currency, '.') - ) - ; - END IF; - - -- Region - IF NOT v_has_filter_region THEN - INSERT INTO tmp_Msg_Error ( - id_type, - guid, - msg - ) - VALUES ( - (SELECT id_type FROM Shop_Msg_Error_Type WHERE code = 'BAD_DATA' LIMIT 1), - v_guid, - 'Region ID not provided.' - ) - ; - END IF; - IF v_has_filter_region AND NOT EXISTS ( SELECT * FROM Shop_Region WHERE id_region = a_id_region_purchase) THEN - INSERT INTO tmp_Msg_Error ( - id_type, - guid, - msg - ) - VALUES ( - (SELECT id_type FROM Shop_Msg_Error_Type WHERE code = 'BAD_DATA' LIMIT 1), - v_guid, - CONCAT('Region ID not found: ', a_id_region_purchase, '.') - ) - ; - END IF; - - -- User - IF v_has_filter_user THEN - INSERT INTO tmp_Shop_User ( - id_user, - active - ) - SELECT id_user, - active - FROM Shop_User - WHERE id_user LIKE CONCAT('%', a_id_user, '%') - AND active - LIMIT 1 - ; - - IF NOT EXISTS (SELECT id_user FROM tmp_Shop_User LIMIT 1) THEN - SET v_has_filter_user = 0; - - INSERT INTO tmp_Msg_Error ( - id_type, - guid, - msg - ) - VALUES ( - (SELECT id_type FROM Shop_Msg_Error_Type WHERE code = 'BAD_DATA' LIMIT 1), - v_guid, - CONCAT('User ID not found: ', a_id_user, '.') - ) - ; - END IF; - - SET a_id_user := (SELECT id_user FROM tmp_Shop_User LIMIT 1); - END IF; - - IF v_has_filter_user AND NOT EXISTS (SELECT msg FROM tmp_Msg_Error WHERE guid = v_guid LIMIT 1) THEN - SET v_change_set_used = 0; - INSERT INTO Shop_User_Change_Set ( - comment - ) - VALUES ( - 'edit basket' - ); - SET v_id_change_set := (SELECT id_change_set FROM Shop_User_Change_Set ORDER BY id_change_set DESC LIMIT 1); - END IF; - - -- Get basket - -- User - IF v_has_filter_user AND NOT EXISTS (SELECT msg FROM tmp_Msg_Error WHERE guid = v_guid LIMIT 1) THEN - INSERT INTO tmp_Shop_Basket ( - id_category, - id_product, - id_permutation, - id_region_purchase, - id_currency, - quantity, - active - /* - display_order_category, - display_order_product - */ - ) - SELECT - C.id_category, - UB.id_product, - UB.id_permutation, - UB.id_region_purchase, - UB.id_currency, - UB.quantity, - UB.active - /* - C.display_order, - P.display_order - */ - FROM Shop_User_Basket UB - /* - INNER JOIN tmp_Shop_User t_U - ON UB.id_user = t_U.id_user - */ - INNER JOIN Shop_Product_Permutation PP - ON UB.id_product = PP.id_product - AND PP.active - INNER JOIN Shop_Product P - ON PP.id_product = P.id_product - AND P.active - INNER JOIN Shop_Product_Category C - ON P.id_category = C.id_category - AND C.active - WHERE UB.id_user = a_id_user - ; - END IF; - - -- Currency - IF EXISTS (SELECT * FROM tmp_Shop_Basket WHERE active LIMIT 1) - AND NOT EXISTS (SELECT msg FROM tmp_Msg_Error WHERE guid = v_guid LIMIT 1) THEN - IF EXISTS (SELECT * FROM tmp_Shop_Basket WHERE active AND id_currency != a_id_currency) THEN - INSERT INTO tmp_Msg_Error ( - id_type, - guid, - msg - ) - VALUES ( - (SELECT id_type FROM Shop_Msg_Error_Type WHERE code = 'BAD_DATA' LIMIT 1), - v_guid, - CONCAT( - 'Currency ID does not match currency of other items in basket. Basket currency: ', - (SELECT code FROM Shop_Currency WHERE id_currency = ( - SELECT - id_currency - FROM tmp_Shop_Basket - WHERE active - AND id_currency != a_id_currency - LIMIT 1 - )), - ', new currency: ', - (SELECT code FROM Shop_Currency WHERE id_currency = a_id_currency), - '.' - ) - ) - ; - END IF; - END IF; - - -- Region - IF EXISTS (SELECT * FROM tmp_Shop_Basket WHERE active LIMIT 1) - AND NOT EXISTS (SELECT msg FROM tmp_Msg_Error WHERE guid = v_guid LIMIT 1) THEN - IF EXISTS ( - SELECT * - FROM tmp_Shop_Basket - WHERE - active - AND id_region_purchase != a_id_region_purchase - ) THEN - INSERT INTO tmp_Msg_Error ( - id_type, - guid, - msg - ) - VALUES ( - (SELECT id_type FROM Shop_Msg_Error_Type WHERE code = 'BAD_DATA' LIMIT 1), - v_guid, - CONCAT('Purchase region ID does not match region of other items in basket. Basket currency: ', - (SELECT code FROM Shop_Region WHERE id_region = ( - SELECT - id_region_purchase - FROM tmp_Shop_Basket - WHERE active - AND id_region != a_id_region_purchase - LIMIT 1 - )), - ', new currency: ', - (SELECT code FROM Shop_Region WHERE id_region = a_id_region_purchase), - '.' - ) - ) - ; - END IF; - END IF; - - -- String product id, permutation id, quantity list - IF NOT EXISTS (SELECT * FROM tmp_Shop_Basket WHERE active LIMIT 1) AND NOT EXISTS (SELECT msg FROM tmp_Msg_Error WHERE guid = v_guid LIMIT 1) THEN -- NOT v_has_filter_user AND - # Get product ids - CALL p_split(a_ids_permutation_basket, ','); - INSERT INTO tmp_Shop_Product ( - id_product, id_permutation, display_order - ) - SELECT PP.id_product, ST.substring, ST.display_order - FROM Split_Temp ST - INNER JOIN Shop_Product_Permutation PP - ON ST.substring = PP.id_permutation - -- AND PP.active - ; - /* - SELECT substring as id_product, display_order - FROM Split_Temp - ; - */ - DROP TABLE Split_Temp; - - # Get product quantities - CALL p_split(a_quantities_permutation_basket, ','); - INSERT INTO tmp_Shop_Quantity ( - quantity, display_order - ) - SELECT substring, display_order - FROM Split_Temp - ; - /* - SELECT substring AS quantity_product, display_order - FROM Split_Temp - ; - */ - DROP TABLE Split_Temp; - - # Compare number of product ids to number of quantities - SET v_n_id_permutation_basket := (SELECT display_order FROM tmp_Shop_Product ORDER BY display_order DESC LIMIT 1); - SET v_n_quantity_permutation_basket := (SELECT display_order FROM tmp_Shop_Quantity ORDER BY display_order DESC LIMIT 1); - IF NOT v_n_id_permutation_basket = v_n_quantity_permutation_basket THEN - INSERT INTO tmp_Msg_Error ( - id_type, - guid, - msg - ) - VALUES ( - (SELECT id_type FROM Shop_Msg_Error_Type WHERE code = 'BAD_DATA' LIMIT 1), - v_guid, - CONCAT('Number of permutations (', v_n_id_permutation_basket, ') does not equal number of quantities (', v_n_quantity_permutation_basket, ') for basket.') - ) - ; - ELSE - INSERT INTO tmp_Shop_Basket ( - id_category, - id_product, - id_permutation, - id_region_purchase, - id_currency, - quantity - ) - SELECT - C.id_category, - P.id_product, - t_P.id_permutation, - a_id_region_purchase, - a_id_currency, - t_Q.quantity - FROM tmp_Shop_Product t_P - INNER JOIN tmp_Shop_Quantity t_Q - ON t_P.display_order = t_Q.display_order - INNER JOIN Shop_Product_Permutation PP - ON t_P.id_permutation = PP.id_permutation - AND PP.active - INNER JOIN Shop_Product P - ON PP.id_product = P.id_product - AND P.active - INNER JOIN Shop_Product_Category C - ON P.id_category = C.id_category - AND C.active - -- RIGHT JOIN tmp_Shop_Basket t_UB ON ISNULL(t_UB.id_product) - -- WHERE t_P.id_product NOT IN (SELECT id_product FROM tmp_Shop_Basket) - ; - - /* - IF EXISTS( - SELECT * - FROM Shop_Product P - INNER JOIN Shop_Product_Category C - ON P.id_category = C.id_category - INNER JOIN tmp_Shop_Basket t_B - ON P.id_product = t_B.id_product - WHERE C.active = 0 OR P.active = 0 LIMIT 1 - ) THEN - INSERT INTO tmp_Msg_Error ( - id_type, - guid, - msg - ) - VALUES ( - (SELECT id_type FROM Shop_Msg_Error_Type WHERE code = 'BAD_DATA' LIMIT 1), - v_guid, - CONCAT('No valid product IDs in list: ', a_ids_permutation_basket, '.') - ) - ; - END IF; - */ - END IF; - END IF; - - /* - select v_has_filter_edit; - select * from tmp_Shop_Basket; - select * from tmp_Msg_Error; - */ - - - # Edit basket product - IF v_has_filter_permutation_edit AND NOT EXISTS (SELECT msg FROM tmp_Msg_Error WHERE guid = v_guid LIMIT 1) THEN - IF EXISTS ( - SELECT * - FROM Shop_Product_Permutation PP - INNER JOIN Shop_Product P - ON PP.id_product = P.id_product - INNER JOIN Shop_Product_Category C - ON P.id_category = C.id_category - WHERE - ( - C.active = 0 - OR P.active = 0 - OR PP.active = 0 - ) - AND PP.id_permutation = a_id_permutation_edit - LIMIT 1 - ) THEN - INSERT INTO tmp_Msg_Error ( - id_type, - guid, - msg - ) - VALUES ( - (SELECT id_type FROM Shop_Msg_Error_Type WHERE code = 'BAD_DATA' LIMIT 1), - v_guid, - CONCAT('Invalid product ID to edit: ', a_id_product_edit, '.') - ) - ; - END IF; - END IF; - IF v_has_filter_permutation_edit AND NOT EXISTS (SELECT msg FROM tmp_Msg_Error WHERE guid = v_guid LIMIT 1) THEN - IF EXISTS ( - SELECT * - FROM tmp_Shop_Basket - WHERE - id_permutation = a_id_permutation_edit - ) THEN - UPDATE tmp_Shop_Basket - SET quantity = CASE WHEN a_sum_not_edit = 1 THEN IFNULL(quantity, 0) + a_quantity_permutation_edit ELSE a_quantity_permutation_edit END, - active = CASE WHEN CASE WHEN a_sum_not_edit = 1 THEN IFNULL(quantity, 0) + a_quantity_permutation_edit ELSE a_quantity_permutation_edit END = 0 THEN 0 ELSE 1 END - WHERE id_permutation = a_id_permutation_edit - ; - - IF EXISTS ( - SELECT * - FROM tmp_Shop_Basket t_B - WHERE t_B.quantity < 0 - ) THEN - INSERT INTO tmp_Msg_Error ( - id_type, - guid, - msg - ) - VALUES ( - (SELECT id_type FROM Shop_Msg_Error_Type WHERE code = 'BAD_DATA' LIMIT 1), - v_guid, - 'Invalid basket quantity.' - ) - ; - END IF; - - IF v_has_filter_user AND NOT EXISTS (SELECT msg FROM tmp_Msg_Error WHERE guid = v_guid LIMIT 1) THEN - SET v_change_set_used = 1; - - UPDATE Shop_User_Basket UB - INNER JOIN tmp_Shop_Basket t_UB - ON UB.id_permutation = a_id_permutation_edit - SET UB.quantity = t_UB.quantity, - UB.active = t_UB.active, - UB.id_change_set_user = v_id_change_set - WHERE UB.id_permutation = a_id_permutation_edit - AND id_user = a_id_user - ; - END IF; - ELSE - IF a_quantity_permutation_edit < 0 THEN - INSERT INTO tmp_Msg_Error ( - id_type, - guid, - msg - ) - VALUES ( - (SELECT id_type FROM Shop_Msg_Error_Type WHERE code = 'BAD_DATA' LIMIT 1), - v_guid, - 'Invalid basket quantity.' - ) - ; - ELSE - INSERT INTO tmp_Shop_Basket ( - id_category, - id_product, - id_permutation, - id_region_purchase, - id_currency, - quantity, - active - ) - SELECT - P.id_category, - P.id_product, - PP.id_permutation, - a_id_region_purchase, - a_id_currency, - a_quantity_permutation_edit, - CASE WHEN a_quantity_permutation_edit > 0 THEN 1 ELSE 0 END - FROM Shop_Product_Permutation PP - INNER JOIN Shop_Product P - ON PP.id_product = P.id_product - WHERE id_permutation = a_id_permutation_edit - ; - IF v_has_filter_user THEN - IF EXISTS ( - SELECT * - FROM Shop_User_Basket UB - WHERE - UB.id_permutation = a_id_permutation_edit - ) THEN - SET v_change_set_used = 1; - - UPDATE Shop_User_Basket - INNER JOIN tmp_Shop_Basket t_UB ON UB.id_permutation = t_UB.id_permutation - SET UB.quantity = t_UB.quantity, - UB.active = t_UB.active, - UB.id_change_set_user = v_id_change_set - WHERE UB.id_permutation = a_id_permutation_edit - AND id_user = a_id_user - ; - ELSE - INSERT INTO Shop_User_Basket ( - id_user, - id_product, - id_permutation, - id_region_purchase, - id_currency, - quantity, - active - ) - SELECT a_id_user, - t_UB.id_product, - t_UB.id_permutation, - t_UB.id_region_purchase, - t_UB.id_currency, - t_UB.quantity, - t_UB.active - FROM tmp_Shop_Basket t_UB - WHERE id_permutation = a_id_permutation_edit - ; - END IF; - END IF; - END IF; - END IF; - END IF; - - - -- Checks - /* - SELECT * FROM tmp_Shop_Basket; - SELECT - GROUP_CONCAT(t_UB.id_product SEPARATOR ',') AS basket_product_ids - FROM tmp_Shop_Basket t_UB - -- WHERE ISNULL(t_UB.id_permutation) - ; - SELECT - GROUP_CONCAT(t_UB.id_permutation SEPARATOR ',') AS basket_permutation_ids - FROM tmp_Shop_Basket t_UB - WHERE NOT ISNULL(t_UB.id_permutation) - ; - */ - -- Returns - CALL p_shop_get_many_product ( - a_id_user, # a_id_user - 1, # a_get_all_categories - '', # a_ids_category - 0, # a_get_inactive_categories - 0, # a_get_all_products - ( - SELECT - GROUP_CONCAT(t_B.id_product SEPARATOR ',') - FROM tmp_Shop_Basket t_B - WHERE active = 1 - ), # a_ids_product - 0, # a_get_inactive_products - 0, # a_get_first_product_only - 0, # a_get_all_product_permutations - ( - SELECT - GROUP_CONCAT(t_B.id_permutation SEPARATOR ',') - FROM tmp_Shop_Basket t_B - WHERE NOT ISNULL(t_B.id_permutation) - AND active = 1 - ), # a_ids_permutation - 0, # a_get_inactive_permutations - 0, # a_get_all_images - '', # a_ids_image - 0, # a_get_inactive_images - 1, # a_get_first_image_only - 0, # a_get_all_delivery_region - a_id_region_purchase, # a_ids_delivery_region - 0, # a_get_inactive_delivery_region - 0, # a_get_all_currency - a_id_currency, # a_ids_currency - 0, # a_get_inactive_currency - 1, # a_get_all_discount - '', # a_ids_discount - 0 # a_get_inactive_discount - ); - - # Basket - SELECT t_UB.id_category, - t_UB.id_product, - t_UB.id_permutation, - P.name, - PCL.price_local_VAT_incl, - PCL.price_local_VAT_excl, - PCL.id_currency, - t_UB.quantity - FROM tmp_Shop_Basket t_UB - INNER JOIN Shop_Product_Permutation PP - ON t_UB.id_permutation = PP.id_permutation - INNER JOIN Shop_Product P - ON PP.id_product = P.id_product - INNER JOIN Shop_Product_Category C - ON P.id_category = C.id_category - INNER JOIN Shop_Product_Currency_Link PCL - ON PP.id_permutation = PCL.id_permutation - AND PCL.id_region_purchase = a_id_region_purchase - AND PCL.id_currency = a_id_currency - WHERE t_UB.active = 1 - ORDER BY C.display_order, P.display_order - ; - - # Errors - /* Completed by product get many */ - SELECT - t_ME.display_order, - t_ME.guid, - t_ME.id_type, - t_ME.msg, - MET.code, - MET.name, - MET.description - FROM tmp_Msg_Error t_ME - INNER JOIN Shop_Msg_Error_Type MET - ON t_ME.id_type = MET.id_type - WHERE GUID = v_guid - ; - - /* - # Return arguments for test - SELECT - a_ids_category, - a_get_inactive_categories, - a_ids_product, - a_get_inactive_products, - a_get_first_product_only, - a_get_all_products, - a_ids_image, - a_get_inactive_images, - a_get_first_image_only, - a_get_all_images - ; - */ - - -- Clean up - IF NOT v_change_set_used THEN - DELETE FROM Shop_User_Change_Set - WHERE id_change_set = v_id_change_set - ; - END IF; - - # DROP TABLE IF EXISTS tmp_Msg_Error; - DELETE FROM tmp_Msg_Error WHERE guid = v_guid; - IF NOT EXISTS (SELECT * FROM tmp_Msg_Error) THEN - DROP TABLE tmp_Msg_Error; - END IF; - DROP TABLE IF EXISTS tmp_Shop_Basket; - DROP TEMPORARY TABLE IF EXISTS tmp_Shop_Quantity; - DROP TABLE IF EXISTS tmp_Shop_Product; - DROP TABLE IF EXISTS tmp_Shop_User; -END ;; -DELIMITER ;; -/*!50003 SET sql_mode = @saved_sql_mode */ ; -/*!50003 SET character_set_client = @saved_cs_client */ ; -/*!50003 SET character_set_results = @saved_cs_results */ ; -/*!50003 SET collation_connection = @saved_col_connection */ ; -/*!50003 DROP PROCEDURE IF EXISTS `p_shop_get_many_currency` */; -/*!50003 SET @saved_cs_client = @@character_set_client */ ; -/*!50003 SET @saved_cs_results = @@character_set_results */ ; -/*!50003 SET @saved_col_connection = @@collation_connection */ ; -/*!50003 SET character_set_client = utf8mb4 */ ; -/*!50003 SET character_set_results = utf8mb4 */ ; -/*!50003 SET collation_connection = utf8mb4_0900_ai_ci */ ; -/*!50003 SET @saved_sql_mode = @@sql_mode */ ; -/*!50003 SET sql_mode = 'ONLY_FULL_GROUP_BY,STRICT_TRANS_TABLES,NO_ZERO_IN_DATE,NO_ZERO_DATE,ERROR_FOR_DIVISION_BY_ZERO,NO_ENGINE_SUBSTITUTION' */ ; -DELIMITER ;;; -CREATE DEFINER=`root`@`localhost` PROCEDURE `p_shop_get_many_currency`( - IN a_get_inactive_currency BIT -) -BEGIN - IF a_get_inactive_currency IS NULL THEN - SET a_get_inactive_currency = 0; - END IF; - - SELECT - C.id_currency, - C.code, - C.name, - C.factor_from_GBP, - C.active, - C.display_order - FROM Shop_Currency C - WHERE a_get_inactive_currency - OR C.active - ORDER BY C.display_order - ; -END ;; -DELIMITER ;; -/*!50003 SET sql_mode = @saved_sql_mode */ ; -/*!50003 SET character_set_client = @saved_cs_client */ ; -/*!50003 SET character_set_results = @saved_cs_results */ ; -/*!50003 SET collation_connection = @saved_col_connection */ ; -/*!50003 DROP PROCEDURE IF EXISTS `p_shop_get_many_product` */; -/*!50003 SET @saved_cs_client = @@character_set_client */ ; -/*!50003 SET @saved_cs_results = @@character_set_results */ ; -/*!50003 SET @saved_col_connection = @@collation_connection */ ; -/*!50003 SET character_set_client = utf8mb4 */ ; -/*!50003 SET character_set_results = utf8mb4 */ ; -/*!50003 SET collation_connection = utf8mb4_0900_ai_ci */ ; -/*!50003 SET @saved_sql_mode = @@sql_mode */ ; -/*!50003 SET sql_mode = 'ONLY_FULL_GROUP_BY,STRICT_TRANS_TABLES,NO_ZERO_IN_DATE,NO_ZERO_DATE,ERROR_FOR_DIVISION_BY_ZERO,NO_ENGINE_SUBSTITUTION' */ ; -DELIMITER ;;; -CREATE DEFINER=`root`@`localhost` PROCEDURE `p_shop_get_many_product`( - IN a_id_user INT, - IN a_get_all_category BIT, - IN a_ids_category VARCHAR(500), - IN a_get_inactive_category BIT, - IN a_get_all_product BIT, - IN a_ids_product VARCHAR(500), - IN a_get_inactive_product BIT, - IN a_get_first_product_only BIT, - IN a_get_all_product_permutation BIT, - IN a_ids_permutation VARCHAR(4000), - IN a_get_inactive_permutation BIT, - IN a_get_all_image BIT, - IN a_ids_image VARCHAR(4000), - IN a_get_inactive_image BIT, - IN a_get_first_image_only BIT, - IN a_get_all_delivery_region BIT, - IN a_ids_delivery_region VARCHAR(4000), - IN a_get_inactive_delivery_region BIT, - IN a_get_all_currency BIT, - IN a_ids_currency VARCHAR(4000), - IN a_get_inactive_currency BIT, - IN a_get_all_discount BIT, - IN a_ids_discount VARCHAR(4000), - IN a_get_inactive_discount BIT -) -BEGIN - -- Argument redeclaration - -- Variable declaration - DECLARE v_has_filter_category BIT; - DECLARE v_has_filter_product BIT; - DECLARE v_has_filter_permutation BIT; - DECLARE v_has_filter_image BIT; - DECLARE v_has_filter_delivery_region BIT; - DECLARE v_has_filter_currency BIT; - DECLARE v_has_filter_discount BIT; - DECLARE v_guid BINARY(36); - # DECLARE v_id_user VARCHAR(100); - DECLARE v_ids_permutation_unavailable VARCHAR(4000); - DECLARE v_id_permission_product INT; - DECLARE v_ids_product_permission VARCHAR(4000); - DECLARE v_ids_permutation_permission VARCHAR(4000); - DECLARE v_id_access_level_view INT; - DECLARE v_now DATETIME; - DECLARE v_id_minimum INT; - - SET v_guid := UUID(); - SET v_id_access_level_view := (SELECT id_access_level FROM Shop_Access_Level WHERE code = 'VIEW'); - - - -- Argument validation + default values - IF a_id_user IS NULL THEN - SET a_id_user = ''; - ELSE - SET a_id_user = TRIM(a_id_user); - END IF; - IF a_get_all_category IS NULL THEN - SET a_get_all_category = 0; - END IF; - IF a_ids_category IS NULL THEN - SET a_ids_category = ''; - ELSE - SET a_ids_category = REPLACE(TRIM(a_ids_category), '|', ','); - END IF; - IF a_get_inactive_category IS NULL THEN - SET a_get_inactive_category = 0; - END IF; - IF a_ids_product IS NULL THEN - SET a_ids_product = ''; - ELSE - SET a_ids_product = REPLACE(TRIM(a_ids_product), '|', ','); - END IF; - IF a_get_inactive_product IS NULL THEN - SET a_get_inactive_product = 0; - END IF; - IF a_get_first_product_only IS NULL THEN - SET a_get_first_product_only = 1; - END IF; - IF a_get_all_product IS NULL THEN - SET a_get_all_product = 0; - END IF; - IF a_ids_permutation IS NULL THEN - SET a_ids_permutation = ''; - ELSE - SET a_ids_permutation = REPLACE(TRIM(a_ids_permutation), '|', ','); - END IF; - IF a_get_inactive_permutation IS NULL THEN - SET a_get_inactive_permutation = 0; - END IF; - IF a_get_all_image IS NULL THEN - SET a_get_all_image = 1; - END IF; - IF a_ids_image IS NULL THEN - SET a_ids_image = ''; - ELSE - SET a_ids_image = REPLACE(TRIM(a_ids_image), '|', ','); - END IF; - IF a_get_inactive_image IS NULL THEN - SET a_get_inactive_image = 0; - END IF; - IF a_get_first_image_only IS NULL THEN - SET a_get_first_image_only = 0; - END IF; - IF a_get_inactive_image IS NULL THEN - SET a_get_inactive_image = 0; - END IF; - IF a_get_all_delivery_region IS NULL THEN - SET a_get_all_delivery_region = 1; - END IF; - IF a_ids_delivery_region IS NULL THEN - SET a_ids_delivery_region = ''; - ELSE - SET a_ids_delivery_region = REPLACE(TRIM(a_ids_delivery_region), '|', ','); - END IF; - IF a_get_inactive_delivery_region IS NULL THEN - SET a_get_inactive_delivery_region = 0; - END IF; - IF a_get_all_currency IS NULL THEN - SET a_get_all_currency = 1; - END IF; - IF a_ids_currency IS NULL THEN - SET a_ids_currency = ''; - ELSE - SET a_ids_currency = REPLACE(TRIM(a_ids_currency), '|', ','); - END IF; - IF a_get_inactive_currency IS NULL THEN - SET a_get_inactive_currency = 0; - END IF; - IF a_get_all_discount IS NULL THEN - SET a_get_all_discount = 1; - END IF; - IF a_ids_discount IS NULL THEN - SET a_ids_discount = ''; - ELSE - SET a_ids_discount = REPLACE(TRIM(a_ids_discount), '|', ','); - END IF; - IF a_get_inactive_discount IS NULL THEN - SET a_get_inactive_discount = 0; - END IF; - - /* - SELECT a_id_user, a_get_all_category, a_ids_category, a_get_inactive_category, a_get_all_product, - a_ids_product, a_get_inactive_product, a_get_first_product_only, a_get_all_product_permutation, a_ids_permutation, - a_get_inactive_permutation, a_get_all_image, a_ids_image, a_get_inactive_image, a_get_first_image_only, - a_get_all_delivery_region, a_ids_delivery_region, a_get_inactive_delivery_region, a_get_all_currency, a_ids_currency, - a_get_inactive_currency, a_get_all_discount, a_ids_discount, a_get_inactive_discount - ; - */ - - -- Temporary tables - DROP TABLE IF EXISTS tmp_Discount; - DROP TABLE IF EXISTS tmp_Currency; - DROP TABLE IF EXISTS tmp_Delivery_Region; - DROP TABLE IF EXISTS tmp_Shop_Image; - DROP TABLE IF EXISTS tmp_Shop_Variation; - DROP TABLE IF EXISTS tmp_Shop_Product; - DROP TABLE IF EXISTS tmp_Shop_Product_Category; - - CREATE TABLE tmp_Shop_Product_Category ( - id_category INT NOT NULL, - CONSTRAINT FK_tmp_Shop_Product_Category_id_category - FOREIGN KEY (id_category) - REFERENCES Shop_Product_Category(id_category), - active BIT NOT NULL, - display_order INT NOT NULL, - can_view BIT, - can_edit BIT, - can_admin BIT - ); - - CREATE TABLE tmp_Shop_Product ( - id_category INT NOT NULL, - CONSTRAINT FK_tmp_Shop_Product_id_category - FOREIGN KEY (id_category) - REFERENCES Shop_Product_Category(id_category), - id_product INT NOT NULL, - CONSTRAINT FK_tmp_Shop_Product_id_product - FOREIGN KEY (id_product) - REFERENCES Shop_Product(id_product), - -- product_has_variations BIT NOT NULL, - id_permutation INT NULL, - CONSTRAINT FK_tmp_Shop_Product_id_permutation - FOREIGN KEY (id_permutation) - REFERENCES Shop_Product_Permutation(id_permutation), - active_category BIT NOT NULL, - active_product BIT NOT NULL, - active_permutation BIT NULL, - display_order_category INT NOT NULL, - display_order_product INT NOT NULL, - display_order_permutation INT NULL, - rank_permutation INT NOT NULL, # _in_category - name VARCHAR(255) NOT NULL, - description VARCHAR(4000) NOT NULL, - /* - price_GBP_full FLOAT NOT NULL, - price_GBP_min FLOAT NOT NULL, - */ - latency_manufacture INT NOT NULL, - quantity_min FLOAT NOT NULL, - quantity_max FLOAT NOT NULL, - quantity_step FLOAT NOT NULL, - quantity_stock FLOAT NOT NULL, - is_subscription BIT NOT NULL, - id_unit_measurement_interval_recurrence INT, - CONSTRAINT FK_tmp_Shop_Product_id_unit_measurement_interval_recurrence - FOREIGN KEY (id_unit_measurement_interval_recurrence) - REFERENCES Shop_Interval_Recurrence(id_interval), - count_interval_recurrence INT, - id_stripe_product VARCHAR(100), - product_has_variations INT NOT NULL, - can_view BIT, - can_edit BIT, - can_admin BIT - ); - - /* - CREATE TEMPORARY TABLE tmp_Shop_Variation ( - id_variation INT NOT NULL, - id_product INT NOT NULL, - display_order INT NOT NULL - ); - */ - - CREATE TABLE tmp_Shop_Image ( - id_image INT NOT NULL, - CONSTRAINT FK_tmp_Shop_Image_id_image - FOREIGN KEY (id_image) - REFERENCES Shop_Image(id_image), - id_product INT NOT NULL, - CONSTRAINT FK_tmp_Shop_Image_id_product - FOREIGN KEY (id_product) - REFERENCES Shop_Product(id_product), - id_permutation INT NULL, - CONSTRAINT FK_tmp_Shop_Image_id_permutation - FOREIGN KEY (id_permutation) - REFERENCES Shop_Product_Permutation(id_permutation), - active BIT NOT NULL, - display_order INT NOT NULL, - rank_in_product_permutation INT NOT NULL - ); - - CREATE TABLE tmp_Delivery_Region ( - id_region INT NOT NULL, - CONSTRAINT FK_tmp_Delivery_Region_id_region - FOREIGN KEY (id_region) - REFERENCES Shop_Region(id_region), - active BIT NOT NULL, - display_order INT NOT NULL, - requires_delivery_option BIT NOT NULL DEFAULT 0 - ); - - CREATE TABLE tmp_Currency ( - id_currency INT NOT NULL, - CONSTRAINT FK_tmp_Shop_Currency_id_currency - FOREIGN KEY (id_currency) - REFERENCES Shop_Currency(id_currency), - active BIT NOT NULL, - display_order INT NOT NULL - ); - - CREATE TABLE tmp_Discount ( - id_discount INT NOT NULL, - CONSTRAINT FK_tmp_Discount_id_discount - FOREIGN KEY (id_discount) - REFERENCES Shop_Discount(id_discount), - active BIT NOT NULL, - display_order INT NOT NULL - ); - - CREATE TABLE IF NOT EXISTS tmp_Msg_Error ( # IF NOT EXISTS - display_order INT NOT NULL PRIMARY KEY AUTO_INCREMENT, - guid BINARY(36) NOT NULL, - # code VARCHAR(50) NOT NULL, - # CONSTRAINT chk_tmp_Msg_Error_code CHECK (code IN (SELECT code FROM Shop_Msg_Error_Type)), - id_type INT NOT NULL, - CONSTRAINT FK_tmp_Msg_Error_id_type - FOREIGN KEY (id_type) - REFERENCES Shop_Msg_Error_Type(id_type), - msg VARCHAR(4000) NOT NULL - ); - - - -- Parse filters - SET v_has_filter_category = CASE WHEN a_ids_category = '' THEN 0 ELSE 1 END; - SET v_has_filter_product = CASE WHEN a_ids_product = '' THEN 0 ELSE 1 END; - SET v_has_filter_permutation = CASE WHEN a_ids_permutation = '' THEN 0 ELSE 1 END; - SET v_has_filter_image = CASE WHEN a_ids_image = '' THEN 0 ELSE 1 END; - SET v_has_filter_delivery_region = CASE WHEN a_ids_delivery_region = '' THEN 0 ELSE 1 END; - SET v_has_filter_currency = CASE WHEN a_ids_currency = '' THEN 0 ELSE 1 END; - SET v_has_filter_discount = CASE WHEN a_ids_discount = '' THEN 0 ELSE 1 END; - - -- select v_has_filter_product, v_has_filter_permutation; - - INSERT INTO tmp_Shop_Product ( - id_category, - id_product, - id_permutation, - active_category, - active_product, - active_permutation, - display_order_category, - display_order_product, - display_order_permutation, - rank_permutation, - name, - description, - /* - price_GBP_VAT_incl, - price_GBP_VAT_excl, - price_GBP_min, - */ - latency_manufacture, - quantity_min, - quantity_max, - quantity_step, - quantity_stock, - is_subscription, - id_unit_measurement_interval_recurrence, - count_interval_recurrence, - id_stripe_product, - product_has_variations - ) - SELECT - P.id_category, - P.id_product, - -- P.has_variations AS product_has_variations, - PP.id_permutation, - C.active AS active_category, - P.active AS active_product, - PP.active AS active_permutation, - C.display_order AS display_order_category, - P.display_order AS display_order_product, - PP.display_order AS display_order_permutation, - RANK() OVER (ORDER BY C.display_order, P.display_order, PP.display_order) AS rank_permutation, #PARTITION BY P.id_category # _in_category - P.name, - PP.description, - /* - PP.price_GBP_VAT_incl, - PP.price_GBP_VAT_excl, - PP.price_GBP_min, - */ - PP.latency_manufacture, - PP.quantity_min, - PP.quantity_max, - PP.quantity_step, - PP.quantity_stock, - PP.is_subscription, - PP.id_unit_measurement_interval_recurrence, - PP.count_interval_recurrence, - PP.id_stripe_product, - P.has_variations - FROM Shop_Product P - INNER JOIN Shop_Product_Permutation PP - ON P.id_product = PP.id_product - INNER JOIN Shop_Product_Category C - ON P.id_category = C.id_category - WHERE - # permutations - ( - ( - a_get_all_product_permutation - OR v_has_filter_permutation AND FIND_IN_SET(PP.id_permutation, a_ids_permutation) > 0 - ) - AND (a_get_inactive_permutation OR PP.active) - ) - # categories - AND ( - ( - a_get_all_category - OR v_has_filter_category AND FIND_IN_SET(P.id_category, a_ids_category) > 0 - ) - AND (a_get_inactive_category OR C.active) - ) - # products - AND ( - ( - a_get_all_product - OR v_has_filter_product AND FIND_IN_SET(P.id_product, a_ids_product) > 0 - ) - AND (a_get_inactive_product OR P.active) - ) - ; - - -- select * from tmp_Shop_Product; - - IF a_get_first_product_only THEN - DELETE FROM tmp_Shop_Product t_P - WHERE t_P.rank_permutation > 1 - ; - END IF; - - INSERT INTO tmp_Shop_Product_Category ( - id_category, - active, - display_order - ) - SELECT DISTINCT C.id_category, - C.active, - C.display_order - FROM tmp_Shop_Product t_P - INNER JOIN Shop_Product_Category C - ON t_P.id_category = C.id_category - ORDER BY C.display_order - ; - - /* - INSERT INTO tmp_Shop_Variation ( - id_variation, id_product # , display_order - ) - SELECT P.id_variation, P.id_product # , P.display_order - FROM Shop_Variation V - INNER JOIN tmp_Shop_Product t_P - ON V.id_product = t_P.id_product - WHERE V.active; - */ - - # Product Images - INSERT INTO tmp_Shop_Image ( - id_product, - id_permutation, - id_image, - active, - display_order, - rank_in_product_permutation - ) - SELECT id_product, - id_permutation, - id_image, - active, - ROW_NUMBER() OVER (ORDER BY display_order_product_temp, display_order_image), - RANK() OVER (PARTITION BY id_product, id_permutation ORDER BY display_order_product_temp, display_order_image) - FROM ( - SELECT t_P.id_product, - I.id_permutation, - I.id_image, - I.active, - I.display_order AS display_order_image, - t_P.rank_permutation AS display_order_product_temp - FROM Shop_Image I - INNER JOIN tmp_Shop_Product t_P - ON I.id_product = t_P.id_product - AND NOT t_P.product_has_variations - UNION - SELECT t_P.id_product, - I.id_permutation, - I.id_image, - I.active, - I.display_order AS display_order_image, - t_P.rank_permutation AS display_order_product_temp - FROM Shop_Image I - INNER JOIN tmp_Shop_Product t_P - ON I.id_permutation = t_P.id_permutation - AND t_P.product_has_variations - ) IPP - WHERE (a_get_all_image OR a_get_first_image_only OR FIND_IN_SET(id_image, a_ids_image) > 0) - AND (a_get_inactive_image OR IPP.active) - ; - - IF a_get_first_image_only THEN - DELETE FROM tmp_Shop_Image - WHERE rank_in_product_permutation > 1 - ; - END IF; - - /* - IF v_has_filter_image THEN - DELETE FROM tmp_Shop_Product - WHERE id_product NOT IN (SELECT DISTINCT id_product FROM tmp_Shop_Image); - DELETE FROM tmp_Shop_Product_Category - WHERE id_category NOT IN (SELECT DISTINCT id_category FROM tmp_Shop_Product); - END IF; - */ - - # Delivery Regions - INSERT INTO tmp_Delivery_Region ( - id_region, - active, - display_order, - requires_delivery_option - ) - WITH RECURSIVE Recursive_CTE_Delivery_Region AS ( - SELECT - DR.id_region AS id_region_parent, - NULL AS id_region_child, - CASE WHEN FIND_IN_SET(DR.id_region, a_ids_delivery_region) > 0 THEN 1 ELSE 0 END AS requires_delivery_option - FROM Shop_Product_Currency_Region_Link PCRL - INNER JOIN Shop_Currency C ON PCRL.id_currency = C.id_currency - INNER JOIN tmp_Shop_Product t_P - ON PCRL.id_product <=> t_P.id_product - AND PCRL.id_permutation <=> t_P.id_permutation - INNER JOIN Shop_Region DR ON PCRL.id_region_purchase = DR.id_region - WHERE - ( - a_get_all_delivery_region - OR FIND_IN_SET(DR.id_region, a_ids_delivery_region) > 0 - ) - AND ( - a_get_inactive_delivery_region - OR DR.active = 1 - ) - UNION - SELECT - DRB.id_region_parent, - DRB.id_region_child, - 0 AS requires_delivery_option - FROM Shop_Region_Branch DRB - INNER JOIN Recursive_CTE_Delivery_Region r_DR - ON DRB.id_region_parent = r_DR.id_region_child - AND ( - a_get_inactive_delivery_region - OR DRB.active = 1 - ) - ) - SELECT - DR.id_region, - DR.active, - DR.display_order, - requires_delivery_option - FROM Shop_Region DR - INNER JOIN Recursive_CTE_Delivery_Region r_DR - ON DR.id_region = r_DR.id_region_parent - OR DR.id_region = r_DR.id_region_child - ; - /* - select * from tmp_delivery_region; - SELECT * - FROM tmp_Shop_Product t_P - WHERE - /*( - a_get_all_category - OR a_get_all_product - OR a_get_all_product_permutation - )* - FIND_IN_SET(t_P.id_category, a_ids_category) > 0 - OR FIND_IN_SET(t_P.id_product, a_ids_product) > 0 - OR FIND_IN_SET(t_P.id_permutation, a_ids_permutation) > 0 - ; - */ - - IF v_has_filter_delivery_region THEN - SET v_ids_permutation_unavailable = ( - SELECT GROUP_CONCAT(t_P.id_permutation SEPARATOR ', ') - FROM ( - SELECT * - FROM tmp_Shop_Product t_P - WHERE - /*( - a_get_all_category - OR a_get_all_produc - OR a_get_all_product_permutation - )*/ - FIND_IN_SET(t_P.id_category, a_ids_category) > 0 - OR FIND_IN_SET(t_P.id_product, a_ids_product) > 0 - OR FIND_IN_SET(t_P.id_permutation, a_ids_permutation) > 0 - ) t_P - LEFT JOIN ( - SELECT * - FROM Shop_Product_Currency_Region_Link PCRL - WHERE - ( - a_get_all_delivery_region - OR FIND_IN_SET(PCRL.id_region_purchase, a_ids_delivery_region) > 0 - ) - ) PCRL - ON t_P.id_product <=> PCRL.id_product - AND t_P.id_permutation <=> PCRL.id_permutation - LEFT JOIN tmp_Delivery_Region t_DR - ON PCRL.id_region_purchase = t_DR.id_region - AND t_DR.requires_delivery_option = 1 - WHERE - ISNULL(t_DR.id_region) - ); - IF NOT ISNULL(v_ids_permutation_unavailable) THEN - INSERT INTO tmp_Msg_Error ( - guid, - id_type, - msg - ) - VALUES ( - v_guid, - (SELECT id_type FROM Shop_Msg_Error_Type WHERE code = 'PRODUCT_AVAILABILITY' LIMIT 1), - CONCAT('Error: The following permutation IDs are not available in this region: ', v_ids_permutation_unavailable) - ); - END IF; - /* - DELETE FROM tmp_Shop_Product t_P - WHERE t_P.id_permutation NOT IN ( - SELECT - id_permutation - FROM Shop_Product_Currency_Region_Link PCL - INNER JOIN tmp_Delivery_Region t_DR - ON PCRL.id_region_purchase = t_DR.id_region - ); - */ - END IF; - - -- select * from tmp_Shop_Product; - - # Currencies - IF NOT EXISTS (SELECT * FROM tmp_Msg_Error WHERE guid = v_guid) THEN - INSERT INTO tmp_Currency ( - id_currency, - active, - display_order - ) - SELECT - C.id_currency, - C.active, - C.display_order - FROM Shop_Product_Currency_Region_Link PCRL - INNER JOIN Shop_Currency C ON PCRL.id_currency = C.id_currency - INNER JOIN tmp_Shop_Product t_P - ON PCRL.id_product <=> t_P.id_product - AND PCRL.id_permutation <=> t_P.id_permutation - INNER JOIN tmp_Delivery_Region t_DR ON PCRL.id_region_purchase = t_DR.id_region - WHERE - ( - a_get_all_currency - OR FIND_IN_SET(C.id_currency, a_ids_currency) > 0 - ) - AND ( - a_get_inactive_currency - OR ( - C.active - AND PCRL.active - ) - ) - ; - - -- select * from tmp_Currency; - - IF v_has_filter_currency THEN - SET v_ids_permutation_unavailable = ( - SELECT GROUP_CONCAT(t_P.id_permutation SEPARATOR ', ') - FROM ( - SELECT * - FROM tmp_Shop_Product t_P - WHERE - /*( - a_get_all_category - OR a_get_all_product - OR a_get_all_product_permutation - )*/ - FIND_IN_SET(t_P.id_category, a_ids_category) > 0 - OR FIND_IN_SET(t_P.id_product, a_ids_product) > 0 - OR FIND_IN_SET(t_P.id_permutation, a_ids_permutation) > 0 - ) t_P - INNER JOIN ( - SELECT * - FROM Shop_Product_Currency_Region_Link PCRL - WHERE - ( - a_get_all_currency - OR FIND_IN_SET(PCRL.id_currency, a_ids_currency) > 0 - ) - ) PCRL - ON t_P.id_permutation = PCRL.id_permutation - LEFT JOIN tmp_Currency t_C - ON PCRL.id_currency = t_C.id_currency - WHERE ISNULL(t_C.id_currency) - ); - IF NOT ISNULL(v_ids_permutation_unavailable) THEN - INSERT INTO tmp_Msg_Error ( - guid, - id_type, - msg - ) - VALUES ( - v_guid, - (SELECT id_type FROM Shop_Msg_Error_Type WHERE code = 'PRODUCT_AVAILABILITY' LIMIT 1), - CONCAT('Error: The following permutation IDs are not available in this currency: ', v_ids_permutation_unavailable) - ); - END IF; - /* - DELETE FROM tmp_Shop_Product t_P - WHERE t_P.id_permutation NOT IN ( - SELECT - id_permutation - FROM Shop_Product_Currency_Region_Link PCL - INNER JOIN tmp_Currency t_C - ON PCRL.id_currency = t_C.id_currency - ); - */ - END IF; - END IF; - - # Discounts - IF NOT EXISTS (SELECT * FROM tmp_Msg_Error WHERE guid = v_guid) THEN - INSERT INTO tmp_Discount ( - id_discount, - active, - display_order - ) - SELECT - D.id_discount, - D.active, - D.display_order - FROM Shop_Discount D - INNER JOIN tmp_Shop_Product t_P - ON D.id_product = t_P.id_product - AND D.id_permutation <=> t_P.id_permutation - WHERE - ( - a_get_all_discount - OR FIND_IN_SET(D.id_discount, a_ids_discount) > 0 - ) - AND ( - a_get_inactive_discount - OR D.active - ) - ; - END IF; - # select 'pre-permission results'; - # select * from tmp_Shop_Product; - - -- Permissions - IF EXISTS (SELECT * FROM tmp_Shop_Product_Category LIMIT 1) THEN - # SET v_id_user := (SELECT id_user FROM Shop_User WHERE name = CURRENT_USER()); - SET v_id_permission_product := (SELECT id_permission FROM Shop_Permission WHERE code = 'STORE_PRODUCT' LIMIT 1); - -- SET v_ids_product_permission := (SELECT GROUP_CONCAT(id_product SEPARATOR ',') FROM tmp_Shop_Product); - SET v_ids_permutation_permission := (SELECT GROUP_CONCAT(id_permutation SEPARATOR ',') FROM tmp_Shop_Product WHERE NOT ISNULL(id_permutation)); - - -- SELECT v_guid, a_id_user, false, v_id_permission_product, v_id_access_level_view, v_ids_permutation_permission; - -- select * from Shop_User_Eval_Temp; - - CALL p_shop_user_eval(v_guid, a_id_user, false, v_id_permission_product, v_id_access_level_view, v_ids_permutation_permission); - - -- select * from Shop_User_Eval_Temp; - - UPDATE tmp_Shop_Product t_P - INNER JOIN Shop_User_Eval_Temp UE_T - ON t_P.id_permutation = UE_T.id_permutation - AND UE_T.GUID = v_guid - SET t_P.can_view = UE_T.can_view, - t_P.can_edit = UE_T.can_edit, - t_P.can_admin = UE_T.can_admin; - - DELETE FROM tmp_Shop_Product t_P - WHERE - FIND_IN_SET(t_P.id_permutation, (SELECT GROUP_CONCAT(UET.id_permutation SEPARATOR ',') FROM Shop_User_Eval_Temp UET)) = 0 # id_product NOT LIKE CONCAT('%', (SELECT GROUP_CONCAT(id_product SEPARATOR '|') FROM Shop_User_Eval_Temp), '%'); - OR ( - ISNULL(t_P.can_view) - AND ( - NOT v_has_filter_category - OR FIND_IN_SET(t_P.id_category, a_ids_category) = 0 - ) - AND ( - NOT v_has_filter_product - OR FIND_IN_SET(t_P.id_product, a_ids_product) = 0 - ) - AND ( - NOT v_has_filter_permutation - OR FIND_IN_SET(t_P.id_permutation, a_ids_permutation) = 0 - ) - ) - ; - - # CALL p_shop_user_eval_clear_temp(v_guid); - # DROP TABLE IF EXISTS Shop_User_Eval_Temp; - DELETE FROM Shop_User_Eval_Temp - WHERE GUID = v_guid - ; - END IF; - - - -- select * from tmp_Shop_Product; - - -- Returns - SET v_now := NOW(); - - # Categories - SELECT - DISTINCT t_C.id_category, - C.name, - C.description, - C.display_order - FROM tmp_Shop_Product_Category t_C - INNER JOIN Shop_Product_Category C - ON t_C.id_category = C.id_category - INNER JOIN tmp_Shop_Product t_P - ON t_C.id_category = t_P.id_category - ORDER BY C.display_order - ; - - # Products - SELECT - t_P.id_product, - t_P.id_permutation, - t_P.name, - t_P.description, - P.has_variations, - P.id_category, - t_P.latency_manufacture, - t_P.quantity_min, - t_P.quantity_max, - t_P.quantity_step, - t_P.quantity_stock, - t_P.id_stripe_product, - t_P.is_subscription, - RI.name AS name_interval_recurrence, - RI.name_plural AS name_plural_interval_recurrence, - t_P.count_interval_recurrence, - t_P.display_order_category, - t_P.display_order_product, - t_P.display_order_permutation, - IFNULL(t_P.can_view, 0), - IFNULL(t_P.can_edit, 0), - IFNULL(t_P.can_admin, 0) - FROM tmp_Shop_Product t_P - INNER JOIN Shop_Product P - ON t_P.id_product = P.id_product - LEFT JOIN Shop_Interval_Recurrence RI - ON t_P.id_unit_measurement_interval_recurrence = RI.id_interval - ORDER BY t_P.rank_permutation - ; - - # Variations - SELECT - V.id_variation, - t_P.id_product, - t_P.id_permutation, - t_P.id_category, - VT.code AS code_variation_type, - VT.name AS name_variation_type, - V.code AS code_variation, - V.name AS name_variation, - RANK() OVER (ORDER BY t_P.rank_permutation, PPVL.display_order) AS display_order - FROM Shop_Variation V - INNER JOIN Shop_Variation_Type VT - ON V.id_type = VT.id_type - INNER JOIN Shop_Product_Permutation_Variation_Link PPVL ON V.id_variation = PPVL.id_variation - INNER JOIN tmp_Shop_Product t_P ON PPVL.id_permutation <=> t_P.id_permutation - WHERE V.active - AND PPVL.active - ; - - /* - # Permutation variations output - SELECT t_P.id_permutation, - t_P.id_product, - t_P.id_category, - id_variation - FROM Shop_Product_Permutation_Variation_Link PPVL - INNER JOIN tmp_Shop_Product t_P - ON t_P.id_permutation = PPVL.id_permutation - ORDER BY t_P.display_order - ; - */ - -- select * from Shop_Product_Currency_Region_Link; - -- select * from shop_currency; - /* - select * from tmp_Currency; - select * from tmp_delivery_region; - select * from tmp_shop_product; - */ - - # Product Price - SELECT - PCRL.id_link AS id_price, - t_P.id_permutation, - t_P.id_product, - t_P.id_category, - t_C.id_currency, - C.code AS code_currency, - C.name AS name_currency, - C.symbol AS symbol_currency, - t_DR.id_region, - PCRL.price_local_VAT_incl, - PCRL.price_local_VAT_excl, - ROW_NUMBER() OVER(ORDER BY t_P.rank_permutation, C.display_order) AS display_order - FROM Shop_Product_Currency_Region_Link PCRL - INNER JOIN tmp_Shop_Product t_P - ON PCRL.id_product <=> t_P.id_product - AND PCRL.id_permutation <=> t_P.id_permutation - -- INNER JOIN Shop_Product P ON PCRL.id_product = P.id_product - INNER JOIN tmp_Currency t_C ON PCRL.id_currency = t_C.id_currency - INNER JOIN Shop_Currency C ON t_C.id_currency = C.id_currency - INNER JOIN tmp_Delivery_Region t_DR ON PCRL.id_region_purchase = t_DR.id_region - WHERE ( - a_get_inactive_product - AND a_get_inactive_permutation - AND a_get_inactive_currency - AND a_get_inactive_delivery_region - OR PCRL.active - ) - ORDER BY t_P.rank_permutation - ; - - /* - # Currency - SELECT - DISTINCT C.id_currency, - C.code, - C.name, - C.factor_from_GBP, - t_C.display_order - FROM Shop_Currency C - INNER JOIN tmp_Currency t_C ON C.id_currency = t_C.id_currency - GROUP BY C.id_currency, t_C.display_order - ORDER BY t_C.display_order - ; - */ - - # Images - SELECT - t_I.id_image, - t_I.id_product, - t_I.id_permutation, - t_P.id_category, - I.url, - I.active, - I.display_order - FROM tmp_Shop_Image t_I - INNER JOIN Shop_Image I - ON t_I.id_image = I.id_image - INNER JOIN tmp_Shop_Product t_P - ON t_I.id_product = t_P.id_product - AND t_I.id_permutation <=> t_P.id_permutation - ORDER BY t_P.rank_permutation, I.display_order - ; - - # Delivery options - SELECT - _DO.id_option, - PDOL.id_product, - PDOL.id_permutation, - t_P.id_category, - _DO.code, - _DO.name, - _DO.latency_delivery_min, - _DO.latency_delivery_max, - _DO.quantity_min, - _DO.quantity_max, - GROUP_CONCAT(DR.code SEPARATOR ',') AS codes_region, - GROUP_CONCAT(DR.name SEPARATOR ',') AS names_region, - PDOL.price_local, - PDOL.display_order - FROM Shop_Delivery_Option _DO - INNER JOIN Shop_Product_Delivery_Option_Link PDOL - ON _DO.id_option = PDOL.id_delivery_option - AND ( - a_get_inactive_delivery_region - OR PDOL.active - ) - INNER JOIN tmp_Shop_Product t_P - ON PDOL.id_product = t_P.id_product - AND PDOL.id_permutation <=> t_P.id_permutation - INNER JOIN tmp_Delivery_Region t_DR ON PDOL.id_region = t_DR.id_region - INNER JOIN Shop_Region DR ON t_DR.id_region = DR.id_region - WHERE ( - a_get_inactive_delivery_region - OR _DO.active - ) - GROUP BY t_P.id_category, t_P.id_product, PDOL.id_permutation, t_P.rank_permutation, DR.id_region, _DO.id_option, PDOL.id_link - ORDER BY t_P.rank_permutation, PDOL.display_order - ; - - # Discounts - SELECT - D.id_discount, - P.id_category, - D.id_product, - D.id_permutation, - DR.id_region, - C.id_currency, - D.code AS code_discount, - D.name AS name_discount, - D.multiplier, - D.subtractor, - D.apply_multiplier_first, - D.quantity_min, - D.quantity_max, - D.date_start, - D.date_end, - GROUP_CONCAT(DR.code) AS codes_region, - GROUP_CONCAT(DR.name) AS names_region, - GROUP_CONCAT(C.code) AS codes_currency, - GROUP_CONCAT(C.name) AS names_currency, - ROW_NUMBER() OVER(ORDER BY D.display_order) AS display_order - FROM tmp_Discount t_D - INNER JOIN Shop_Discount D ON t_D.id_discount = D.id_discount - INNER JOIN Shop_Product P ON D.id_product = P.id_product - INNER JOIN tmp_Shop_Product t_P - ON D.id_product = t_P.id_product - -- AND D.id_permutation <=> t_P.id_permutation - INNER JOIN Shop_Discount_Region_Currency_Link DRCL - ON D.id_discount = DRCL.id_discount - INNER JOIN tmp_Delivery_Region t_DR ON DRCL.id_region = t_DR.id_region - INNER JOIN Shop_Region DR ON t_DR.id_region = DR.id_region - INNER JOIN tmp_Currency t_C ON DRCL.id_currency = t_C.id_currency - INNER JOIN Shop_Currency C ON t_C.id_currency = C.id_currency - GROUP BY D.id_discount, DR.id_region, C.id_currency - ORDER BY D.display_order, DR.display_order, C.display_order - ; - - /* - # Delivery Regions - SELECT - t_DR.id_region, - t_P.id_category, - t_P.id_product, - t_P.id_permutation, - DR.code, - DR.name - FROM tmp_Delivery_Region t_DR - INNER JOIN Shop_Delivery_Region DR ON t_DR.id_region = DR.id_region - INNER JOIN Shop_Product_Region_Currency_Link PDRL - ON DR.id_region = PDRL.id_region - AND ( - a_get_inactive_delivery_region - OR PDRL.active - ) - INNER JOIN tmp_Shop_Product t_P - ON PDRL.id_product = t_P.id_product - AND PDRL.id_permutation <=> t_P.id_permutation - INNER JOIN tmp_Currency t_C ON PDRL.id_currency = t_C.id_currency - ORDER BY t_DR.display_order - ; - */ - - # Errors - SELECT - t_ME.display_order, - t_ME.guid, - t_ME.id_type, - t_ME.msg, - MET.code, - MET.name, - MET.description - FROM tmp_Msg_Error t_ME - INNER JOIN Shop_Msg_Error_Type MET - ON t_ME.id_type = MET.id_type - WHERE guid = v_guid - ; - - /* - # Return arguments for test - SELECT - a_ids_category, - a_get_inactive_category, - a_ids_product, - a_get_inactive_product, - a_get_first_product_only, - a_get_all_product, - a_ids_image, - a_get_inactive_image, - a_get_first_image_only, - a_get_all_image - ; - */ - - # select 'other outputs'; - # select * from tmp_Shop_Product; - - -- Clean up - DROP TABLE IF EXISTS tmp_Discount; - DROP TABLE IF EXISTS tmp_Currency; - DROP TABLE IF EXISTS tmp_Delivery_Region; - DROP TABLE IF EXISTS tmp_Shop_Image; - DROP TABLE IF EXISTS tmp_Shop_Variation; - DROP TABLE IF EXISTS tmp_Shop_Product; - DROP TABLE IF EXISTS tmp_Shop_Product_Category; -END ;; -DELIMITER ;; -/*!50003 SET sql_mode = @saved_sql_mode */ ; -/*!50003 SET character_set_client = @saved_cs_client */ ; -/*!50003 SET character_set_results = @saved_cs_results */ ; -/*!50003 SET collation_connection = @saved_col_connection */ ; -/*!50003 DROP PROCEDURE IF EXISTS `p_shop_get_many_region` */; -/*!50003 SET @saved_cs_client = @@character_set_client */ ; -/*!50003 SET @saved_cs_results = @@character_set_results */ ; -/*!50003 SET @saved_col_connection = @@collation_connection */ ; -/*!50003 SET character_set_client = utf8mb4 */ ; -/*!50003 SET character_set_results = utf8mb4 */ ; -/*!50003 SET collation_connection = utf8mb4_0900_ai_ci */ ; -/*!50003 SET @saved_sql_mode = @@sql_mode */ ; -/*!50003 SET sql_mode = 'ONLY_FULL_GROUP_BY,STRICT_TRANS_TABLES,NO_ZERO_IN_DATE,NO_ZERO_DATE,ERROR_FOR_DIVISION_BY_ZERO,NO_ENGINE_SUBSTITUTION' */ ; -DELIMITER ;;; -CREATE DEFINER=`root`@`localhost` PROCEDURE `p_shop_get_many_region`( - IN a_get_inactive_region BIT -) -BEGIN - IF a_get_inactive_region IS NULL THEN - SET a_get_inactive_region = 0; - END IF; - - SELECT - R.id_region, - R.code, - R.name, - R.active, - R.display_order - FROM Shop_Region R - WHERE a_get_inactive_region - OR R.active - ORDER BY R.display_order - ; -END ;; -DELIMITER ;; -/*!50003 SET sql_mode = @saved_sql_mode */ ; -/*!50003 SET character_set_client = @saved_cs_client */ ; -/*!50003 SET character_set_results = @saved_cs_results */ ; -/*!50003 SET collation_connection = @saved_col_connection */ ; -/*!50003 DROP PROCEDURE IF EXISTS `p_shop_get_many_stripe_price_new` */; -/*!50003 SET @saved_cs_client = @@character_set_client */ ; -/*!50003 SET @saved_cs_results = @@character_set_results */ ; -/*!50003 SET @saved_col_connection = @@collation_connection */ ; -/*!50003 SET character_set_client = utf8mb4 */ ; -/*!50003 SET character_set_results = utf8mb4 */ ; -/*!50003 SET collation_connection = utf8mb4_0900_ai_ci */ ; -/*!50003 SET @saved_sql_mode = @@sql_mode */ ; -/*!50003 SET sql_mode = 'ONLY_FULL_GROUP_BY,STRICT_TRANS_TABLES,NO_ZERO_IN_DATE,NO_ZERO_DATE,ERROR_FOR_DIVISION_BY_ZERO,NO_ENGINE_SUBSTITUTION' */ ; -DELIMITER ;;; -CREATE DEFINER=`root`@`localhost` PROCEDURE `p_shop_get_many_stripe_price_new`( - IN a_id_user INT -) -BEGIN - DECLARE v_has_filter_user BIT; - DECLARE v_code_error_data VARCHAR(200); - DECLARE v_code_error_permission VARCHAR(200); - DECLARE v_guid BINARY(36); - - SET v_code_error_data := (SELECT code FROM Shop_Msg_Error_Type WHERE id_type = 1); - SET v_code_error_permission := (SELECT code FROM Shop_Msg_Error_Type WHERE id_type = 2); - SET v_guid = UUID(); - - - - IF a_id_user IS NULL THEN - SET a_id_user = ''; - ELSE - SET a_id_user = TRIM(a_id_user); - END IF; - - - - -- Temporary tables - DROP TABLE IF EXISTS tmp_Shop_Product_Currency_Link; - DROP TABLE IF EXISTS tmp_Shop_User; - - CREATE TABLE tmp_Shop_User( - id_user INT NOT NULL PRIMARY KEY, - CONSTRAINT FK_tmp_Shop_User_id_user - FOREIGN KEY (id_user) - REFERENCES Shop_User(id_user), - active BIT NOT NULL - ); - - CREATE TABLE tmp_Shop_Product_Currency_Link ( - id_link INT NOT NULL PRIMARY KEY, - CONSTRAINT FK_tmp_Shop_Product_Currency_Link_id_link - FOREIGN KEY (id_link) - REFERENCES Shop_Product_Currency_Link(id_link), - id_product INT NOT NULL, - CONSTRAINT FK_tmp_Shop_Product_Currency_Link_id_product - FOREIGN KEY (id_product) - REFERENCES Shop_Product(id_product), - id_permutation INT NULL, - CONSTRAINT FK_tmp_Shop_Product_Currency_Link_id_permutation - FOREIGN KEY (id_permutation) - REFERENCES Shop_Product_Permutation(id_permutation), - id_currency INT NOT NULL, - CONSTRAINT FK_tmp_Shop_Product_Currency_Link_id_currency - FOREIGN KEY (id_currency) - REFERENCES Shop_Currency(id_currency), - active BIT NOT NULL - ); - - CREATE TABLE IF NOT EXISTS tmp_Msg_Error ( # IF NOT EXISTS - display_order INT NOT NULL PRIMARY KEY AUTO_INCREMENT, - guid BINARY(36) NOT NULL, - code VARCHAR(50) NOT NULL, - # CONSTRAINT chk_tmp_Msg_Error_code CHECK (code IN (SELECT code FROM Shop_Msg_Error_Type)), - /* - id_type INT NOT NULL, - CONSTRAINT FK_tmp_Msg_Error_id_type - FOREIGN KEY (id_type) - REFERENCES Shop_Msg_Error_Type(id_type), - */ - msg VARCHAR(4000) NOT NULL - ); - - - - -- Parse filters - SET v_has_filter_user = CASE WHEN a_id_user = '' THEN 0 ELSE 1 END; - - - - -- User permissions - IF v_has_filter_user THEN - INSERT INTO tmp_Shop_User ( - id_user, - active - ) - SELECT id_user, - active - FROM Shop_User - WHERE id_user LIKE CONCAT('%', a_id_user, '%') - AND active - LIMIT 1 - ; - - SET v_has_filter_user = EXISTS (SELECT id_user FROM tmp_Shop_User LIMIT 1); - SET a_id_user := (SELECT id_user FROM tmp_Shop_User LIMIT 1); - END IF; - IF NOT v_has_filter_user THEN - INSERT INTO tmp_Msg_Error ( - guid, - code, - msg - ) - VALUES ( - v_guid, - v_code_error_data, - 'Valid user ID not provided.' - ) - ; - END IF; - - -- Get products - IF NOT EXISTS (SELECT * FROM tmp_Msg_Error WHERE guid = v_guid LIMIT 1) THEN - INSERT INTO tmp_Shop_Product_Currency_Link ( - id_link, - id_product, - id_permutation, - id_currency, - active - ) - SELECT id_link, - id_product, - id_permutation, - id_currency, - active - FROM Shop_Product_Currency_Link - WHERE ISNULL(id_stripe_price) - AND active - ; - END IF; - - -- Permissions - IF NOT EXISTS (SELECT * FROM tmp_Msg_Error WHERE guid = v_guid LIMIT 1) THEN - # SELECT * FROM tmp_Msg_Error LIMIT 1; - CALL p_shop_user_eval ( - v_guid, # a_guid - a_id_user, # a_id_user - 0, # a_get_inactive_users - CONVERT((SELECT id_permission FROM Shop_Permission WHERE 'STORE_ADMIN' = code), CHAR), # a_ids_permission - (SELECT id_access_level FROM Shop_Access_Level WHERE code = 'ADMIN' AND active), # a_ids_access_level - (SELECT GROUP_CONCAT(DISTINCT id_product SEPARATOR ',') FROM tmp_Shop_Product_Currency_Link), # (SELECT DISTINCT id_product FROM tmp_Shop_Product_Currency_Link) calc_PCL) # a_ids_product - (SELECT GROUP_CONCAT(DISTINCT id_permutation SEPARATOR ',') FROM tmp_Shop_Product_Currency_Link) # a_ids_permutation - ); - # SELECT * FROM tmp_Msg_Error LIMIT 1; - - IF EXISTS (SELECT can_admin FROM Shop_User_Eval_Temp WHERE guid = v_guid AND NOT can_admin LIMIT 1) THEN - INSERT INTO tmp_Msg_Error ( - guid, - code, - msg - ) - VALUES ( - v_guid, - v_code_error_permission, - 'User ID does not have permission to get all new stripe prices.' - ) - ; - END IF; - - DELETE FROM Shop_User_Eval_Temp - WHERE guid = v_guid - ; - END IF; - - - - -- Returns - IF EXISTS (SELECT * FROM tmp_Msg_Error WHERE guid = v_guid LIMIT 1) THEN - DELETE FROM tmp_Shop_Product_Currency_Link; - END IF; - /* - SELECT * - FROM tmp_Shop_User - ; - */ - - - SELECT t_PCL.id_product, - t_PCL.id_permutation, - P.price_GBP_full * C.factor_from_GBP AS unit_price, - C.code AS code_currency, - P.id_stripe_product, - P.is_subscription, - LOWER(RI.code) AS name_recurring_interval, - P.count_interval_recurrence - FROM tmp_Shop_Product_Currency_Link t_PCL - INNER JOIN Shop_Product P - ON t_PCL.id_product = P.id_product - AND P.active - INNER JOIN Shop_Interval_Recurrence RI - ON P.id_unit_measurement_interval_recurrence = RI.id_interval - AND RI.active - INNER JOIN Shop_Currency C - ON t_PCL.id_currency = C.id_currency - AND C.active - WHERE t_PCL.active - ; - - - # Errors - SELECT * - FROM tmp_Msg_Error - WHERE guid = v_guid - ; - - - /* - # Return arguments for test - SELECT - a_id_user - ; - */ - - -- Clean up - DROP TABLE IF EXISTS tmp_Shop_User; - DROP TABLE IF EXISTS tmp_Shop_Product_Currency_Link; -END ;; -DELIMITER ;; -/*!50003 SET sql_mode = @saved_sql_mode */ ; -/*!50003 SET character_set_client = @saved_cs_client */ ; -/*!50003 SET character_set_results = @saved_cs_results */ ; -/*!50003 SET collation_connection = @saved_col_connection */ ; -/*!50003 DROP PROCEDURE IF EXISTS `p_shop_get_many_stripe_product_new` */; -/*!50003 SET @saved_cs_client = @@character_set_client */ ; -/*!50003 SET @saved_cs_results = @@character_set_results */ ; -/*!50003 SET @saved_col_connection = @@collation_connection */ ; -/*!50003 SET character_set_client = utf8mb4 */ ; -/*!50003 SET character_set_results = utf8mb4 */ ; -/*!50003 SET collation_connection = utf8mb4_0900_ai_ci */ ; -/*!50003 SET @saved_sql_mode = @@sql_mode */ ; -/*!50003 SET sql_mode = 'ONLY_FULL_GROUP_BY,STRICT_TRANS_TABLES,NO_ZERO_IN_DATE,NO_ZERO_DATE,ERROR_FOR_DIVISION_BY_ZERO,NO_ENGINE_SUBSTITUTION' */ ; -DELIMITER ;;; -CREATE DEFINER=`root`@`localhost` PROCEDURE `p_shop_get_many_stripe_product_new`( - IN a_id_user INT -) -BEGIN - DECLARE v_has_filter_user BIT; - DECLARE v_code_error_data VARCHAR(200); - DECLARE v_code_error_permission VARCHAR(200); - DECLARE v_guid BINARY(36); - - SET v_code_error_data := (SELECT code FROM Shop_Msg_Error_Type WHERE id_type = 1); - SET v_code_error_permission := (SELECT code FROM Shop_Msg_Error_Type WHERE id_type = 2); - SET v_guid = UUID(); - - - IF a_id_user IS NULL THEN - SET a_id_user = ''; - ELSE - SET a_id_user = TRIM(a_id_user); - END IF; - - - - -- Temporary tables - DROP TABLE IF EXISTS tmp_Shop_Product; - DROP TABLE IF EXISTS tmp_Shop_User; - - CREATE TABLE tmp_Shop_User( - id_user INT NOT NULL PRIMARY KEY, - CONSTRAINT FK_tmp_Shop_User_id_user - FOREIGN KEY (id_user) - REFERENCES Shop_User(id_user), - active BIT NOT NULL - ); - - CREATE TABLE tmp_Shop_Product ( - id_product INT NOT NULL, - CONSTRAINT FK_tmp_Shop_Product_id_product - FOREIGN KEY (id_product) - REFERENCES Shop_Product(id_product), - id_permutation INT NULL, - CONSTRAINT FK_tmp_Shop_Product_id_permutation - FOREIGN KEY (id_permutation) - REFERENCES Shop_Product_Permutation(id_permutation), - active BIT NOT NULL, - display_order_product INT NOT NULL, - display_order_permutation INT NOT NULL, - name VARCHAR(200) NOT NULL, - description VARCHAR(4000) NOT NULL - ); - - CREATE TABLE IF NOT EXISTS tmp_Msg_Error ( # IF NOT EXISTS - display_order INT NOT NULL PRIMARY KEY AUTO_INCREMENT, - guid BINARY(36) NOT NULL, - code VARCHAR(50) NOT NULL, - # CONSTRAINT chk_tmp_Msg_Error_code CHECK (code IN (SELECT code FROM Shop_Msg_Error_Type)), - /* - id_type INT NOT NULL, - CONSTRAINT FK_tmp_Msg_Error_id_type - FOREIGN KEY (id_type) - REFERENCES Shop_Msg_Error_Type(id_type), - */ - msg VARCHAR(4000) NOT NULL - ); - - - - -- Parse filters - SET v_has_filter_user = CASE WHEN a_id_user = '' THEN 0 ELSE 1 END; - - - - -- User - IF v_has_filter_user THEN - INSERT INTO tmp_Shop_User ( - id_user, - active - ) - SELECT id_user, - active - FROM Shop_User - WHERE id_user LIKE CONCAT('%', a_id_user, '%') - AND active - LIMIT 1 - ; - - SET v_has_filter_user = EXISTS (SELECT id_user FROM tmp_Shop_User LIMIT 1); - SET a_id_user := (SELECT id_user FROM tmp_Shop_User LIMIT 1); - END IF; - - IF NOT v_has_filter_user THEN - INSERT INTO tmp_Msg_Error ( - guid, - code, - msg - ) - VALUES ( - v_guid, - v_code_error_data, - 'User ID not valid.' - ) - ; - END IF; - - -- Get products - IF NOT EXISTS (SELECT * FROM tmp_Msg_Error WHERE guid = v_guid LIMIT 1) THEN - INSERT INTO tmp_Shop_Product ( - id_product, - id_permutation, - active, - display_order_product, - display_order_permutation, - name, - description - ) - SELECT id_product, - id_permutation, - active, - display_order_product, - display_order_permutation, - name, - description - FROM ( - SELECT id_product, - NULL AS id_permutation, - active, - display_order AS display_order_product, - NULL AS display_order_permutation, - name, - description, - id_stripe_product - FROM Shop_Product P - UNION - SELECT t_PPPV.id_product, - id_permutation, - t_PPPV.active, - display_order_product, - display_order_permutation, - CONCAT(P.name, ': ', names_variation) AS name, - CONCAT(P.description, ' With variations: ', type_name_pairs_variation) AS description, - t_PPPV.id_stripe_product - FROM ( - SELECT P.id_product, - PP.id_permutation, - PP.active, - P.display_order AS display_order_product, - PP.display_order AS display_order_permutation, - GROUP_CONCAT(V.name SEPARATOR ' ') AS names_variation, - GROUP_CONCAT(CONCAT(VT.name, ': ', V.name) SEPARATOR ', ') AS type_name_pairs_variation, - PP.id_stripe_product - FROM Shop_Product_Permutation PP - INNER JOIN Shop_Product P - ON PP.id_product = P.id_product - AND P.active - INNER JOIN Shop_Product_Permutation_Variation_Link PPVL - ON PP.id_permutation = PPVL.id_permutation - AND PPVL.active - INNER JOIN Shop_Variation V - ON PPVL.id_variation = V.id_variation - AND V.active - INNER JOIN Shop_Variation_Type VT - ON V.id_type = VT.id_type - AND VT.active - GROUP BY id_product, id_permutation -- , VT.id_type, V.id_variation - ) t_PPPV - INNER JOIN Shop_Product P - ON t_PPPV.id_product = P.id_product - ) t_PPP - WHERE ISNULL(id_stripe_product) - AND active - ; - END IF; - - -- Permissions - IF NOT EXISTS (SELECT * FROM tmp_Msg_Error WHERE guid = v_guid LIMIT 1) THEN - CALL p_shop_user_eval ( - v_guid, # a_guid - a_id_user, # a_id_user - 0, # a_get_inactive_users - CONVERT((SELECT id_permission FROM Shop_Permission WHERE 'STORE_ADMIN' = code), CHAR), # a_ids_permission - (SELECT id_access_level FROM Shop_Access_Level WHERE code = 'ADMIN' AND active), # a_ids_access_level - (SELECT GROUP_CONCAT(id_product SEPARATOR ',') From tmp_Shop_Product), # a_ids_product - (SELECT GROUP_CONCAT(id_permutation SEPARATOR ',') From tmp_Shop_Product) # a_ids_permutation -- WHERE NOT ISNULL(id_permutation) - ); - - IF EXISTS (SELECT can_admin FROM Shop_User_Eval_Temp WHERE guid = v_guid AND NOT can_admin) THEN - INSERT INTO tmp_Msg_Error ( - guid, - code, - msg - ) - VALUES ( - v_guid, - v_code_error_permission, - 'User ID does not have permission to get all new stripe products.' - ) - ; - END IF; - - DELETE FROM Shop_User_Eval_Temp - WHERE guid = v_guid - ; - END IF; - - - - - -- Returns - /* - SELECT * - FROM tmp_Shop_User - ; - */ - - IF EXISTS (SELECT * FROM tmp_Msg_Error WHERE guid = v_guid LIMIT 1) THEN - DELETE FROM tmp_Shop_Product; - END IF; - - SELECT id_product, - id_permutation, - name, - description - FROM tmp_Shop_Product - ORDER BY display_order_product, display_order_permutation - ; - SELECT PP.id_permutation, - V.id_variation, - V.name AS name_variation, - VT.id_type AS id_type_variation, - VT.name as name_variation_type - FROM tmp_Shop_Product t_P - INNER JOIN Shop_Product_Permutation PP - ON t_P.id_permutation = PP.id_permutation - INNER JOIN Shop_Product_Permutation_Variation_Link PPVL - ON PP.id_permutation = PPVL.id_permutation - AND PPVL.active - INNER JOIN Shop_Variation V - ON PPVL.id_variation = V.id_variation - AND V.active - INNER JOIN Shop_Variation_Type VT - ON V.id_type = VT.id_type - AND VT.active - ; - - - # Errors - SELECT * - FROM tmp_Msg_Error - WHERE guid = v_guid - ; - - - /* - # Return arguments for test - SELECT - a_id_user - ; - */ - - -- Clean up - DROP TABLE IF EXISTS tmp_Shop_Product; - DROP TABLE IF EXISTS tmp_Shop_User; -END ;; -DELIMITER ;; -/*!50003 SET sql_mode = @saved_sql_mode */ ; -/*!50003 SET character_set_client = @saved_cs_client */ ; -/*!50003 SET character_set_results = @saved_cs_results */ ; -/*!50003 SET collation_connection = @saved_col_connection */ ; -/*!50003 DROP PROCEDURE IF EXISTS `p_shop_get_many_user_order` */; -/*!50003 SET @saved_cs_client = @@character_set_client */ ; -/*!50003 SET @saved_cs_results = @@character_set_results */ ; -/*!50003 SET @saved_col_connection = @@collation_connection */ ; -/*!50003 SET character_set_client = utf8mb4 */ ; -/*!50003 SET character_set_results = utf8mb4 */ ; -/*!50003 SET collation_connection = utf8mb4_0900_ai_ci */ ; -/*!50003 SET @saved_sql_mode = @@sql_mode */ ; -/*!50003 SET sql_mode = 'ONLY_FULL_GROUP_BY,STRICT_TRANS_TABLES,NO_ZERO_IN_DATE,NO_ZERO_DATE,ERROR_FOR_DIVISION_BY_ZERO,NO_ENGINE_SUBSTITUTION' */ ; -DELIMITER ;;; -CREATE DEFINER=`root`@`localhost` PROCEDURE `p_shop_get_many_user_order`( - IN a_id_user INT, - IN a_ids_order VARCHAR(4000), - IN a_n_order_max INT, - IN a_id_checkout_session VARCHAR(200) -) -BEGIN - -- Argument redeclaration - -- Variable declaration - DECLARE v_has_filter_user BIT; - DECLARE v_has_filter_order BIT; - DECLARE v_has_filter_session BIT; - DECLARE v_code_error_data VARCHAR(200); - DECLARE v_code_error_permission VARCHAR(200); - DECLARE v_guid BINARY(36); - - SET v_code_error_data := (SELECT code FROM Shop_Msg_Error_Type WHERE id_type = 1); - SET v_code_error_permission := (SELECT code FROM Shop_Msg_Error_Type WHERE id_type = 2); - SET v_guid = UUID(); - - -- Argument validation + default values - IF a_id_user IS NULL THEN - SET a_id_user = ''; - ELSE - SET a_id_user = TRIM(a_id_user); - END IF; - IF a_ids_order IS NULL THEN - SET a_ids_order = ''; - ELSE - SET a_ids_order = TRIM(a_ids_order); - END IF; - IF a_n_order_max IS NULL THEN - SET a_n_order_max = 1; - END IF; - IF a_id_checkout_session IS NULL THEN - SET a_id_checkout_session = ''; - ELSE - SET a_id_checkout_session = TRIM(a_id_checkout_session); - END IF; - - - - -- Temporary tables - DROP TABLE IF EXISTS tmp_Shop_User; - DROP TABLE IF EXISTS tmp_Shop_Order; - - CREATE TABLE tmp_Shop_User( - id_user INT NOT NULL PRIMARY KEY, - CONSTRAINT FK_tmp_Shop_User_id_user - FOREIGN KEY (id_user) - REFERENCES Shop_User(id_user), - active BIT NOT NULL - ); - - CREATE TABLE tmp_Shop_Order ( - id_order INT NOT NULL PRIMARY KEY, - CONSTRAINT FK_tmp_Shop_Order_id_order - FOREIGN KEY (id_order) - REFERENCES Shop_User_Order(id_order), - active BIT NOT NULL - ); - - CREATE TABLE IF NOT EXISTS tmp_Msg_Error ( - display_order INT NOT NULL PRIMARY KEY AUTO_INCREMENT, - guid BINARY(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), - msg VARCHAR(4000) NOT NULL - ); - - - -- Parse filters - SET v_has_filter_user = CASE WHEN a_id_user = '' THEN 0 ELSE 1 END; - SET a_ids_order = REPLACE(a_ids_order, '|', ','); - SET v_has_filter_order = CASE WHEN a_ids_order = '' THEN 0 ELSE 1 END; - SET v_has_filter_session = CASE WHEN a_id_checkout_session = '' THEN 0 ELSE 1 END; - - -- User - IF NOT EXISTS (SELECT * FROM tmp_Msg_Error LIMIT 1) THEN - IF v_has_filter_user THEN - INSERT INTO tmp_Shop_User ( - id_user, - active - ) - SELECT id_user, - active - FROM Shop_User - WHERE id_user LIKE CONCAT('%', a_id_user, '%') - AND active - LIMIT 1 - ; - - SET v_has_filter_user = EXISTS (SELECT id_user FROM tmp_Shop_User LIMIT 1); - SET a_id_user := (SELECT id_user FROM tmp_Shop_User LIMIT 1); - END IF; - END IF; - IF NOT v_has_filter_user THEN - INSERT INTO tmp_Msg_Error ( - guid, - code, - msg - ) - VALUES ( - v_guid, - v_code_error_data, - 'User ID not valid.' - ) - ; - END IF; - - -- Permissions - IF NOT EXISTS (SELECT * FROM tmp_Msg_Error WHERE guid = v_guid LIMIT 1) THEN - CALL p_shop_user_eval ( - v_guid, # a_guid - a_id_user, # a_id_user - 0, # a_get_inactive_users - CONVERT((SELECT id_permission FROM Shop_Permission WHERE 'STORE_USER' = code), CHAR), # a_ids_permission - (SELECT id_access_level FROM Shop_Access_Level WHERE code = 'VIEW' AND active), # a_ids_access_level - '', # a_ids_product - '' # a_ids_permutation - ); - - IF NOT (SELECT can_edit FROM Shop_User_Eval_Temp WHERE guid = v_guid) THEN - INSERT INTO tmp_Msg_Error ( - guid, - code, - msg - ) - VALUES ( - v_guid, - v_code_error_permission, - 'User ID does not have permission to access orders.' - ) - ; - END IF; - - DELETE FROM Shop_User_Eval_Temp - WHERE guid = v_guid - ; - END IF; - - -- Invalid Orders - IF NOT EXISTS (SELECT * FROM tmp_Msg_Error WHERE guid = v_guid LIMIT 1) THEN - # Invalid Order IDs - IF EXISTS (SELECT * FROM Shop_User_Order WHERE NOT (id_user = a_id_user) AND v_has_filter_order AND FIND_IN_SET(id_order, a_ids_order) > 0) THEN # id_order LIKE CONCAT('%', a_ids_order, '%') LIMIT 1) THEN - INSERT INTO tmp_Msg_Error ( - guid, - code, - msg - ) - VALUES ( - v_guid, - v_code_error_data, - CONCAT('You do not have access to the following order IDs: ', (SELECT GROUP_CONCAT(id_order SEPARATOR ', ') FROM Shop_User_Order WHERE NOT (id_user = a_id_user) AND FIND_IN_SET(id_order, a_ids_order) > 0)) # id_order LIKE CONCAT('%', a_ids_order, '%'))) # AND v_has_filter_order # filtered by parent condition - ) - ; - END IF; - # Invalid Checkout Session IDs - IF EXISTS (SELECT * FROM Shop_User_Order WHERE NOT (id_user = a_id_user) AND v_has_filter_session AND id_checkout_session = a_id_checkout_session) THEN - INSERT INTO tmp_Msg_Error ( - guid, - code, - msg - ) - VALUES ( - v_guid, - v_code_error_data, - CONCAT('You do not have access to the following checkout session IDs: ', (SELECT GROUP_CONCAT(id_order SEPARATOR ', ') FROM Shop_User_Order WHERE NOT (id_user = a_id_user) AND id_checkout_session = a_id_checkout_session)) # AND v_has_filter_order # filtered by parent condition - ) - ; - END IF; - END IF; - - -- Valid Orders - IF NOT EXISTS (SELECT * FROM tmp_Msg_Error WHERE guid = v_guid LIMIT 1) THEN - - INSERT INTO tmp_Shop_Order ( - id_order, - active - ) - SELECT UO.id_order, - UO.active - FROM Shop_User_Order UO - INNER JOIN tmp_Shop_User t_U - ON UO.id_user = t_U.id_user - AND t_U.active - WHERE ((NOT v_has_filter_order OR FIND_IN_SET(UO.id_order, a_ids_order) > 0) # UO.id_order LIKE CONCAT('%', a_ids_order, '%')) - OR (NOT v_has_filter_session OR UO.id_checkout_session = a_id_checkout_session)) - AND UO.active - ; - END IF; - - - - -- Returns - /* - SELECT * - FROM tmp_Shop_User - ; - */ - - SELECT t_O.id_order, - UOPL.id_product, - UOPL.id_permutation, - UOPL.quantity - FROM tmp_Shop_Order t_O - INNER JOIN Shop_User_Order UO - ON t_O.id_order = UO.id_order - INNER JOIN Shop_User_Order_Product_Link UOPL - ON UO.id_order = UOPL.id_order - WHERE t_O.active - ; - - - # Errors - SELECT * - FROM tmp_Msg_Error - WHERE guid = v_guid - ; - - - /* - # Return arguments for test - SELECT - a_id_user, - a_ids_order, - a_n_order_max, - a_id_checkout_session - ; - */ - - -- Clean up - DROP TABLE IF EXISTS tmp_Shop_User; - DROP TABLE IF EXISTS tmp_Shop_Order; -END ;; -DELIMITER ;; -/*!50003 SET sql_mode = @saved_sql_mode */ ; -/*!50003 SET character_set_client = @saved_cs_client */ ; -/*!50003 SET character_set_results = @saved_cs_results */ ; -/*!50003 SET collation_connection = @saved_col_connection */ ; -/*!50003 DROP PROCEDURE IF EXISTS `p_shop_user_eval` */; -/*!50003 SET @saved_cs_client = @@character_set_client */ ; -/*!50003 SET @saved_cs_results = @@character_set_results */ ; -/*!50003 SET @saved_col_connection = @@collation_connection */ ; -/*!50003 SET character_set_client = utf8mb4 */ ; -/*!50003 SET character_set_results = utf8mb4 */ ; -/*!50003 SET collation_connection = utf8mb4_0900_ai_ci */ ; -/*!50003 SET @saved_sql_mode = @@sql_mode */ ; -/*!50003 SET sql_mode = 'ONLY_FULL_GROUP_BY,STRICT_TRANS_TABLES,NO_ZERO_IN_DATE,NO_ZERO_DATE,ERROR_FOR_DIVISION_BY_ZERO,NO_ENGINE_SUBSTITUTION' */ ; -DELIMITER ;;; -CREATE DEFINER=`root`@`localhost` PROCEDURE `p_shop_user_eval`( - IN a_guid BINARY(36), - IN a_id_user INT, - IN a_get_inactive_users BIT, - IN a_ids_permission VARCHAR(500), - IN a_ids_access_level VARCHAR(100), - IN a_ids_permutation VARCHAR(4000) -) -BEGIN - -- Variable declaration - DECLARE v_has_filter_permission BIT; - DECLARE v_has_filter_user BIT; - DECLARE v_has_filter_access_level BIT; - DECLARE v_has_filter_permutation BIT; - DECLARE v_id_permission_product INT; - DECLARE v_id_permission INT; - -- DECLARE v_ids_product VARCHAR(500); - DECLARE v_id_access_level_view INT; - # DECLARE v_id_access_level_product_required INT; - DECLARE v_priority_access_level_view INT; - DECLARE v_priority_access_level_edit INT; - DECLARE v_priority_access_level_admin INT; - DECLARE v_id_access_level INT; - DECLARE v_priority_access_level INT; - DECLARE v_now DATETIME; - DECLARE v_ids_row_delete VARCHAR(500); - DECLARE v_code_error_data VARCHAR(200); - DECLARE v_id_error_data INT; - DECLARE v_code_error_permission VARCHAR(200); - - SET v_id_error_data = 1; - SET v_code_error_data := (SELECT code FROM Shop_Msg_Error_Type WHERE id_type = v_id_error_data); - - SET v_code_error_permission := (SELECT code FROM Shop_Msg_Error_Type WHERE id_type = 2); - - -- Clear previous proc results - # DROP TABLE IF EXISTS tmp_User_Role_Link; - # DROP TEMPORARY TABLE IF EXISTS tmp_User_Role_Link; - DROP TABLE IF EXISTS tmp_Shop_Product_p_Shop_User_Eval; - # DROP TABLE IF EXISTS Shop_User_Eval_Temp; - - - -- Parse arguments + get default values - /* - IF a_guid IS NULL THEN - SET a_guid = UUID(); - END IF; - */ - IF a_id_user IS NULL THEN - SET a_id_user = ''; - ELSE - SET a_id_user = TRIM(a_id_user); - END IF; - IF a_get_inactive_users IS NULL THEN - SET a_get_inactive_users = 0; - END IF; - /* - IF a_get_user_permissions IS NULL THEN - SET a_get_user_permissions = 0; - END IF; - */ - IF a_ids_permission IS NULL THEN - SET a_ids_permission = ''; - ELSE - SET a_ids_permission = TRIM(a_ids_permission); - END IF; - IF a_ids_access_level IS NULL THEN - SET a_ids_access_level = ''; - ELSE - SET a_ids_access_level = TRIM(a_ids_access_level); - END IF; - IF a_ids_permutation IS NULL THEN - SET a_ids_permutation = ''; - ELSE - SET a_ids_permutation = TRIM(a_ids_permutation); - END IF; - - -- Permanent Table - CREATE TABLE IF NOT EXISTS Shop_User_Eval_Temp ( - id_row INT PRIMARY KEY AUTO_INCREMENT NOT NULL, - guid BINARY(36) NOT NULL, - id_user INT, - id_permission_required INT NOT NULL, - CONSTRAINT FK_Shop_User_Eval_Temp_id_permission_required - FOREIGN KEY (id_permission_required) - REFERENCES Shop_Permission (id_permission), - /* - id_access_level_required INT NOT NULL, - CONSTRAINT FK_Shop_User_Eval_Temp_id_access_level_required - FOREIGN KEY (id_access_level_required) - REFERENCES Shop_Access_Level (id_access_level), - */ - priority_access_level_required INT NOT NULL, - /* - CONSTRAINT FK_Shop_User_Eval_Temp_priority_access_level_required - FOREIGN KEY (priority_access_level_required) - REFERENCES Shop_Access_Level (priority), - */ - id_product INT NULL, - CONSTRAINT FK_Shop_User_Eval_Temp_id_product - FOREIGN KEY (id_product) - REFERENCES partsltd_prod.Shop_Product (id_product), - id_permutation INT NULL, - CONSTRAINT FK_Shop_User_Eval_Temp_id_permutation - FOREIGN KEY (id_permutation) - REFERENCES partsltd_prod.Shop_Product_Permutation (id_permutation), - is_super_user BIT NULL, - priority_access_level_user INT NULL, - /* - CONSTRAINT FK_Shop_User_Eval_Temp_priority_access_level_minimum - FOREIGN KEY (priority_access_level_minimum) - REFERENCES Shop_Access_Level (priority) - */ - can_view BIT, - can_edit BIT, - can_admin BIT -- DEFAULT 0 - ); - - CREATE TABLE IF NOT EXISTS tmp_Shop_Product_p_Shop_User_Eval ( - id_row INT PRIMARY KEY AUTO_INCREMENT NOT NULL, - id_product INT NOT NULL, - CONSTRAINT FK_tmp_Shop_Product_p_Shop_User_Eval_id_product FOREIGN KEY (id_product) - REFERENCES partsltd_prod.Shop_Product (id_product), - id_permutation INT NOT NULL, - CONSTRAINT FK_tmp_Shop_Product_p_Shop_User_Eval_id_permutation FOREIGN KEY (id_permutation) - REFERENCES partsltd_prod.Shop_Product_Permutation (id_permutation), - id_access_level_required INT NOT NULL, - CONSTRAINT FK_tmp_Shop_Product_p_Shop_User_Eval_id_access_level_required FOREIGN KEY (id_access_level_required) - REFERENCES Shop_Access_Level (id_access_level), - guid BINARY(36) NOT NULL, - rank_permutation INT NOT NULL - ); - - CREATE TABLE IF NOT EXISTS tmp_Msg_Error ( - display_order INT NOT NULL PRIMARY KEY AUTO_INCREMENT, - guid BINARY(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), - msg VARCHAR(4000) NOT NULL - ); - - # select * from Shop_Msg_Error_Type; - - -- Parse filters - IF a_guid IS NULL OR EXISTS (SELECT * FROM Shop_User_Eval_Temp WHERE a_guid = guid) THEN - INSERT INTO tmp_Msg_Error ( - guid, - code, - msg - ) - VALUES ( - a_guid, - v_code_error_data, - 'Invalid guid argument.' - ) - ; - END IF; - SET v_has_filter_user = CASE WHEN a_id_user = '' THEN 0 ELSE 1 END; - SET a_ids_permission = REPLACE(a_ids_permission, '|', ','); - SET v_has_filter_permission = CASE WHEN a_ids_permission = '' THEN 0 ELSE 1 END; - SET a_ids_access_level = REPLACE(a_ids_access_level, '|', ','); - SET v_has_filter_access_level = CASE WHEN a_ids_access_level = '' THEN 0 ELSE 1 END; - SET a_ids_permutation = REPLACE(a_ids_permutation, '|', ','); - SET v_has_filter_permutation = CASE WHEN a_ids_permutation = '' THEN 0 ELSE 1 END; - SET v_id_access_level_view = (SELECT id_access_level FROM Shop_Access_Level WHERE code = 'VIEW' LIMIT 1); - SET v_priority_access_level_view = (SELECT priority FROM Shop_Access_Level WHERE id_access_level = v_id_access_level_view); - SET v_priority_access_level_edit = (SELECT priority FROM Shop_Access_Level WHERE code = 'EDIT' LIMIT 1); - SET v_priority_access_level_admin = (SELECT priority FROM Shop_Access_Level WHERE code = 'ADMIN' LIMIT 1); - - /* - select v_priority_access_level_view, - v_priority_access_level_edit, - v_priority_access_level_admin - ; - */ - - IF NOT EXISTS (SELECT * FROM tmp_Msg_Error WHERE GUID = a_guid) THEN - IF v_has_filter_access_level THEN - CALL p_split(a_ids_access_level, ','); - SET v_id_access_level := ( - SELECT AL.id_access_level - FROM Split_Temp ST - INNER JOIN Shop_Access_Level AL - ON CONVERT(ST.substring, DECIMAL(10,0)) = AL.id_access_level - AND AL.active - ORDER BY AL.priority ASC - LIMIT 1 - ); - DROP TABLE Split_Temp; - IF 0 = v_id_access_level OR v_id_access_level <=> NULL THEN - # SET v_has_filter_access_level = 0; - INSERT INTO tmp_Msg_Error ( - guid, - code, - msg - ) - VALUES ( - a_guid, - v_code_error_data, - 'Access level ID not found.' - ) - ; - END IF; - /* - END IF; - IF NOT v_has_filter_access_level THEN - */ - ELSE - SET v_id_access_level = v_id_access_level_view; - END IF; - END IF; - IF NOT EXISTS (SELECT * FROM tmp_Msg_Error WHERE GUID = a_guid) THEN - IF v_has_filter_permutation THEN - INSERT INTO tmp_Shop_Product_p_Shop_User_Eval ( - id_product, - id_permutation, - id_access_level_required, - guid, - rank_permutation - ) - SELECT - PP.id_product, - PP.id_permutation, - PP.id_access_level_required, - a_guid, - RANK() OVER (ORDER BY PP.id_product, PP.id_permutation, AL.priority) AS rank_permutation - FROM Shop_Product_Permutation PP - INNER JOIN Shop_Access_Level AL - ON PP.id_access_level_required = AL.id_access_level - AND AL.active - WHERE FIND_IN_SET(PP.id_permutation, a_ids_permutation) > 0 - # AND P.active # not worried as we want users to be able to see their order history - ; - /* - DELETE FROM tmp_Shop_Product_p_Shop_User_Eval - WHERE rank_permutation > 1 - ; - */ - SET v_has_filter_permutation = EXISTS (SELECT * FROM tmp_Shop_Product_p_Shop_User_Eval WHERE a_guid = guid); - END IF; - - IF v_has_filter_permission THEN - # Invalid permission IDs - IF EXISTS (SELECT id_permission FROM Shop_Permission WHERE FIND_IN_SET(id_permission, a_ids_permission) > 0 AND NOT active) THEN - INSERT INTO tmp_Msg_Error ( - guid, - code, - msg - ) - VALUES ( - a_guid, - v_code_error_data, - CONCAT('The following permissions are no longer active: ', (SELECT GROUP_CONCAT(name SEPARATOR ', ') FROM Shop_Permission WHERE FIND_IN_SET(id_permission, a_ids_permission) > 0 AND NOT active)) - ) - ; - END IF; - END IF; - END IF; - - IF NOT EXISTS (SELECT * FROM tmp_Msg_Error WHERE GUID = a_guid) THEN - IF v_has_filter_user THEN - SET a_id_user := (SELECT id_user FROM Shop_User WHERE id_user LIKE a_id_user AND active); - SET v_has_filter_user = NOT (a_id_user <=> NULL); - IF NOT v_has_filter_user THEN - INSERT INTO tmp_Msg_Error ( - guid, - code, - msg - ) - VALUES ( - a_guid, - v_code_error_data, - 'User ID not found.' - ) - ; - END IF; - END IF; - END IF; - - -- Get users - IF NOT EXISTS (SELECT * FROM tmp_Msg_Error WHERE GUID = a_guid) THEN - INSERT INTO Shop_User_Eval_Temp ( - guid, - id_user, - id_permission_required, - priority_access_level_required - /* - priority_access_level_user, - is_super_user, - can_view, - can_edit, - can_admin - */ - ) - SELECT a_guid, - a_id_user, - P.id_permission, - AL.priority - FROM partsltd_prod.Shop_Permission P - INNER JOIN Shop_Access_Level AL - ON P.id_access_level_required = AL.id_access_level - AND AL.active - WHERE FIND_IN_SET(P.id_permission, a_ids_permission) > 0 - ; - - IF v_has_filter_permutation THEN - SET v_ids_row_delete := (SELECT GROUP_CONCAT(id_row SEPARATOR ',') FROM Shop_User_Eval_Temp WHERE a_guid = guid); - - INSERT INTO Shop_User_Eval_Temp ( - guid, - id_user, - id_permission_required, - id_product, - id_permutation, - priority_access_level_required - ) - SELECT UE_T.guid, - UE_T.id_user, - UE_T.id_permission_required, - t_P.id_product, - t_P.id_permutation, - CASE WHEN UE_T.priority_access_level_required < AL.priority THEN UE_T.priority_access_level_required ELSE AL.priority END -- UE_T.priority_access_level_required - FROM tmp_Shop_Product_p_Shop_User_Eval t_P - INNER JOIN Shop_Access_Level AL - ON t_P.id_access_leveL_required = AL.id_access_level - AND AL.active - CROSS JOIN Shop_User_Eval_Temp UE_T - ON a_id_user = UE_T.id_user - WHERE a_guid = t_P.guid - ; - - DELETE FROM Shop_User_Eval_Temp - WHERE FIND_IN_SET(id_row, v_ids_row_delete) > 0 - ; - END IF; - - /* - INSERT INTO Shop_User_Eval_Temp ( - guid, - id_user, - id_permission_required, - # id_access_level_required, - priority_access_level_required, - priority_access_level_user, - is_super_user - /* - can_view, - can_edit, - can_admin - * - ) - SELECT a_guid, - U.id_user, - P.id_permission, - AL.priority, - /* - v_id_permission, - v_id_access_level, - * - MIN(AL.priority), - U.is_super_user - /* - CASE WHEN U.is_super_user THEN 1 ELSE CASE WHEN priority_access_level_minimum <= v_priority_access_level_view THEN 1 ELSE 0 END END, - CASE WHEN U.is_super_user THEN 1 ELSE CASE WHEN priority_access_level_minimum <= v_priority_access_level_edit THEN 1 ELSE 0 END END, - CASE WHEN U.is_super_user THEN 1 ELSE CASE WHEN priority_access_level_minimum <= v_priority_access_level_admin THEN 1 ELSE 0 END END - * - FROM partsltd_prod.Shop_User U - INNER JOIN Shop_User_Role_Link URL - ON U.id_user = URL.id_user - AND URL.active - INNER JOIN Shop_Role_Permission_Link RPL - ON URL.id_role = RPL.id_role - AND RPL.active - INNER JOIN Shop_Permission P - ON RPL.id_permission = P.id_permission - AND P.active - INNER JOIN Shop_Access_Level AL - ON RPL.id_access_level = AL.id_access_level - AND AL.active - WHERE U.id_user = a_id_user - AND (a_get_inactive_users OR U.active) - AND FIND_IN_SET(P.id_permission, a_ids_permission) > 0 - # AND v_id_permission = P.id_permission - # AND v_id_access_level = AL.id_access_leveld - GROUP BY U.id_user, P.id_permission # , is_super_user - ; - */ - - IF v_has_filter_user THEN - UPDATE Shop_User_Eval_Temp UE_T - INNER JOIN Shop_User U - ON UE_T.id_user = U.id_user - AND U.active - INNER JOIN Shop_User_Role_Link URL - ON U.id_user = URL.id_user - AND URL.active - INNER JOIN Shop_Role_Permission_Link RPL - ON URL.id_role = RPL.id_role - AND RPL.active - INNER JOIN Shop_Access_Level AL - ON RPL.id_access_level = AL.id_access_level - AND AL.active - SET UE_T.priority_access_level_user = AL.priority, - UE_T.is_super_user = U.is_super_user, - UE_T.can_view = CASE WHEN U.is_super_user THEN 1 ELSE CASE WHEN ISNULL(AL.priority) THEN 1 ELSE CASE WHEN AL.priority <= v_priority_access_level_view AND AL.priority <= UE_T.priority_access_level_required THEN 1 ELSE 0 END END END, - UE_T.can_edit = CASE WHEN U.is_super_user THEN 1 ELSE CASE WHEN NOT ISNULL(AL.priority) AND AL.priority <= v_priority_access_level_edit AND AL.priority <= UE_T.priority_access_level_required THEN 1 ELSE 0 END END, - UE_T.can_admin = CASE WHEN U.is_super_user THEN 1 ELSE CASE WHEN NOT ISNULL(AL.priority) AND AL.priority <= v_priority_access_level_admin AND AL.priority <= UE_T.priority_access_level_required THEN 1 ELSE 0 END END - WHERE UE_T.guid = a_guid - AND UE_T.id_user = a_id_user - AND RPL.id_permission = UE_T.id_permission_required - # GROUP BY UE_T.id_user - ; - ELSE - UPDATE Shop_User_Eval_Temp UE_T - SET UE_T.priority_access_level_user = v_priority_access_level_view, - UE_T.is_super_user = 0, - UE_T.can_view = (v_priority_access_level_view <= UE_T.priority_access_level_required), - UE_T.can_edit = 0, - UE_T.can_admin = 0 - WHERE UE_T.guid = a_guid - AND UE_T.id_user = a_id_user - # GROUP BY UE_T.id_user - ; - END IF; - END IF; - - -- Clean up - DROP TABLE IF EXISTS tmp_Shop_Product_p_Shop_User_Eval; - # DROP TEMPORARY TABLE IF EXISTS tmp_User_Role_Link; - # DROP TABLE IF EXISTS tmp_Msg_Error; -END ;; -DELIMITER ;; -/*!50003 SET sql_mode = @saved_sql_mode */ ; -/*!50003 SET character_set_client = @saved_cs_client */ ; -/*!50003 SET character_set_results = @saved_cs_results */ ; -/*!50003 SET collation_connection = @saved_col_connection */ ; -/*!40103 SET TIME_ZONE=@OLD_TIME_ZONE */; - -/*!40101 SET SQL_MODE=@OLD_SQL_MODE */; -/*!40014 SET FOREIGN_KEY_CHECKS=@OLD_FOREIGN_KEY_CHECKS */; -/*!40014 SET UNIQUE_CHECKS=@OLD_UNIQUE_CHECKS */; -/*!40101 SET CHARACTER_SET_CLIENT=@OLD_CHARACTER_SET_CLIENT */; -/*!40101 SET CHARACTER_SET_RESULTS=@OLD_CHARACTER_SET_RESULTS */; -/*!40101 SET COLLATION_CONNECTION=@OLD_COLLATION_CONNECTION */; -/*!40111 SET SQL_NOTES=@OLD_SQL_NOTES */; - --- Dump completed on 2024-04-28 19:04:05 diff --git a/static/MySQL/deprecated/dump2.sql b/static/MySQL/deprecated/dump2.sql deleted file mode 100644 index 06ae32be..00000000 --- a/static/MySQL/deprecated/dump2.sql +++ /dev/null @@ -1,8235 +0,0 @@ -CREATE DATABASE IF NOT EXISTS `partsltd_prod` /*!40100 DEFAULT CHARACTER SET utf8mb4 COLLATE utf8mb4_general_ci */ /*!80016 DEFAULT ENCRYPTION='N' */; -USE `partsltd_prod`; --- MySQL dump 10.13 Distrib 8.0.36, for Win64 (x86_64) --- --- Host: localhost Database: partsltd_prod --- ------------------------------------------------------ --- Server version 8.0.35 - -/*!40101 SET @OLD_CHARACTER_SET_CLIENT=@@CHARACTER_SET_CLIENT */; -/*!40101 SET @OLD_CHARACTER_SET_RESULTS=@@CHARACTER_SET_RESULTS */; -/*!40101 SET @OLD_COLLATION_CONNECTION=@@COLLATION_CONNECTION */; -/*!50503 SET NAMES utf8 */; -/*!40103 SET @OLD_TIME_ZONE=@@TIME_ZONE */; -/*!40103 SET TIME_ZONE='+00:00' */; -/*!40014 SET @OLD_UNIQUE_CHECKS=@@UNIQUE_CHECKS, UNIQUE_CHECKS=0 */; -/*!40014 SET @OLD_FOREIGN_KEY_CHECKS=@@FOREIGN_KEY_CHECKS, FOREIGN_KEY_CHECKS=0 */; -/*!40101 SET @OLD_SQL_MODE=@@SQL_MODE, SQL_MODE='NO_AUTO_VALUE_ON_ZERO' */; -/*!40111 SET @OLD_SQL_NOTES=@@SQL_NOTES, SQL_NOTES=0 */; - --- --- Table structure for table `file_type` --- - -DROP TABLE IF EXISTS `file_type`; -/*!40101 SET @saved_cs_client = @@character_set_client */; -/*!50503 SET character_set_client = utf8mb4 */; -CREATE TABLE `file_type` ( - `id_type` int NOT NULL AUTO_INCREMENT, - `code` varchar(50) DEFAULT NULL, - `name` varchar(100) DEFAULT NULL, - `extension` varchar(50) DEFAULT NULL, - `created_on` datetime DEFAULT NULL, - `created_by` varchar(100) DEFAULT NULL, - `updated_last_on` datetime DEFAULT NULL, - `updated_last_by` varchar(100) DEFAULT NULL, - PRIMARY KEY (`id_type`) -) ENGINE=InnoDB AUTO_INCREMENT=5 DEFAULT CHARSET=utf8mb4 COLLATE=utf8mb4_general_ci; -/*!40101 SET character_set_client = @saved_cs_client */; - --- --- Dumping data for table `file_type` --- - -LOCK TABLES `file_type` WRITE; -/*!40000 ALTER TABLE `file_type` DISABLE KEYS */; -INSERT INTO `file_type` VALUES (1,'JPEG','Joint Photographic Export Group','jpg','2024-04-28 19:03:07','root@localhost',NULL,NULL),(2,'PNG','Portable Network Graphic','png','2024-04-28 19:03:07','root@localhost',NULL,NULL),(3,'GIF','GIF','gif','2024-04-28 19:03:07','root@localhost',NULL,NULL),(4,'MPEG-4','Multimedia Photographic Export Group 4','mp4','2024-04-28 19:03:07','root@localhost',NULL,NULL); -/*!40000 ALTER TABLE `file_type` ENABLE KEYS */; -UNLOCK TABLES; -/*!50003 SET @saved_cs_client = @@character_set_client */ ; -/*!50003 SET @saved_cs_results = @@character_set_results */ ; -/*!50003 SET @saved_col_connection = @@collation_connection */ ; -/*!50003 SET character_set_client = utf8mb4 */ ; -/*!50003 SET character_set_results = utf8mb4 */ ; -/*!50003 SET collation_connection = utf8mb4_general_ci */ ; -/*!50003 SET @saved_sql_mode = @@sql_mode */ ; -/*!50003 SET sql_mode = 'ONLY_FULL_GROUP_BY,STRICT_TRANS_TABLES,NO_ZERO_IN_DATE,NO_ZERO_DATE,ERROR_FOR_DIVISION_BY_ZERO,NO_ENGINE_SUBSTITUTION' */ ; -DELIMITER ;;; -/*!50003 CREATE*/ /*!50017 DEFINER=`root`@`localhost`*/ /*!50003 TRIGGER `before_insert_File_Type` BEFORE INSERT ON `file_type` FOR EACH ROW BEGIN - SET NEW.created_on := IFNULL(NEW.created_on, NOW()); - SET NEW.created_by := IFNULL(NEW.created_by, IFNULL((SELECT id_user FROM Shop_User WHERE firstname = CURRENT_USER()), -1)); -END */;; -DELIMITER ;; -/*!50003 SET sql_mode = @saved_sql_mode */ ; -/*!50003 SET character_set_client = @saved_cs_client */ ; -/*!50003 SET character_set_results = @saved_cs_results */ ; -/*!50003 SET collation_connection = @saved_col_connection */ ; -/*!50003 SET @saved_cs_client = @@character_set_client */ ; -/*!50003 SET @saved_cs_results = @@character_set_results */ ; -/*!50003 SET @saved_col_connection = @@collation_connection */ ; -/*!50003 SET character_set_client = utf8mb4 */ ; -/*!50003 SET character_set_results = utf8mb4 */ ; -/*!50003 SET collation_connection = utf8mb4_general_ci */ ; -/*!50003 SET @saved_sql_mode = @@sql_mode */ ; -/*!50003 SET sql_mode = 'ONLY_FULL_GROUP_BY,STRICT_TRANS_TABLES,NO_ZERO_IN_DATE,NO_ZERO_DATE,ERROR_FOR_DIVISION_BY_ZERO,NO_ENGINE_SUBSTITUTION' */ ; -DELIMITER ;;; -/*!50003 CREATE*/ /*!50017 DEFINER=`root`@`localhost`*/ /*!50003 TRIGGER `before_update_File_Type` BEFORE UPDATE ON `file_type` FOR EACH ROW BEGIN - INSERT INTO File_Type_Audit ( - id_type, - name_field, - value_prev, - value_new - ) - # Changed code - SELECT NEW.id_type, 'code', OLD.code, NEW.code - WHERE NOT OLD.code <=> NEW.code - UNION - # Changed name - SELECT NEW.id_type, 'name', OLD.name, NEW.name - WHERE NOT OLD.name <=> NEW.name - UNION - # Changed extension - SELECT NEW.id_type, 'extension', CONVERT(OLD.extension, CHAR), CONVERT(NEW.extension, CHAR) - WHERE NOT OLD.extension <=> NEW.extension - ; -END */;; -DELIMITER ;; -/*!50003 SET sql_mode = @saved_sql_mode */ ; -/*!50003 SET character_set_client = @saved_cs_client */ ; -/*!50003 SET character_set_results = @saved_cs_results */ ; -/*!50003 SET collation_connection = @saved_col_connection */ ; - --- --- Table structure for table `file_type_audit` --- - -DROP TABLE IF EXISTS `file_type_audit`; -/*!40101 SET @saved_cs_client = @@character_set_client */; -/*!50503 SET character_set_client = utf8mb4 */; -CREATE TABLE `file_type_audit` ( - `id_audit` int NOT NULL AUTO_INCREMENT, - `id_type` int NOT NULL, - `name_field` varchar(50) DEFAULT NULL, - `value_prev` varchar(500) DEFAULT NULL, - `value_new` varchar(500) DEFAULT NULL, - `created_on` datetime DEFAULT NULL, - `created_by` varchar(100) DEFAULT NULL, - `updated_last_on` datetime DEFAULT NULL, - `updated_last_by` varchar(100) DEFAULT NULL, - PRIMARY KEY (`id_audit`), - KEY `FK_File_Type_Audit_id_type` (`id_type`), - CONSTRAINT `FK_File_Type_Audit_id_type` FOREIGN KEY (`id_type`) REFERENCES `file_type` (`id_type`) ON UPDATE RESTRICT -) ENGINE=InnoDB DEFAULT CHARSET=utf8mb4 COLLATE=utf8mb4_general_ci; -/*!40101 SET character_set_client = @saved_cs_client */; - --- --- Dumping data for table `file_type_audit` --- - -LOCK TABLES `file_type_audit` WRITE; -/*!40000 ALTER TABLE `file_type_audit` DISABLE KEYS */; -/*!40000 ALTER TABLE `file_type_audit` ENABLE KEYS */; -UNLOCK TABLES; -/*!50003 SET @saved_cs_client = @@character_set_client */ ; -/*!50003 SET @saved_cs_results = @@character_set_results */ ; -/*!50003 SET @saved_col_connection = @@collation_connection */ ; -/*!50003 SET character_set_client = utf8mb4 */ ; -/*!50003 SET character_set_results = utf8mb4 */ ; -/*!50003 SET collation_connection = utf8mb4_general_ci */ ; -/*!50003 SET @saved_sql_mode = @@sql_mode */ ; -/*!50003 SET sql_mode = 'ONLY_FULL_GROUP_BY,STRICT_TRANS_TABLES,NO_ZERO_IN_DATE,NO_ZERO_DATE,ERROR_FOR_DIVISION_BY_ZERO,NO_ENGINE_SUBSTITUTION' */ ; -DELIMITER ;;; -/*!50003 CREATE*/ /*!50017 DEFINER=`root`@`localhost`*/ /*!50003 TRIGGER `before_insert_File_Type_Audit` BEFORE INSERT ON `file_type_audit` FOR EACH ROW BEGIN - SET NEW.created_on := IFNULL(NEW.created_on, NOW()); - SET NEW.created_by := IFNULL(NEW.created_by, IFNULL((SELECT id_user FROM Shop_User WHERE firstname = CURRENT_USER()), -1)); -END */;; -DELIMITER ;; -/*!50003 SET sql_mode = @saved_sql_mode */ ; -/*!50003 SET character_set_client = @saved_cs_client */ ; -/*!50003 SET character_set_results = @saved_cs_results */ ; -/*!50003 SET collation_connection = @saved_col_connection */ ; -/*!50003 SET @saved_cs_client = @@character_set_client */ ; -/*!50003 SET @saved_cs_results = @@character_set_results */ ; -/*!50003 SET @saved_col_connection = @@collation_connection */ ; -/*!50003 SET character_set_client = utf8mb4 */ ; -/*!50003 SET character_set_results = utf8mb4 */ ; -/*!50003 SET collation_connection = utf8mb4_general_ci */ ; -/*!50003 SET @saved_sql_mode = @@sql_mode */ ; -/*!50003 SET sql_mode = 'ONLY_FULL_GROUP_BY,STRICT_TRANS_TABLES,NO_ZERO_IN_DATE,NO_ZERO_DATE,ERROR_FOR_DIVISION_BY_ZERO,NO_ENGINE_SUBSTITUTION' */ ; -DELIMITER ;;; -/*!50003 CREATE*/ /*!50017 DEFINER=`root`@`localhost`*/ /*!50003 TRIGGER `before_update_File_Type_Audit` BEFORE UPDATE ON `file_type_audit` FOR EACH ROW BEGIN - SET NEW.updated_last_on = NOW(); - SET NEW.updated_last_by = CURRENT_USER(); -END */;; -DELIMITER ;; -/*!50003 SET sql_mode = @saved_sql_mode */ ; -/*!50003 SET character_set_client = @saved_cs_client */ ; -/*!50003 SET character_set_results = @saved_cs_results */ ; -/*!50003 SET collation_connection = @saved_col_connection */ ; - --- --- Table structure for table `shop_access_level` --- - -DROP TABLE IF EXISTS `shop_access_level`; -/*!40101 SET @saved_cs_client = @@character_set_client */; -/*!50503 SET character_set_client = utf8mb4 */; -CREATE TABLE `shop_access_level` ( - `id_access_level` int NOT NULL AUTO_INCREMENT, - `code` varchar(50) DEFAULT NULL, - `name` varchar(255) DEFAULT NULL, - `priority` int NOT NULL, - `active` bit(1) NOT NULL DEFAULT b'1', - `display_order` int NOT NULL, - `created_on` datetime DEFAULT NULL, - `created_by` varchar(100) DEFAULT NULL, - `id_change_set` int DEFAULT NULL, - PRIMARY KEY (`id_access_level`), - KEY `FK_Shop_Access_Level_id_change_set` (`id_change_set`), - CONSTRAINT `FK_Shop_Access_Level_id_change_set` FOREIGN KEY (`id_change_set`) REFERENCES `shop_user_change_set` (`id_change_set`) -) ENGINE=InnoDB AUTO_INCREMENT=4 DEFAULT CHARSET=utf8mb4 COLLATE=utf8mb4_general_ci; -/*!40101 SET character_set_client = @saved_cs_client */; - --- --- Dumping data for table `shop_access_level` --- - -LOCK TABLES `shop_access_level` WRITE; -/*!40000 ALTER TABLE `shop_access_level` DISABLE KEYS */; -INSERT INTO `shop_access_level` VALUES (1,'VIEW','View',3,_binary '',1,'2024-04-28 19:03:07','root@localhost',NULL),(2,'EDIT','Edit',2,_binary '',2,'2024-04-28 19:03:07','root@localhost',NULL),(3,'ADMIN','Admin',1,_binary '',3,'2024-04-28 19:03:07','root@localhost',NULL); -/*!40000 ALTER TABLE `shop_access_level` ENABLE KEYS */; -UNLOCK TABLES; -/*!50003 SET @saved_cs_client = @@character_set_client */ ; -/*!50003 SET @saved_cs_results = @@character_set_results */ ; -/*!50003 SET @saved_col_connection = @@collation_connection */ ; -/*!50003 SET character_set_client = utf8mb4 */ ; -/*!50003 SET character_set_results = utf8mb4 */ ; -/*!50003 SET collation_connection = utf8mb4_general_ci */ ; -/*!50003 SET @saved_sql_mode = @@sql_mode */ ; -/*!50003 SET sql_mode = 'ONLY_FULL_GROUP_BY,STRICT_TRANS_TABLES,NO_ZERO_IN_DATE,NO_ZERO_DATE,ERROR_FOR_DIVISION_BY_ZERO,NO_ENGINE_SUBSTITUTION' */ ; -DELIMITER ;;; -/*!50003 CREATE*/ /*!50017 DEFINER=`root`@`localhost`*/ /*!50003 TRIGGER `before_insert_Shop_Access_Level` BEFORE INSERT ON `shop_access_level` FOR EACH ROW BEGIN - IF NEW.created_on <=> NULL THEN - SET NEW.created_on := IFNULL(NEW.created_on, NOW()); - END IF; - IF NEW.created_by <=> NULL THEN - SET NEW.created_by := IFNULL(NEW.created_by, IFNULL((SELECT id_user FROM Shop_User WHERE firstname = CURRENT_USER()), -1)); - END IF; -END */;; -DELIMITER ;; -/*!50003 SET sql_mode = @saved_sql_mode */ ; -/*!50003 SET character_set_client = @saved_cs_client */ ; -/*!50003 SET character_set_results = @saved_cs_results */ ; -/*!50003 SET collation_connection = @saved_col_connection */ ; -/*!50003 SET @saved_cs_client = @@character_set_client */ ; -/*!50003 SET @saved_cs_results = @@character_set_results */ ; -/*!50003 SET @saved_col_connection = @@collation_connection */ ; -/*!50003 SET character_set_client = utf8mb4 */ ; -/*!50003 SET character_set_results = utf8mb4 */ ; -/*!50003 SET collation_connection = utf8mb4_general_ci */ ; -/*!50003 SET @saved_sql_mode = @@sql_mode */ ; -/*!50003 SET sql_mode = 'ONLY_FULL_GROUP_BY,STRICT_TRANS_TABLES,NO_ZERO_IN_DATE,NO_ZERO_DATE,ERROR_FOR_DIVISION_BY_ZERO,NO_ENGINE_SUBSTITUTION' */ ; -DELIMITER ;;; -/*!50003 CREATE*/ /*!50017 DEFINER=`root`@`localhost`*/ /*!50003 TRIGGER `before_update_Shop_Access_Level` BEFORE UPDATE ON `shop_access_level` FOR EACH ROW BEGIN - IF OLD.id_change_set <=> NEW.id_change_set THEN - SIGNAL SQLSTATE '45000' - SET MESSAGE_TEXT = 'New change Set ID must be provided.'; - END IF; - - INSERT INTO Shop_Access_Level_Audit ( - id_access_level, - name_field, - value_prev, - value_new, - id_change_set - ) - # Changed code - SELECT NEW.id_access_level, 'code', OLD.code, NEW.code, NEW.id_change_set - WHERE NOT (OLD.code <=> NEW.code) - UNION - # Changed name - SELECT NEW.id_access_level, 'name', OLD.name, NEW.name, NEW.id_change_set - WHERE NOT (OLD.name <=> NEW.name) - UNION - # Changed priority - SELECT NEW.id_access_level, 'priority', CONVERT(OLD.priority, CHAR), CONVERT(NEW.priority, CHAR), NEW.id_change_set - WHERE NOT (OLD.priority <=> NEW.priority) - UNION - # Changed active - SELECT NEW.id_access_level, 'active', CONVERT(CONVERT(OLD.active, SIGNED), CHAR), CONVERT(CONVERT(NEW.active, SIGNED), CHAR), NEW.id_change_set - WHERE NOT (OLD.active <=> NEW.active) - UNION - # Changed display_order - SELECT NEW.id_access_level, 'display_order', CONVERT(OLD.display_order, CHAR), CONVERT(NEW.display_order, CHAR), NEW.id_change_set - WHERE NOT OLD.display_order <=> NEW.display_order - ; -END */;; -DELIMITER ;; -/*!50003 SET sql_mode = @saved_sql_mode */ ; -/*!50003 SET character_set_client = @saved_cs_client */ ; -/*!50003 SET character_set_results = @saved_cs_results */ ; -/*!50003 SET collation_connection = @saved_col_connection */ ; - --- --- Table structure for table `shop_access_level_audit` --- - -DROP TABLE IF EXISTS `shop_access_level_audit`; -/*!40101 SET @saved_cs_client = @@character_set_client */; -/*!50503 SET character_set_client = utf8mb4 */; -CREATE TABLE `shop_access_level_audit` ( - `id_audit` int NOT NULL AUTO_INCREMENT, - `id_access_level` int NOT NULL, - `name_field` varchar(50) DEFAULT NULL, - `value_prev` varchar(500) DEFAULT NULL, - `value_new` varchar(500) DEFAULT NULL, - `id_change_set` int NOT NULL, - PRIMARY KEY (`id_audit`), - KEY `FK_Shop_Access_Level_Audit_id_access_level` (`id_access_level`), - KEY `FK_Shop_Access_Level_Audit_id_change_set` (`id_change_set`), - CONSTRAINT `FK_Shop_Access_Level_Audit_id_access_level` FOREIGN KEY (`id_access_level`) REFERENCES `shop_access_level` (`id_access_level`) ON UPDATE RESTRICT, - CONSTRAINT `FK_Shop_Access_Level_Audit_id_change_set` FOREIGN KEY (`id_change_set`) REFERENCES `shop_user_change_set` (`id_change_set`) -) ENGINE=InnoDB DEFAULT CHARSET=utf8mb4 COLLATE=utf8mb4_general_ci; -/*!40101 SET character_set_client = @saved_cs_client */; - --- --- Dumping data for table `shop_access_level_audit` --- - -LOCK TABLES `shop_access_level_audit` WRITE; -/*!40000 ALTER TABLE `shop_access_level_audit` DISABLE KEYS */; -/*!40000 ALTER TABLE `shop_access_level_audit` ENABLE KEYS */; -UNLOCK TABLES; - --- --- Table structure for table `shop_address` --- - -DROP TABLE IF EXISTS `shop_address`; -/*!40101 SET @saved_cs_client = @@character_set_client */; -/*!50503 SET character_set_client = utf8mb4 */; -CREATE TABLE `shop_address` ( - `id_address` int NOT NULL AUTO_INCREMENT, - `id_user` varchar(200) NOT NULL, - `id_region` int NOT NULL, - `name_full` varchar(255) NOT NULL, - `phone_number` varchar(20) NOT NULL, - `postcode` varchar(20) NOT NULL, - `address_line_1` varchar(100) NOT NULL, - `address_line_2` varchar(100) NOT NULL, - `city` varchar(50) NOT NULL, - `county` varchar(100) NOT NULL, - `active` bit(1) NOT NULL DEFAULT b'1', - `created_on` datetime DEFAULT NULL, - `created_by` varchar(100) DEFAULT NULL, - `id_change_set` int DEFAULT NULL, - PRIMARY KEY (`id_address`), - KEY `FK_Shop_Address_id_user` (`id_user`), - KEY `FK_Shop_Address_id_change_set` (`id_change_set`), - CONSTRAINT `FK_Shop_Address_id_change_set` FOREIGN KEY (`id_change_set`) REFERENCES `shop_user_change_set` (`id_change_set`), - CONSTRAINT `FK_Shop_Address_id_user` FOREIGN KEY (`id_user`) REFERENCES `shop_user` (`id_user`) ON UPDATE RESTRICT -) ENGINE=InnoDB AUTO_INCREMENT=4 DEFAULT CHARSET=utf8mb4 COLLATE=utf8mb4_general_ci; -/*!40101 SET character_set_client = @saved_cs_client */; - --- --- Dumping data for table `shop_address` --- - -LOCK TABLES `shop_address` WRITE; -/*!40000 ALTER TABLE `shop_address` DISABLE KEYS */; -INSERT INTO `shop_address` VALUES (1,'auth0|6582b95c895d09a70ba10fef',1,'Teddy','07375 571430','NN6 6EB','The Laurels','Cold Ashby Road','Cold Ashby','Northamptonshire',_binary '','2024-04-28 19:03:07','root@localhost',NULL),(2,'parts_guest',1,'Guest','07375 571430','NN6 6EB','The Laurels','Cold Ashby Road','Cold Ashby','Northamptonshire',_binary '','2024-04-28 19:03:07','root@localhost',NULL); -/*!40000 ALTER TABLE `shop_address` ENABLE KEYS */; -UNLOCK TABLES; -/*!50003 SET @saved_cs_client = @@character_set_client */ ; -/*!50003 SET @saved_cs_results = @@character_set_results */ ; -/*!50003 SET @saved_col_connection = @@collation_connection */ ; -/*!50003 SET character_set_client = utf8mb4 */ ; -/*!50003 SET character_set_results = utf8mb4 */ ; -/*!50003 SET collation_connection = utf8mb4_general_ci */ ; -/*!50003 SET @saved_sql_mode = @@sql_mode */ ; -/*!50003 SET sql_mode = 'ONLY_FULL_GROUP_BY,STRICT_TRANS_TABLES,NO_ZERO_IN_DATE,NO_ZERO_DATE,ERROR_FOR_DIVISION_BY_ZERO,NO_ENGINE_SUBSTITUTION' */ ; -DELIMITER ;;; -/*!50003 CREATE*/ /*!50017 DEFINER=`root`@`localhost`*/ /*!50003 TRIGGER `before_insert_Shop_Address` BEFORE INSERT ON `shop_address` FOR EACH ROW BEGIN - IF NEW.created_on <=> NULL THEN - SET NEW.created_on := IFNULL(NEW.created_on, NOW()); - END IF; - IF NEW.created_by <=> NULL THEN - SET NEW.created_by := IFNULL(NEW.created_by, IFNULL((SELECT id_user FROM Shop_User WHERE firstname = CURRENT_USER()), -1)); - END IF; -END */;; -DELIMITER ;; -/*!50003 SET sql_mode = @saved_sql_mode */ ; -/*!50003 SET character_set_client = @saved_cs_client */ ; -/*!50003 SET character_set_results = @saved_cs_results */ ; -/*!50003 SET collation_connection = @saved_col_connection */ ; -/*!50003 SET @saved_cs_client = @@character_set_client */ ; -/*!50003 SET @saved_cs_results = @@character_set_results */ ; -/*!50003 SET @saved_col_connection = @@collation_connection */ ; -/*!50003 SET character_set_client = utf8mb4 */ ; -/*!50003 SET character_set_results = utf8mb4 */ ; -/*!50003 SET collation_connection = utf8mb4_general_ci */ ; -/*!50003 SET @saved_sql_mode = @@sql_mode */ ; -/*!50003 SET sql_mode = 'ONLY_FULL_GROUP_BY,STRICT_TRANS_TABLES,NO_ZERO_IN_DATE,NO_ZERO_DATE,ERROR_FOR_DIVISION_BY_ZERO,NO_ENGINE_SUBSTITUTION' */ ; -DELIMITER ;;; -/*!50003 CREATE*/ /*!50017 DEFINER=`root`@`localhost`*/ /*!50003 TRIGGER `before_update_Shop_Address` BEFORE UPDATE ON `shop_address` FOR EACH ROW BEGIN - IF OLD.id_change_set <=> NEW.id_change_set THEN - SIGNAL SQLSTATE '45000' - SET MESSAGE_TEXT = 'New change Set ID must be provided.'; - END IF; - - INSERT INTO Shop_Address_Audit ( - id_address, - name_field, - value_prev, - value_new, - id_change_set - ) - # Changed region - SELECT NEW.id_address, 'id_region', OLD.id_region, NEW.id_region, NEW.id_change_set - WHERE NOT OLD.id_region <=> NEW.id_region - UNION - # Changed name_full - SELECT NEW.id_address, 'name_full', OLD.name_full, NEW.name_full, NEW.id_change_set - WHERE NOT OLD.name_full <=> NEW.name_full - UNION - # Changed phone_number - SELECT NEW.id_address, 'phone_number', OLD.phone_number, NEW.phone_number, NEW.id_change_set - WHERE NOT OLD.phone_number <=> NEW.phone_number - UNION - # Changed postcode - SELECT NEW.id_address, 'postcode', OLD.postcode, NEW.postcode, NEW.id_change_set - WHERE NOT OLD.postcode <=> NEW.postcode - UNION - # Changed address_line_1 - SELECT NEW.id_address, 'address_line_1', OLD.address_line_1, NEW.address_line_1, NEW.id_change_set - WHERE NOT OLD.address_line_1 <=> NEW.address_line_1 - UNION - # Changed address_line_2 - SELECT NEW.id_address, 'address_line_2', OLD.address_line_2, NEW.address_line_2, NEW.id_change_set - WHERE NOT OLD.address_line_2 <=> NEW.address_line_2 - UNION - # Changed city - SELECT NEW.id_address, 'city', OLD.city, NEW.city, NEW.id_change_set - WHERE NOT OLD.city <=> NEW.city - UNION - # Changed county - SELECT NEW.id_address, 'county', OLD.county, NEW.county, NEW.id_change_set - WHERE NOT OLD.county <=> NEW.county - UNION - # Changed active - SELECT NEW.id_address, 'active', CONVERT(CONVERT(OLD.active, SIGNED), CHAR), CONVERT(CONVERT(NEW.active, SIGNED), CHAR), NEW.id_change_set - WHERE NOT (OLD.active <=> NEW.active) - ; -END */;; -DELIMITER ;; -/*!50003 SET sql_mode = @saved_sql_mode */ ; -/*!50003 SET character_set_client = @saved_cs_client */ ; -/*!50003 SET character_set_results = @saved_cs_results */ ; -/*!50003 SET collation_connection = @saved_col_connection */ ; - --- --- Table structure for table `shop_address_audit` --- - -DROP TABLE IF EXISTS `shop_address_audit`; -/*!40101 SET @saved_cs_client = @@character_set_client */; -/*!50503 SET character_set_client = utf8mb4 */; -CREATE TABLE `shop_address_audit` ( - `id_audit` int NOT NULL AUTO_INCREMENT, - `id_address` int NOT NULL, - `name_field` varchar(50) DEFAULT NULL, - `value_prev` varchar(500) DEFAULT NULL, - `value_new` varchar(500) DEFAULT NULL, - `id_change_set` int NOT NULL, - PRIMARY KEY (`id_audit`), - KEY `FK_Shop_Address_Audit_id_address` (`id_address`), - KEY `FK_Shop_Address_Audit_id_change_set` (`id_change_set`), - CONSTRAINT `FK_Shop_Address_Audit_id_address` FOREIGN KEY (`id_address`) REFERENCES `shop_address` (`id_address`) ON UPDATE RESTRICT, - CONSTRAINT `FK_Shop_Address_Audit_id_change_set` FOREIGN KEY (`id_change_set`) REFERENCES `shop_user_change_set` (`id_change_set`) ON UPDATE RESTRICT -) ENGINE=InnoDB DEFAULT CHARSET=utf8mb4 COLLATE=utf8mb4_general_ci; -/*!40101 SET character_set_client = @saved_cs_client */; - --- --- Dumping data for table `shop_address_audit` --- - -LOCK TABLES `shop_address_audit` WRITE; -/*!40000 ALTER TABLE `shop_address_audit` DISABLE KEYS */; -/*!40000 ALTER TABLE `shop_address_audit` ENABLE KEYS */; -UNLOCK TABLES; - --- --- Table structure for table `shop_category` --- - -DROP TABLE IF EXISTS `shop_category`; -/*!40101 SET @saved_cs_client = @@character_set_client */; -/*!50503 SET character_set_client = utf8mb4 */; -CREATE TABLE `shop_category` ( - `id_category` int NOT NULL AUTO_INCREMENT, - `code` varchar(50) DEFAULT NULL, - `name` varchar(255) DEFAULT NULL, - `description` varchar(4000) DEFAULT NULL, - `active` bit(1) NOT NULL DEFAULT b'1', - `display_order` int NOT NULL, - `created_on` datetime DEFAULT NULL, - `created_by` varchar(100) DEFAULT NULL, - `id_change_set` int DEFAULT NULL, - PRIMARY KEY (`id_category`), - KEY `FK_Shop_Product_Category_id_change_set` (`id_change_set`), - CONSTRAINT `FK_Shop_Product_Category_id_change_set` FOREIGN KEY (`id_change_set`) REFERENCES `shop_product_change_set` (`id_change_set`) -) ENGINE=InnoDB AUTO_INCREMENT=4 DEFAULT CHARSET=utf8mb4 COLLATE=utf8mb4_general_ci; -/*!40101 SET character_set_client = @saved_cs_client */; - --- --- Dumping data for table `shop_category` --- - -LOCK TABLES `shop_category` WRITE; -/*!40000 ALTER TABLE `shop_category` DISABLE KEYS */; -INSERT INTO `shop_category` VALUES (1,'ASS','Assistive Devices','Braille product line and other assistive devices',_binary '',1,'2024-04-28 19:03:07','root@localhost',NULL),(2,'MISC','Miscellaneous','Not category allocated products',_binary '',99,'2024-04-28 19:03:07','root@localhost',NULL),(3,'TECH','Technology','Technological devices',_binary '',2,'2024-04-28 19:03:07','root@localhost',NULL); -/*!40000 ALTER TABLE `shop_category` ENABLE KEYS */; -UNLOCK TABLES; -/*!50003 SET @saved_cs_client = @@character_set_client */ ; -/*!50003 SET @saved_cs_results = @@character_set_results */ ; -/*!50003 SET @saved_col_connection = @@collation_connection */ ; -/*!50003 SET character_set_client = utf8mb4 */ ; -/*!50003 SET character_set_results = utf8mb4 */ ; -/*!50003 SET collation_connection = utf8mb4_general_ci */ ; -/*!50003 SET @saved_sql_mode = @@sql_mode */ ; -/*!50003 SET sql_mode = 'ONLY_FULL_GROUP_BY,STRICT_TRANS_TABLES,NO_ZERO_IN_DATE,NO_ZERO_DATE,ERROR_FOR_DIVISION_BY_ZERO,NO_ENGINE_SUBSTITUTION' */ ; -DELIMITER ;;; -/*!50003 CREATE*/ /*!50017 DEFINER=`root`@`localhost`*/ /*!50003 TRIGGER `before_insert_Shop_Product_Category` BEFORE INSERT ON `shop_category` FOR EACH ROW BEGIN - SET NEW.created_on := IFNULL(NEW.created_on, NOW()); - SET NEW.created_by := IFNULL(NEW.created_by, IFNULL((SELECT id_user FROM Shop_User WHERE firstname = CURRENT_USER()), -1)); -END */;; -DELIMITER ;; -/*!50003 SET sql_mode = @saved_sql_mode */ ; -/*!50003 SET character_set_client = @saved_cs_client */ ; -/*!50003 SET character_set_results = @saved_cs_results */ ; -/*!50003 SET collation_connection = @saved_col_connection */ ; -/*!50003 SET @saved_cs_client = @@character_set_client */ ; -/*!50003 SET @saved_cs_results = @@character_set_results */ ; -/*!50003 SET @saved_col_connection = @@collation_connection */ ; -/*!50003 SET character_set_client = utf8mb4 */ ; -/*!50003 SET character_set_results = utf8mb4 */ ; -/*!50003 SET collation_connection = utf8mb4_general_ci */ ; -/*!50003 SET @saved_sql_mode = @@sql_mode */ ; -/*!50003 SET sql_mode = 'ONLY_FULL_GROUP_BY,STRICT_TRANS_TABLES,NO_ZERO_IN_DATE,NO_ZERO_DATE,ERROR_FOR_DIVISION_BY_ZERO,NO_ENGINE_SUBSTITUTION' */ ; -DELIMITER ;;; -/*!50003 CREATE*/ /*!50017 DEFINER=`root`@`localhost`*/ /*!50003 TRIGGER `before_update_Shop_Product_Category` BEFORE UPDATE ON `shop_category` FOR EACH ROW BEGIN - IF OLD.id_change_set <=> NEW.id_change_set THEN - SIGNAL SQLSTATE '45000' - SET MESSAGE_TEXT = 'New change Set ID must be provided.'; - END IF; - - INSERT INTO Shop_Product_Category_Audit ( - id_category, - name_field, - value_prev, - value_new, - id_change_set - ) - # Changed code - SELECT NEW.id_category, 'code', OLD.code, NEW.code, NEW.id_change_set - WHERE NOT OLD.code <=> NEW.code - UNION - # Changed name - SELECT NEW.id_category, 'name', OLD.name, NEW.name, NEW.id_change_set - WHERE NOT OLD.name <=> NEW.name - UNION - # Changed description - SELECT NEW.id_category, 'description', OLD.description, NEW.description, NEW.id_change_set - WHERE NOT OLD.description <=> NEW.description - UNION - # Changed active - SELECT NEW.id_category, 'active', CONVERT(CONVERT(OLD.active, SIGNED), CHAR), CONVERT(CONVERT(NEW.active, SIGNED), CHAR), NEW.id_change_set - WHERE NOT (OLD.active <=> NEW.active) - UNION - # Changed display_order - SELECT NEW.id_category, 'display_order', CONVERT(OLD.display_order, CHAR), CONVERT(NEW.display_order, CHAR), NEW.id_change_set - WHERE NOT OLD.display_order <=> NEW.display_order - ; -END */;; -DELIMITER ;; -/*!50003 SET sql_mode = @saved_sql_mode */ ; -/*!50003 SET character_set_client = @saved_cs_client */ ; -/*!50003 SET character_set_results = @saved_cs_results */ ; -/*!50003 SET collation_connection = @saved_col_connection */ ; - --- --- Table structure for table `shop_category_audit` --- - -DROP TABLE IF EXISTS `shop_category_audit`; -/*!40101 SET @saved_cs_client = @@character_set_client */; -/*!50503 SET character_set_client = utf8mb4 */; -CREATE TABLE `shop_category_audit` ( - `id_audit` int NOT NULL AUTO_INCREMENT, - `id_category` int NOT NULL, - `name_field` varchar(50) DEFAULT NULL, - `value_prev` varchar(500) DEFAULT NULL, - `value_new` varchar(500) DEFAULT NULL, - `id_change_set` int NOT NULL, - PRIMARY KEY (`id_audit`), - KEY `FK_Shop_Product_Category_Audit_id_category` (`id_category`), - KEY `FK_Shop_Product_Category_Audit_id_change_set` (`id_change_set`), - CONSTRAINT `FK_Shop_Product_Category_Audit_id_category` FOREIGN KEY (`id_category`) REFERENCES `shop_category` (`id_category`) ON UPDATE RESTRICT, - CONSTRAINT `FK_Shop_Product_Category_Audit_id_change_set` FOREIGN KEY (`id_change_set`) REFERENCES `shop_product_change_set` (`id_change_set`) -) ENGINE=InnoDB DEFAULT CHARSET=utf8mb4 COLLATE=utf8mb4_general_ci; -/*!40101 SET character_set_client = @saved_cs_client */; - --- --- Dumping data for table `shop_category_audit` --- - -LOCK TABLES `shop_category_audit` WRITE; -/*!40000 ALTER TABLE `shop_category_audit` DISABLE KEYS */; -/*!40000 ALTER TABLE `shop_category_audit` ENABLE KEYS */; -UNLOCK TABLES; - --- --- Table structure for table `shop_currency` --- - -DROP TABLE IF EXISTS `shop_currency`; -/*!40101 SET @saved_cs_client = @@character_set_client */; -/*!50503 SET character_set_client = utf8mb4 */; -CREATE TABLE `shop_currency` ( - `id_currency` int NOT NULL AUTO_INCREMENT, - `code` varchar(50) NOT NULL, - `name` varchar(255) NOT NULL, - `symbol` varchar(1) NOT NULL, - `factor_from_GBP` float NOT NULL, - `active` bit(1) NOT NULL DEFAULT b'1', - `display_order` int NOT NULL, - `created_on` datetime DEFAULT NULL, - `created_by` varchar(100) DEFAULT NULL, - `id_change_set` int DEFAULT NULL, - PRIMARY KEY (`id_currency`), - KEY `FK_Shop_Currency_id_change_set` (`id_change_set`), - CONSTRAINT `FK_Shop_Currency_id_change_set` FOREIGN KEY (`id_change_set`) REFERENCES `shop_product_change_set` (`id_change_set`) ON UPDATE RESTRICT -) ENGINE=InnoDB AUTO_INCREMENT=3 DEFAULT CHARSET=utf8mb4 COLLATE=utf8mb4_general_ci; -/*!40101 SET character_set_client = @saved_cs_client */; - --- --- Dumping data for table `shop_currency` --- - -LOCK TABLES `shop_currency` WRITE; -/*!40000 ALTER TABLE `shop_currency` DISABLE KEYS */; -INSERT INTO `shop_currency` VALUES (1,'GBP','Great British Pound','£',1,_binary '',1,'2024-04-28 19:03:07','root@localhost',NULL),(2,'EUR','Euro','€',1.17,_binary '',2,'2024-04-28 19:03:07','root@localhost',NULL); -/*!40000 ALTER TABLE `shop_currency` ENABLE KEYS */; -UNLOCK TABLES; -/*!50003 SET @saved_cs_client = @@character_set_client */ ; -/*!50003 SET @saved_cs_results = @@character_set_results */ ; -/*!50003 SET @saved_col_connection = @@collation_connection */ ; -/*!50003 SET character_set_client = utf8mb4 */ ; -/*!50003 SET character_set_results = utf8mb4 */ ; -/*!50003 SET collation_connection = utf8mb4_general_ci */ ; -/*!50003 SET @saved_sql_mode = @@sql_mode */ ; -/*!50003 SET sql_mode = 'ONLY_FULL_GROUP_BY,STRICT_TRANS_TABLES,NO_ZERO_IN_DATE,NO_ZERO_DATE,ERROR_FOR_DIVISION_BY_ZERO,NO_ENGINE_SUBSTITUTION' */ ; -DELIMITER ;;; -/*!50003 CREATE*/ /*!50017 DEFINER=`root`@`localhost`*/ /*!50003 TRIGGER `before_insert_Shop_Currency` BEFORE INSERT ON `shop_currency` FOR EACH ROW BEGIN - IF NEW.created_on <=> NULL THEN - SET NEW.created_on := IFNULL(NEW.created_on, NOW()); - END IF; - IF NEW.created_by <=> NULL THEN - SET NEW.created_by := IFNULL(NEW.created_by, IFNULL((SELECT id_user FROM Shop_User WHERE firstname = CURRENT_USER()), -1)); - END IF; -END */;; -DELIMITER ;; -/*!50003 SET sql_mode = @saved_sql_mode */ ; -/*!50003 SET character_set_client = @saved_cs_client */ ; -/*!50003 SET character_set_results = @saved_cs_results */ ; -/*!50003 SET collation_connection = @saved_col_connection */ ; -/*!50003 SET @saved_cs_client = @@character_set_client */ ; -/*!50003 SET @saved_cs_results = @@character_set_results */ ; -/*!50003 SET @saved_col_connection = @@collation_connection */ ; -/*!50003 SET character_set_client = utf8mb4 */ ; -/*!50003 SET character_set_results = utf8mb4 */ ; -/*!50003 SET collation_connection = utf8mb4_general_ci */ ; -/*!50003 SET @saved_sql_mode = @@sql_mode */ ; -/*!50003 SET sql_mode = 'ONLY_FULL_GROUP_BY,STRICT_TRANS_TABLES,NO_ZERO_IN_DATE,NO_ZERO_DATE,ERROR_FOR_DIVISION_BY_ZERO,NO_ENGINE_SUBSTITUTION' */ ; -DELIMITER ;;; -/*!50003 CREATE*/ /*!50017 DEFINER=`root`@`localhost`*/ /*!50003 TRIGGER `before_update_Shop_Currency` BEFORE UPDATE ON `shop_currency` FOR EACH ROW BEGIN - IF OLD.id_change_set <=> NEW.id_change_set THEN - SIGNAL SQLSTATE '45000' - SET MESSAGE_TEXT = 'New change Set ID must be provided.'; - END IF; - - INSERT INTO Shop_Currency_Audit ( - id_currency, - name_field, - value_prev, - value_new, - id_change_set - ) - # Changed code - SELECT NEW.id_currency, 'code', OLD.code, NEW.code, NEW.id_change_set - WHERE NOT OLD.code <=> NEW.code - UNION - # Changed name - SELECT NEW.id_currency, 'name', OLD.name, NEW.name, NEW.id_change_set - WHERE NOT OLD.name <=> NEW.name - UNION - # Changed symbol - SELECT NEW.id_currency, 'symbol', OLD.symbol, NEW.symbol, NEW.id_change_set - WHERE NOT OLD.symbol <=> NEW.symbol - UNION - # Changed ratio_2_GBP - SELECT NEW.id_currency, 'factor_from_GBP', OLD.factor_from_GBP, NEW.factor_from_GBP, NEW.id_change_set - WHERE NOT OLD.factor_from_GBP <=> NEW.factor_from_GBP - UNION - # Changed active - SELECT NEW.id_currency, 'active', CONVERT(CONVERT(OLD.active, SIGNED), CHAR), CONVERT(CONVERT(NEW.active, SIGNED), CHAR), NEW.id_change_set - WHERE NOT (OLD.active <=> NEW.active) - UNION - # Changed display_order - SELECT NEW.id_currency, 'display_order', CONVERT(display_order, CHAR), CONVERT(display_order, CHAR), NEW.id_change_set - WHERE NOT (OLD.display_order <=> NEW.display_order) - ; -END */;; -DELIMITER ;; -/*!50003 SET sql_mode = @saved_sql_mode */ ; -/*!50003 SET character_set_client = @saved_cs_client */ ; -/*!50003 SET character_set_results = @saved_cs_results */ ; -/*!50003 SET collation_connection = @saved_col_connection */ ; - --- --- Table structure for table `shop_currency_audit` --- - -DROP TABLE IF EXISTS `shop_currency_audit`; -/*!40101 SET @saved_cs_client = @@character_set_client */; -/*!50503 SET character_set_client = utf8mb4 */; -CREATE TABLE `shop_currency_audit` ( - `id_audit` int NOT NULL AUTO_INCREMENT, - `id_currency` int NOT NULL, - `name_field` varchar(50) DEFAULT NULL, - `value_prev` varchar(500) DEFAULT NULL, - `value_new` varchar(500) DEFAULT NULL, - `id_change_set` int NOT NULL, - PRIMARY KEY (`id_audit`), - KEY `FK_Shop_Currency_Audit_id_currency` (`id_currency`), - KEY `FK_Shop_Currency_Audit_id_change_set` (`id_change_set`), - CONSTRAINT `FK_Shop_Currency_Audit_id_change_set` FOREIGN KEY (`id_change_set`) REFERENCES `shop_user_change_set` (`id_change_set`) ON UPDATE RESTRICT, - CONSTRAINT `FK_Shop_Currency_Audit_id_currency` FOREIGN KEY (`id_currency`) REFERENCES `shop_currency` (`id_currency`) ON UPDATE RESTRICT -) ENGINE=InnoDB DEFAULT CHARSET=utf8mb4 COLLATE=utf8mb4_general_ci; -/*!40101 SET character_set_client = @saved_cs_client */; - --- --- Dumping data for table `shop_currency_audit` --- - -LOCK TABLES `shop_currency_audit` WRITE; -/*!40000 ALTER TABLE `shop_currency_audit` DISABLE KEYS */; -/*!40000 ALTER TABLE `shop_currency_audit` ENABLE KEYS */; -UNLOCK TABLES; - --- --- Table structure for table `shop_delivery_option` --- - -DROP TABLE IF EXISTS `shop_delivery_option`; -/*!40101 SET @saved_cs_client = @@character_set_client */; -/*!50503 SET character_set_client = utf8mb4 */; -CREATE TABLE `shop_delivery_option` ( - `id_option` int NOT NULL AUTO_INCREMENT, - `code` varchar(50) NOT NULL, - `name` varchar(100) NOT NULL, - `description` varchar(4000) DEFAULT NULL, - `latency_delivery_min` int NOT NULL, - `latency_delivery_max` int NOT NULL, - `quantity_min` int NOT NULL, - `quantity_max` int NOT NULL, - `active` bit(1) NOT NULL DEFAULT b'1', - `display_order` int NOT NULL, - `created_on` datetime DEFAULT NULL, - `created_by` varchar(100) DEFAULT NULL, - `id_change_set` int DEFAULT NULL, - PRIMARY KEY (`id_option`), - KEY `FK_Shop_Delivery_Option_Type_id_change_set` (`id_change_set`), - CONSTRAINT `FK_Shop_Delivery_Option_Type_id_change_set` FOREIGN KEY (`id_change_set`) REFERENCES `shop_product_change_set` (`id_change_set`) -) ENGINE=InnoDB AUTO_INCREMENT=3 DEFAULT CHARSET=utf8mb4 COLLATE=utf8mb4_general_ci; -/*!40101 SET character_set_client = @saved_cs_client */; - --- --- Dumping data for table `shop_delivery_option` --- - -LOCK TABLES `shop_delivery_option` WRITE; -/*!40000 ALTER TABLE `shop_delivery_option` DISABLE KEYS */; -INSERT INTO `shop_delivery_option` VALUES (1,'COLLECT','Collection',NULL,0,0,0,1,_binary '',1,'2024-04-28 19:03:07','root@localhost',NULL),(2,'SIGNED_1','First Class Signed-For',NULL,2,4,0,1,_binary '',2,'2024-04-28 19:03:07','root@localhost',NULL); -/*!40000 ALTER TABLE `shop_delivery_option` ENABLE KEYS */; -UNLOCK TABLES; -/*!50003 SET @saved_cs_client = @@character_set_client */ ; -/*!50003 SET @saved_cs_results = @@character_set_results */ ; -/*!50003 SET @saved_col_connection = @@collation_connection */ ; -/*!50003 SET character_set_client = utf8mb4 */ ; -/*!50003 SET character_set_results = utf8mb4 */ ; -/*!50003 SET collation_connection = utf8mb4_general_ci */ ; -/*!50003 SET @saved_sql_mode = @@sql_mode */ ; -/*!50003 SET sql_mode = 'ONLY_FULL_GROUP_BY,STRICT_TRANS_TABLES,NO_ZERO_IN_DATE,NO_ZERO_DATE,ERROR_FOR_DIVISION_BY_ZERO,NO_ENGINE_SUBSTITUTION' */ ; -DELIMITER ;;; -/*!50003 CREATE*/ /*!50017 DEFINER=`root`@`localhost`*/ /*!50003 TRIGGER `before_insert_Shop_Delivery_Option` BEFORE INSERT ON `shop_delivery_option` FOR EACH ROW BEGIN - SET NEW.created_on := IFNULL(NEW.created_on, NOW()); - SET NEW.created_by := IFNULL(NEW.created_by, IFNULL((SELECT id_user FROM Shop_User WHERE firstname = CURRENT_USER()), -1)); -END */;; -DELIMITER ;; -/*!50003 SET sql_mode = @saved_sql_mode */ ; -/*!50003 SET character_set_client = @saved_cs_client */ ; -/*!50003 SET character_set_results = @saved_cs_results */ ; -/*!50003 SET collation_connection = @saved_col_connection */ ; -/*!50003 SET @saved_cs_client = @@character_set_client */ ; -/*!50003 SET @saved_cs_results = @@character_set_results */ ; -/*!50003 SET @saved_col_connection = @@collation_connection */ ; -/*!50003 SET character_set_client = utf8mb4 */ ; -/*!50003 SET character_set_results = utf8mb4 */ ; -/*!50003 SET collation_connection = utf8mb4_general_ci */ ; -/*!50003 SET @saved_sql_mode = @@sql_mode */ ; -/*!50003 SET sql_mode = 'ONLY_FULL_GROUP_BY,STRICT_TRANS_TABLES,NO_ZERO_IN_DATE,NO_ZERO_DATE,ERROR_FOR_DIVISION_BY_ZERO,NO_ENGINE_SUBSTITUTION' */ ; -DELIMITER ;;; -/*!50003 CREATE*/ /*!50017 DEFINER=`root`@`localhost`*/ /*!50003 TRIGGER `before_update_Shop_Delivery_Option` BEFORE UPDATE ON `shop_delivery_option` FOR EACH ROW BEGIN - IF OLD.id_change_set <=> NEW.id_change_set THEN - SIGNAL SQLSTATE '45000' - SET MESSAGE_TEXT = 'New change Set ID must be provided.'; - END IF; - - INSERT INTO Shop_Delivery_Option_Audit ( - id_option, - name_field, - value_prev, - value_new, - id_change_set - ) - # Changed code - SELECT NEW.id_option, 'code', OLD.code, NEW.code, NEW.id_change_set - WHERE NOT OLD.code <=> NEW.code - UNION - # Changed name - SELECT NEW.id_option, 'name', OLD.name, NEW.name, NEW.id_change_set - WHERE NOT OLD.name <=> NEW.name - UNION - # Changed latency_delivery_min - SELECT NEW.id_option, 'latency_delivery_min', CONVERT(OLD.latency_delivery_min, CHAR), CONVERT(NEW.latency_delivery_min, CHAR), NEW.id_change_set - WHERE NOT OLD.latency_delivery_min <=> NEW.latency_delivery_min - UNION - # Changed latency_delivery_max - SELECT NEW.id_option, 'latency_delivery_max', CONVERT(OLD.latency_delivery_max, CHAR), CONVERT(NEW.latency_delivery_max, CHAR), NEW.id_change_set - WHERE NOT OLD.latency_delivery_max <=> NEW.latency_delivery_max - UNION - # Changed quantity_min - SELECT NEW.id_option, 'quantity_min', CONVERT(OLD.quantity_min, CHAR), CONVERT(NEW.quantity_min, CHAR), NEW.id_change_set - WHERE NOT OLD.quantity_min <=> NEW.quantity_min - UNION - # Changed quantity_max - SELECT NEW.id_option, 'quantity_max', CONVERT(OLD.quantity_max, CHAR), CONVERT(NEW.quantity_max, CHAR), NEW.id_change_set - WHERE NOT OLD.quantity_max <=> NEW.quantity_max - UNION - # Changed active - SELECT NEW.id_option, 'active', CONVERT(OLD.active, CHAR), CONVERT(NEW.active, CHAR), NEW.id_change_set - WHERE NOT OLD.active <=> NEW.active - UNION - # Changed display_order - SELECT NEW.id_option, 'display_order', CONVERT(OLD.display_order, CHAR), CONVERT(NEW.display_order, CHAR), NEW.id_change_set - WHERE NOT OLD.display_order <=> NEW.display_order - ; -END */;; -DELIMITER ;; -/*!50003 SET sql_mode = @saved_sql_mode */ ; -/*!50003 SET character_set_client = @saved_cs_client */ ; -/*!50003 SET character_set_results = @saved_cs_results */ ; -/*!50003 SET collation_connection = @saved_col_connection */ ; - --- --- Table structure for table `shop_delivery_option_audit` --- - -DROP TABLE IF EXISTS `shop_delivery_option_audit`; -/*!40101 SET @saved_cs_client = @@character_set_client */; -/*!50503 SET character_set_client = utf8mb4 */; -CREATE TABLE `shop_delivery_option_audit` ( - `id_audit` int NOT NULL AUTO_INCREMENT, - `id_option` int NOT NULL, - `name_field` varchar(50) DEFAULT NULL, - `value_prev` varchar(500) DEFAULT NULL, - `value_new` varchar(500) DEFAULT NULL, - `id_change_set` int NOT NULL, - PRIMARY KEY (`id_audit`), - KEY `FK_Shop_Delivery_Option_Audit_id_option` (`id_option`), - KEY `FK_Shop_Delivery_Option_Audit_id_change_set` (`id_change_set`), - CONSTRAINT `FK_Shop_Delivery_Option_Audit_id_change_set` FOREIGN KEY (`id_change_set`) REFERENCES `shop_product_change_set` (`id_change_set`), - CONSTRAINT `FK_Shop_Delivery_Option_Audit_id_option` FOREIGN KEY (`id_option`) REFERENCES `shop_delivery_option` (`id_option`) ON UPDATE RESTRICT -) ENGINE=InnoDB DEFAULT CHARSET=utf8mb4 COLLATE=utf8mb4_general_ci; -/*!40101 SET character_set_client = @saved_cs_client */; - --- --- Dumping data for table `shop_delivery_option_audit` --- - -LOCK TABLES `shop_delivery_option_audit` WRITE; -/*!40000 ALTER TABLE `shop_delivery_option_audit` DISABLE KEYS */; -/*!40000 ALTER TABLE `shop_delivery_option_audit` ENABLE KEYS */; -UNLOCK TABLES; - --- --- Table structure for table `shop_discount` --- - -DROP TABLE IF EXISTS `shop_discount`; -/*!40101 SET @saved_cs_client = @@character_set_client */; -/*!50503 SET character_set_client = utf8mb4 */; -CREATE TABLE `shop_discount` ( - `id_discount` int NOT NULL AUTO_INCREMENT, - `code` varchar(50) NOT NULL, - `name` varchar(200) NOT NULL, - `id_product` int NOT NULL, - `id_permutation` int DEFAULT NULL, - `multiplier` float NOT NULL DEFAULT '1', - `subtractor` float NOT NULL DEFAULT '0', - `apply_multiplier_first` bit(1) DEFAULT b'1', - `quantity_min` float NOT NULL DEFAULT '0', - `quantity_max` float NOT NULL, - `date_start` datetime NOT NULL, - `date_end` datetime NOT NULL, - `active` bit(1) NOT NULL DEFAULT b'1', - `display_order` int NOT NULL, - `created_on` datetime DEFAULT NULL, - `created_by` varchar(100) DEFAULT NULL, - `id_change_set` int DEFAULT NULL, - PRIMARY KEY (`id_discount`), - KEY `FK_Shop_Discount_id_product` (`id_product`), - KEY `FK_Shop_Discount_id_permutation` (`id_permutation`), - KEY `FK_Shop_Discount_id_change_set` (`id_change_set`), - CONSTRAINT `FK_Shop_Discount_id_change_set` FOREIGN KEY (`id_change_set`) REFERENCES `shop_product_change_set` (`id_change_set`), - CONSTRAINT `FK_Shop_Discount_id_permutation` FOREIGN KEY (`id_permutation`) REFERENCES `shop_product_permutation` (`id_permutation`) ON UPDATE RESTRICT, - CONSTRAINT `FK_Shop_Discount_id_product` FOREIGN KEY (`id_product`) REFERENCES `shop_product` (`id_product`), - CONSTRAINT `shop_discount_chk_1` CHECK ((`multiplier` > 0)) -) ENGINE=InnoDB AUTO_INCREMENT=3 DEFAULT CHARSET=utf8mb4 COLLATE=utf8mb4_general_ci; -/*!40101 SET character_set_client = @saved_cs_client */; - --- --- Dumping data for table `shop_discount` --- - -LOCK TABLES `shop_discount` WRITE; -/*!40000 ALTER TABLE `shop_discount` DISABLE KEYS */; -INSERT INTO `shop_discount` VALUES (1,'CRIMBO50','Christmas 50% off sale!',1,1,0.5,0,_binary '',3,9,'2024-04-28 19:03:07','2023-12-31 23:59:59',_binary '',1,'2024-04-28 19:03:07','root@localhost',NULL),(2,'CRIMBO50','Christmas 50% off sale!',1,2,0.5,0,_binary '',3,9,'2024-04-28 19:03:07','2023-12-31 23:59:59',_binary '',1,'2024-04-28 19:03:07','root@localhost',NULL); -/*!40000 ALTER TABLE `shop_discount` ENABLE KEYS */; -UNLOCK TABLES; -/*!50003 SET @saved_cs_client = @@character_set_client */ ; -/*!50003 SET @saved_cs_results = @@character_set_results */ ; -/*!50003 SET @saved_col_connection = @@collation_connection */ ; -/*!50003 SET character_set_client = utf8mb4 */ ; -/*!50003 SET character_set_results = utf8mb4 */ ; -/*!50003 SET collation_connection = utf8mb4_general_ci */ ; -/*!50003 SET @saved_sql_mode = @@sql_mode */ ; -/*!50003 SET sql_mode = 'ONLY_FULL_GROUP_BY,STRICT_TRANS_TABLES,NO_ZERO_IN_DATE,NO_ZERO_DATE,ERROR_FOR_DIVISION_BY_ZERO,NO_ENGINE_SUBSTITUTION' */ ; -DELIMITER ;;; -/*!50003 CREATE*/ /*!50017 DEFINER=`root`@`localhost`*/ /*!50003 TRIGGER `before_insert_Shop_Discount` BEFORE INSERT ON `shop_discount` FOR EACH ROW BEGIN - SET NEW.created_on := IFNULL(NEW.created_on, NOW()); - SET NEW.created_by := IFNULL(NEW.created_by, IFNULL((SELECT id_user FROM Shop_User WHERE firstname = CURRENT_USER()), -1)); -END */;; -DELIMITER ;; -/*!50003 SET sql_mode = @saved_sql_mode */ ; -/*!50003 SET character_set_client = @saved_cs_client */ ; -/*!50003 SET character_set_results = @saved_cs_results */ ; -/*!50003 SET collation_connection = @saved_col_connection */ ; -/*!50003 SET @saved_cs_client = @@character_set_client */ ; -/*!50003 SET @saved_cs_results = @@character_set_results */ ; -/*!50003 SET @saved_col_connection = @@collation_connection */ ; -/*!50003 SET character_set_client = utf8mb4 */ ; -/*!50003 SET character_set_results = utf8mb4 */ ; -/*!50003 SET collation_connection = utf8mb4_general_ci */ ; -/*!50003 SET @saved_sql_mode = @@sql_mode */ ; -/*!50003 SET sql_mode = 'ONLY_FULL_GROUP_BY,STRICT_TRANS_TABLES,NO_ZERO_IN_DATE,NO_ZERO_DATE,ERROR_FOR_DIVISION_BY_ZERO,NO_ENGINE_SUBSTITUTION' */ ; -DELIMITER ;;; -/*!50003 CREATE*/ /*!50017 DEFINER=`root`@`localhost`*/ /*!50003 TRIGGER `before_update_Shop_Discount` BEFORE UPDATE ON `shop_discount` FOR EACH ROW BEGIN - IF OLD.id_change_set <=> NEW.id_change_set THEN - SIGNAL SQLSTATE '45000' - SET MESSAGE_TEXT = 'New change Set ID must be provided.'; - END IF; - - INSERT INTO Shop_Discount_Audit ( - id_discount, - name_field, - value_prev, - value_new, - id_change_set - ) - # Changed code - SELECT NEW.id_discount, 'code', OLD.code, NEW.code, NEW.id_change_set - WHERE NOT OLD.code <=> NEW.code - UNION - # Changed name - SELECT NEW.id_discount, 'name', OLD.name, NEW.name, NEW.id_change_set - WHERE NOT OLD.name <=> NEW.name - UNION - # Changed multiplier - SELECT NEW.id_discount, 'multiplier', OLD.multiplier, NEW.multiplier, NEW.id_change_set - WHERE NOT OLD.multiplier <=> NEW.multiplier - UNION - # Changed subtractor - SELECT NEW.id_discount, 'subtractor', OLD.subtractor, NEW.subtractor, NEW.id_change_set - WHERE NOT OLD.subtractor <=> NEW.subtractor - UNION - # Changed apply_multiplier_first - SELECT NEW.id_discount, 'apply_multiplier_first', CONVERT(CONVERT(OLD.apply_multiplier_first, SIGNED), CHAR), CONVERT(CONVERT(NEW.apply_multiplier_first, SIGNED), CHAR), NEW.id_change_set - WHERE NOT OLD.apply_multiplier_first <=> NEW.apply_multiplier_first - UNION - # Changed quantity_min - SELECT NEW.id_discount, 'quantity_min', OLD.quantity_min, NEW.quantity_min, NEW.id_change_set - WHERE NOT OLD.quantity_min <=> NEW.quantity_min - UNION - # Changed quantity_max - SELECT NEW.id_discount, 'quantity_max', OLD.quantity_max, NEW.quantity_max, NEW.id_change_set - WHERE NOT OLD.quantity_max <=> NEW.quantity_max - UNION - # Changed date_start - SELECT NEW.id_discount, 'date_start', OLD.date_start, NEW.date_start, NEW.id_change_set - WHERE NOT OLD.date_start <=> NEW.date_start - UNION - # Changed date_end - SELECT NEW.id_discount, 'date_end', OLD.date_end, NEW.date_end, NEW.id_change_set - WHERE NOT OLD.date_end <=> NEW.date_end - UNION - # Changed display_order - SELECT NEW.id_discount, 'display_order', CONVERT(OLD.display_order, CHAR), CONVERT(NEW.display_order, CHAR), NEW.id_change_set - WHERE NOT OLD.display_order <=> NEW.display_order - UNION - # Changed active - SELECT NEW.id_discount, 'active', CONVERT(CONVERT(OLD.active, SIGNED), CHAR), CONVERT(CONVERT(NEW.active, SIGNED), CHAR), NEW.id_change_set - WHERE NOT OLD.active <=> NEW.active - ; -END */;; -DELIMITER ;; -/*!50003 SET sql_mode = @saved_sql_mode */ ; -/*!50003 SET character_set_client = @saved_cs_client */ ; -/*!50003 SET character_set_results = @saved_cs_results */ ; -/*!50003 SET collation_connection = @saved_col_connection */ ; - --- --- Table structure for table `shop_discount_audit` --- - -DROP TABLE IF EXISTS `shop_discount_audit`; -/*!40101 SET @saved_cs_client = @@character_set_client */; -/*!50503 SET character_set_client = utf8mb4 */; -CREATE TABLE `shop_discount_audit` ( - `id_audit` int NOT NULL AUTO_INCREMENT, - `id_discount` int NOT NULL, - `name_field` varchar(50) DEFAULT NULL, - `value_prev` varchar(500) DEFAULT NULL, - `value_new` varchar(500) DEFAULT NULL, - `id_change_set` int NOT NULL, - PRIMARY KEY (`id_audit`), - KEY `FK_Shop_Discount_Audit_id_discount` (`id_discount`), - KEY `FK_Shop_Discount_Audit_id_change_set` (`id_change_set`), - CONSTRAINT `FK_Shop_Discount_Audit_id_change_set` FOREIGN KEY (`id_change_set`) REFERENCES `shop_product_change_set` (`id_change_set`) ON UPDATE RESTRICT, - CONSTRAINT `FK_Shop_Discount_Audit_id_discount` FOREIGN KEY (`id_discount`) REFERENCES `shop_discount` (`id_discount`) ON UPDATE RESTRICT -) ENGINE=InnoDB DEFAULT CHARSET=utf8mb4 COLLATE=utf8mb4_general_ci; -/*!40101 SET character_set_client = @saved_cs_client */; - --- --- Dumping data for table `shop_discount_audit` --- - -LOCK TABLES `shop_discount_audit` WRITE; -/*!40000 ALTER TABLE `shop_discount_audit` DISABLE KEYS */; -/*!40000 ALTER TABLE `shop_discount_audit` ENABLE KEYS */; -UNLOCK TABLES; - --- --- Table structure for table `shop_discount_region_currency_link` --- - -DROP TABLE IF EXISTS `shop_discount_region_currency_link`; -/*!40101 SET @saved_cs_client = @@character_set_client */; -/*!50503 SET character_set_client = utf8mb4 */; -CREATE TABLE `shop_discount_region_currency_link` ( - `id_link` int NOT NULL AUTO_INCREMENT, - `id_discount` int NOT NULL, - `id_region` int NOT NULL, - `id_currency` int NOT NULL, - `active` bit(1) NOT NULL DEFAULT b'1', - `created_on` datetime DEFAULT NULL, - `created_by` varchar(100) DEFAULT NULL, - `id_change_set` int DEFAULT NULL, - PRIMARY KEY (`id_link`), - KEY `FK_Shop_Discount_Region_Currency_Link_id_discount` (`id_discount`), - KEY `FK_Shop_Discount_Region_Currency_Link_id_region` (`id_region`), - KEY `FK_Shop_Discount_Region_Currency_Link_id_currency` (`id_currency`), - KEY `FK_Shop_Discount_Region_Currency_Link_id_change_set` (`id_change_set`), - CONSTRAINT `FK_Shop_Discount_Region_Currency_Link_id_change_set` FOREIGN KEY (`id_change_set`) REFERENCES `shop_product_change_set` (`id_change_set`), - CONSTRAINT `FK_Shop_Discount_Region_Currency_Link_id_currency` FOREIGN KEY (`id_currency`) REFERENCES `shop_currency` (`id_currency`) ON UPDATE RESTRICT, - CONSTRAINT `FK_Shop_Discount_Region_Currency_Link_id_discount` FOREIGN KEY (`id_discount`) REFERENCES `shop_discount` (`id_discount`) ON UPDATE RESTRICT, - CONSTRAINT `FK_Shop_Discount_Region_Currency_Link_id_region` FOREIGN KEY (`id_region`) REFERENCES `shop_region` (`id_region`) ON UPDATE RESTRICT -) ENGINE=InnoDB AUTO_INCREMENT=5 DEFAULT CHARSET=utf8mb4 COLLATE=utf8mb4_general_ci; -/*!40101 SET character_set_client = @saved_cs_client */; - --- --- Dumping data for table `shop_discount_region_currency_link` --- - -LOCK TABLES `shop_discount_region_currency_link` WRITE; -/*!40000 ALTER TABLE `shop_discount_region_currency_link` DISABLE KEYS */; -INSERT INTO `shop_discount_region_currency_link` VALUES (1,1,1,1,_binary '','2024-04-28 19:03:07','root@localhost',NULL),(2,2,1,1,_binary '','2024-04-28 19:03:07','root@localhost',NULL),(3,1,1,2,_binary '','2024-04-28 19:03:07','root@localhost',NULL),(4,2,1,2,_binary '','2024-04-28 19:03:07','root@localhost',NULL); -/*!40000 ALTER TABLE `shop_discount_region_currency_link` ENABLE KEYS */; -UNLOCK TABLES; -/*!50003 SET @saved_cs_client = @@character_set_client */ ; -/*!50003 SET @saved_cs_results = @@character_set_results */ ; -/*!50003 SET @saved_col_connection = @@collation_connection */ ; -/*!50003 SET character_set_client = utf8mb4 */ ; -/*!50003 SET character_set_results = utf8mb4 */ ; -/*!50003 SET collation_connection = utf8mb4_general_ci */ ; -/*!50003 SET @saved_sql_mode = @@sql_mode */ ; -/*!50003 SET sql_mode = 'ONLY_FULL_GROUP_BY,STRICT_TRANS_TABLES,NO_ZERO_IN_DATE,NO_ZERO_DATE,ERROR_FOR_DIVISION_BY_ZERO,NO_ENGINE_SUBSTITUTION' */ ; -DELIMITER ;;; -/*!50003 CREATE*/ /*!50017 DEFINER=`root`@`localhost`*/ /*!50003 TRIGGER `before_insert_Shop_Discount_Region_Currency_Link` BEFORE INSERT ON `shop_discount_region_currency_link` FOR EACH ROW BEGIN - IF NEW.created_on <=> NULL THEN - SET NEW.created_on := IFNULL(NEW.created_on, NOW()); - END IF; - IF NEW.created_by <=> NULL THEN - SET NEW.created_by := IFNULL(NEW.created_by, IFNULL((SELECT id_user FROM Shop_User WHERE firstname = CURRENT_USER()), -1)); - END IF; -END */;; -DELIMITER ;; -/*!50003 SET sql_mode = @saved_sql_mode */ ; -/*!50003 SET character_set_client = @saved_cs_client */ ; -/*!50003 SET character_set_results = @saved_cs_results */ ; -/*!50003 SET collation_connection = @saved_col_connection */ ; -/*!50003 SET @saved_cs_client = @@character_set_client */ ; -/*!50003 SET @saved_cs_results = @@character_set_results */ ; -/*!50003 SET @saved_col_connection = @@collation_connection */ ; -/*!50003 SET character_set_client = utf8mb4 */ ; -/*!50003 SET character_set_results = utf8mb4 */ ; -/*!50003 SET collation_connection = utf8mb4_general_ci */ ; -/*!50003 SET @saved_sql_mode = @@sql_mode */ ; -/*!50003 SET sql_mode = 'ONLY_FULL_GROUP_BY,STRICT_TRANS_TABLES,NO_ZERO_IN_DATE,NO_ZERO_DATE,ERROR_FOR_DIVISION_BY_ZERO,NO_ENGINE_SUBSTITUTION' */ ; -DELIMITER ;;; -/*!50003 CREATE*/ /*!50017 DEFINER=`root`@`localhost`*/ /*!50003 TRIGGER `before_update_Shop_Discount_Region_Currency_Link` BEFORE UPDATE ON `shop_discount_region_currency_link` FOR EACH ROW BEGIN - IF OLD.id_change_set <=> NEW.id_change_set THEN - SIGNAL SQLSTATE '45000' - SET MESSAGE_TEXT = 'New change Set ID must be provided.'; - END IF; - - INSERT INTO Shop_Discount_Region_Currency_Link_Audit ( - id_link, - name_field, - value_prev, - value_new, - id_change_set - ) - /* - # Changed id_discount - SELECT NEW.id_link, 'id_discount', CONVERT(OLD.id_discount, CHAR), CONVERT(NEW.id_discount, CHAR), NEW.id_change_set - WHERE NOT OLD.id_discount <=> NEW.id_discount - UNION - # Changed id_region - SELECT NEW.id_link, 'id_region', CONVERT(OLD.id_region, CHAR), CONVERT(NEW.id_region, CHAR), NEW.id_change_set - WHERE NOT OLD.id_region <=> NEW.id_region - UNION - */ - # Changed active - SELECT NEW.id_link, 'active', CONVERT(CONVERT(OLD.active, SIGNED), CHAR), CONVERT(CONVERT(NEW.active, SIGNED), CHAR), NEW.id_change_set - WHERE NOT (OLD.active <=> NEW.active) - ; -END */;; -DELIMITER ;; -/*!50003 SET sql_mode = @saved_sql_mode */ ; -/*!50003 SET character_set_client = @saved_cs_client */ ; -/*!50003 SET character_set_results = @saved_cs_results */ ; -/*!50003 SET collation_connection = @saved_col_connection */ ; - --- --- Table structure for table `shop_discount_region_currency_link_audit` --- - -DROP TABLE IF EXISTS `shop_discount_region_currency_link_audit`; -/*!40101 SET @saved_cs_client = @@character_set_client */; -/*!50503 SET character_set_client = utf8mb4 */; -CREATE TABLE `shop_discount_region_currency_link_audit` ( - `id_audit` int NOT NULL AUTO_INCREMENT, - `id_link` int NOT NULL, - `name_field` varchar(50) DEFAULT NULL, - `value_prev` varchar(500) DEFAULT NULL, - `value_new` varchar(500) DEFAULT NULL, - `id_change_set` int NOT NULL, - PRIMARY KEY (`id_audit`), - KEY `FK_Shop_Discount_Region_Currency_Link_Audit_id_link` (`id_link`), - KEY `FK_Shop_Discount_Region_Currency_Link_Audit_id_change_set` (`id_change_set`), - CONSTRAINT `FK_Shop_Discount_Region_Currency_Link_Audit_id_change_set` FOREIGN KEY (`id_change_set`) REFERENCES `shop_product_change_set` (`id_change_set`) ON UPDATE RESTRICT, - CONSTRAINT `FK_Shop_Discount_Region_Currency_Link_Audit_id_link` FOREIGN KEY (`id_link`) REFERENCES `shop_discount_region_currency_link` (`id_link`) ON UPDATE RESTRICT -) ENGINE=InnoDB DEFAULT CHARSET=utf8mb4 COLLATE=utf8mb4_general_ci; -/*!40101 SET character_set_client = @saved_cs_client */; - --- --- Dumping data for table `shop_discount_region_currency_link_audit` --- - -LOCK TABLES `shop_discount_region_currency_link_audit` WRITE; -/*!40000 ALTER TABLE `shop_discount_region_currency_link_audit` DISABLE KEYS */; -/*!40000 ALTER TABLE `shop_discount_region_currency_link_audit` ENABLE KEYS */; -UNLOCK TABLES; - --- --- Table structure for table `shop_general` --- - -DROP TABLE IF EXISTS `shop_general`; -/*!40101 SET @saved_cs_client = @@character_set_client */; -/*!50503 SET character_set_client = utf8mb4 */; -CREATE TABLE `shop_general` ( - `id_general` int NOT NULL AUTO_INCREMENT, - `quantity_max` float DEFAULT NULL, - `created_on` datetime DEFAULT NULL, - `created_by` varchar(100) DEFAULT NULL, - `id_change_set` int DEFAULT NULL, - PRIMARY KEY (`id_general`), - KEY `CHK_Shop_General_id_change_set` (`id_change_set`), - CONSTRAINT `CHK_Shop_General_id_change_set` FOREIGN KEY (`id_change_set`) REFERENCES `shop_product_change_set` (`id_change_set`) -) ENGINE=InnoDB AUTO_INCREMENT=2 DEFAULT CHARSET=utf8mb4 COLLATE=utf8mb4_general_ci; -/*!40101 SET character_set_client = @saved_cs_client */; - --- --- Dumping data for table `shop_general` --- - -LOCK TABLES `shop_general` WRITE; -/*!40000 ALTER TABLE `shop_general` DISABLE KEYS */; -INSERT INTO `shop_general` VALUES (1,10,'2024-04-28 19:03:07','root@localhost',NULL); -/*!40000 ALTER TABLE `shop_general` ENABLE KEYS */; -UNLOCK TABLES; -/*!50003 SET @saved_cs_client = @@character_set_client */ ; -/*!50003 SET @saved_cs_results = @@character_set_results */ ; -/*!50003 SET @saved_col_connection = @@collation_connection */ ; -/*!50003 SET character_set_client = utf8mb4 */ ; -/*!50003 SET character_set_results = utf8mb4 */ ; -/*!50003 SET collation_connection = utf8mb4_general_ci */ ; -/*!50003 SET @saved_sql_mode = @@sql_mode */ ; -/*!50003 SET sql_mode = 'ONLY_FULL_GROUP_BY,STRICT_TRANS_TABLES,NO_ZERO_IN_DATE,NO_ZERO_DATE,ERROR_FOR_DIVISION_BY_ZERO,NO_ENGINE_SUBSTITUTION' */ ; -DELIMITER ;;; -/*!50003 CREATE*/ /*!50017 DEFINER=`root`@`localhost`*/ /*!50003 TRIGGER `before_insert_Shop_General` BEFORE INSERT ON `shop_general` FOR EACH ROW BEGIN - SET NEW.created_on := IFNULL(NEW.created_on, NOW()); - SET NEW.created_by := IFNULL(NEW.created_by, IFNULL((SELECT id_user FROM Shop_User WHERE firstname = CURRENT_USER()), -1)); -END */;; -DELIMITER ;; -/*!50003 SET sql_mode = @saved_sql_mode */ ; -/*!50003 SET character_set_client = @saved_cs_client */ ; -/*!50003 SET character_set_results = @saved_cs_results */ ; -/*!50003 SET collation_connection = @saved_col_connection */ ; -/*!50003 SET @saved_cs_client = @@character_set_client */ ; -/*!50003 SET @saved_cs_results = @@character_set_results */ ; -/*!50003 SET @saved_col_connection = @@collation_connection */ ; -/*!50003 SET character_set_client = utf8mb4 */ ; -/*!50003 SET character_set_results = utf8mb4 */ ; -/*!50003 SET collation_connection = utf8mb4_general_ci */ ; -/*!50003 SET @saved_sql_mode = @@sql_mode */ ; -/*!50003 SET sql_mode = 'ONLY_FULL_GROUP_BY,STRICT_TRANS_TABLES,NO_ZERO_IN_DATE,NO_ZERO_DATE,ERROR_FOR_DIVISION_BY_ZERO,NO_ENGINE_SUBSTITUTION' */ ; -DELIMITER ;;; -/*!50003 CREATE*/ /*!50017 DEFINER=`root`@`localhost`*/ /*!50003 TRIGGER `before_update_Shop_General` BEFORE UPDATE ON `shop_general` FOR EACH ROW BEGIN - IF OLD.id_change_set <=> NEW.id_change_set THEN - SIGNAL SQLSTATE '45000' - SET MESSAGE_TEXT = 'New change Set ID must be provided.'; - END IF; - - INSERT INTO Shop_General_Audit ( - id_general, - name_field, - value_prev, - value_new, - id_change_set - ) - # Changed quantity max - SELECT NEW.id_general, 'quantity_max', CONVERT(OLD.quantity_max, CHAR), CONVERT(NEW.quantity_max, CHAR), NEW.id_change_set - WHERE NOT OLD.quantity_max <=> NEW.quantity_max - ; -END */;; -DELIMITER ;; -/*!50003 SET sql_mode = @saved_sql_mode */ ; -/*!50003 SET character_set_client = @saved_cs_client */ ; -/*!50003 SET character_set_results = @saved_cs_results */ ; -/*!50003 SET collation_connection = @saved_col_connection */ ; - --- --- Table structure for table `shop_general_audit` --- - -DROP TABLE IF EXISTS `shop_general_audit`; -/*!40101 SET @saved_cs_client = @@character_set_client */; -/*!50503 SET character_set_client = utf8mb4 */; -CREATE TABLE `shop_general_audit` ( - `id_audit` int NOT NULL AUTO_INCREMENT, - `id_general` int NOT NULL, - `name_field` varchar(50) DEFAULT NULL, - `value_prev` varchar(500) DEFAULT NULL, - `value_new` varchar(500) DEFAULT NULL, - `id_change_set` int NOT NULL, - PRIMARY KEY (`id_audit`), - KEY `FK_Shop_General_Audit_id_general` (`id_general`), - KEY `FK_Shop_General_Audit_id_change_set` (`id_change_set`), - CONSTRAINT `FK_Shop_General_Audit_id_change_set` FOREIGN KEY (`id_change_set`) REFERENCES `shop_product_change_set` (`id_change_set`), - CONSTRAINT `FK_Shop_General_Audit_id_general` FOREIGN KEY (`id_general`) REFERENCES `shop_general` (`id_general`) ON UPDATE RESTRICT -) ENGINE=InnoDB DEFAULT CHARSET=utf8mb4 COLLATE=utf8mb4_general_ci; -/*!40101 SET character_set_client = @saved_cs_client */; - --- --- Dumping data for table `shop_general_audit` --- - -LOCK TABLES `shop_general_audit` WRITE; -/*!40000 ALTER TABLE `shop_general_audit` DISABLE KEYS */; -/*!40000 ALTER TABLE `shop_general_audit` ENABLE KEYS */; -UNLOCK TABLES; - --- --- Table structure for table `shop_image` --- - -DROP TABLE IF EXISTS `shop_image`; -/*!40101 SET @saved_cs_client = @@character_set_client */; -/*!50503 SET character_set_client = utf8mb4 */; -CREATE TABLE `shop_image` ( - `id_image` int NOT NULL AUTO_INCREMENT, - `id_type_image` int NOT NULL, - `id_type_file` int NOT NULL, - `id_product` int DEFAULT NULL, - `id_permutation` int DEFAULT NULL, - `url` varchar(255) DEFAULT NULL, - `active` bit(1) NOT NULL DEFAULT b'1', - `display_order` int NOT NULL, - `created_on` datetime DEFAULT NULL, - `created_by` varchar(100) DEFAULT NULL, - `id_change_set` int DEFAULT NULL, - PRIMARY KEY (`id_image`), - KEY `FK_Shop_Image_id_type_image` (`id_type_image`), - KEY `FK_Shop_Image_id_type_file` (`id_type_file`), - KEY `FK_Shop_Image_id_product` (`id_product`), - KEY `FK_Shop_Image_id_permutation` (`id_permutation`), - KEY `FK_Shop_Image_id_change_set` (`id_change_set`), - CONSTRAINT `FK_Shop_Image_id_change_set` FOREIGN KEY (`id_change_set`) REFERENCES `shop_product_change_set` (`id_change_set`), - CONSTRAINT `FK_Shop_Image_id_permutation` FOREIGN KEY (`id_permutation`) REFERENCES `shop_product_permutation` (`id_permutation`), - CONSTRAINT `FK_Shop_Image_id_product` FOREIGN KEY (`id_product`) REFERENCES `shop_product` (`id_product`), - CONSTRAINT `FK_Shop_Image_id_type_file` FOREIGN KEY (`id_type_file`) REFERENCES `file_type` (`id_type`), - CONSTRAINT `FK_Shop_Image_id_type_image` FOREIGN KEY (`id_type_image`) REFERENCES `shop_image_type` (`id_type`) -) ENGINE=InnoDB AUTO_INCREMENT=7 DEFAULT CHARSET=utf8mb4 COLLATE=utf8mb4_general_ci; -/*!40101 SET character_set_client = @saved_cs_client */; - --- --- Dumping data for table `shop_image` --- - -LOCK TABLES `shop_image` WRITE; -/*!40000 ALTER TABLE `shop_image` DISABLE KEYS */; -INSERT INTO `shop_image` VALUES (1,1,1,1,1,'/static/images/prod_PB0NUOSEs06ymG.jpg',_binary '',1,'2024-04-28 19:03:07','root@localhost',NULL),(2,1,1,1,2,'/static/images/prod_PB0NUOSEs06ymG.jpg',_binary '',2,'2024-04-28 19:03:07','root@localhost',NULL),(3,1,1,2,3,'/static/images/prod_PB0NUOSEs06ymG.jpg',_binary '',3,'2024-04-28 19:03:07','root@localhost',NULL),(4,1,1,3,4,'/static/images/prod_.jpg',_binary '',4,'2024-04-28 19:03:07','root@localhost',NULL),(5,1,1,4,5,'/static/images/prod_1.jpg',_binary '',5,'2024-04-28 19:03:07','root@localhost',NULL),(6,1,1,5,6,'/static/images/prod_2.jpg',_binary '',6,'2024-04-28 19:03:07','root@localhost',NULL); -/*!40000 ALTER TABLE `shop_image` ENABLE KEYS */; -UNLOCK TABLES; -/*!50003 SET @saved_cs_client = @@character_set_client */ ; -/*!50003 SET @saved_cs_results = @@character_set_results */ ; -/*!50003 SET @saved_col_connection = @@collation_connection */ ; -/*!50003 SET character_set_client = utf8mb4 */ ; -/*!50003 SET character_set_results = utf8mb4 */ ; -/*!50003 SET collation_connection = utf8mb4_general_ci */ ; -/*!50003 SET @saved_sql_mode = @@sql_mode */ ; -/*!50003 SET sql_mode = 'ONLY_FULL_GROUP_BY,STRICT_TRANS_TABLES,NO_ZERO_IN_DATE,NO_ZERO_DATE,ERROR_FOR_DIVISION_BY_ZERO,NO_ENGINE_SUBSTITUTION' */ ; -DELIMITER ;;; -/*!50003 CREATE*/ /*!50017 DEFINER=`root`@`localhost`*/ /*!50003 TRIGGER `before_insert_Shop_Image` BEFORE INSERT ON `shop_image` FOR EACH ROW BEGIN - SET NEW.created_on := IFNULL(NEW.created_on, NOW()); - SET NEW.created_by := IFNULL(NEW.created_by, IFNULL((SELECT id_user FROM Shop_User WHERE firstname = CURRENT_USER()), -1)); -END */;; -DELIMITER ;; -/*!50003 SET sql_mode = @saved_sql_mode */ ; -/*!50003 SET character_set_client = @saved_cs_client */ ; -/*!50003 SET character_set_results = @saved_cs_results */ ; -/*!50003 SET collation_connection = @saved_col_connection */ ; -/*!50003 SET @saved_cs_client = @@character_set_client */ ; -/*!50003 SET @saved_cs_results = @@character_set_results */ ; -/*!50003 SET @saved_col_connection = @@collation_connection */ ; -/*!50003 SET character_set_client = utf8mb4 */ ; -/*!50003 SET character_set_results = utf8mb4 */ ; -/*!50003 SET collation_connection = utf8mb4_general_ci */ ; -/*!50003 SET @saved_sql_mode = @@sql_mode */ ; -/*!50003 SET sql_mode = 'ONLY_FULL_GROUP_BY,STRICT_TRANS_TABLES,NO_ZERO_IN_DATE,NO_ZERO_DATE,ERROR_FOR_DIVISION_BY_ZERO,NO_ENGINE_SUBSTITUTION' */ ; -DELIMITER ;;; -/*!50003 CREATE*/ /*!50017 DEFINER=`root`@`localhost`*/ /*!50003 TRIGGER `before_update_Shop_Image` BEFORE UPDATE ON `shop_image` FOR EACH ROW BEGIN - IF OLD.id_change_set <=> NEW.id_change_set THEN - SIGNAL SQLSTATE '45000' - SET MESSAGE_TEXT = 'New change set ID must be provided.'; - END IF; - IF ISNULL(NEW.id_product) AND ISNULL(NEW.id_permutation) THEN - SIGNAL SQLSTATE '45000' - SET MESSAGE_TEXT = 'Image must NOT have ID for product AND product permutation.'; - END IF; - - INSERT INTO Shop_Image_Audit ( - id_image, - name_field, - value_prev, - value_new, - id_change_set - ) - # Changed id_type_image - SELECT NEW.id_image, 'id_type_image', CONVERT(OLD.id_type_image, CHAR), CONVERT(NEW.id_type_image, CHAR), NEW.id_change_set - WHERE NOT OLD.id_type_image <=> NEW.id_type_image - UNION - # Changed id_type_file - SELECT NEW.id_image, 'id_type_file', CONVERT(OLD.id_type_file, CHAR), CONVERT(NEW.id_type_file, CHAR), NEW.id_change_set - WHERE NOT OLD.id_type_file <=> NEW.id_type_file - UNION - # Changed id_product - SELECT NEW.id_image, 'id_product', CONVERT(OLD.id_product, CHAR), CONVERT(NEW.id_product, CHAR), NEW.id_change_set - WHERE NOT OLD.id_product <=> NEW.id_product - UNION - # Changed id_permutation - SELECT NEW.id_image, 'id_permutation', CONVERT(OLD.id_permutation, CHAR), CONVERT(NEW.id_permutation, CHAR), NEW.id_change_set - WHERE NOT OLD.id_permutation <=> NEW.id_permutation - UNION - # Changed url - SELECT NEW.id_image, 'url', OLD.url, NEW.url, NEW.id_change_set - WHERE NOT OLD.url <=> NEW.url - UNION - # Changed active - SELECT NEW.id_image, 'active', CONVERT(CONVERT(OLD.active, SIGNED), CHAR), CONVERT(CONVERT(NEW.active, SIGNED), CHAR), NEW.id_change_set - WHERE NOT (OLD.active <=> NEW.active) - UNION - # Changed display_order - SELECT NEW.id_image, 'display_order', CONVERT(OLD.display_order, CHAR), CONVERT(NEW.display_order, CHAR), NEW.id_change_set - WHERE NOT (OLD.display_order <=> NEW.display_order) - ; -END */;; -DELIMITER ;; -/*!50003 SET sql_mode = @saved_sql_mode */ ; -/*!50003 SET character_set_client = @saved_cs_client */ ; -/*!50003 SET character_set_results = @saved_cs_results */ ; -/*!50003 SET collation_connection = @saved_col_connection */ ; - --- --- Table structure for table `shop_image_audit` --- - -DROP TABLE IF EXISTS `shop_image_audit`; -/*!40101 SET @saved_cs_client = @@character_set_client */; -/*!50503 SET character_set_client = utf8mb4 */; -CREATE TABLE `shop_image_audit` ( - `id_audit` int NOT NULL AUTO_INCREMENT, - `id_image` int NOT NULL, - `name_field` varchar(50) DEFAULT NULL, - `value_prev` varchar(500) DEFAULT NULL, - `value_new` varchar(500) DEFAULT NULL, - `id_change_set` int NOT NULL, - PRIMARY KEY (`id_audit`), - KEY `FK_Shop_Image_Audit_id_image` (`id_image`), - KEY `FK_Shop_Image_Audit_id_change_set` (`id_change_set`), - CONSTRAINT `FK_Shop_Image_Audit_id_change_set` FOREIGN KEY (`id_change_set`) REFERENCES `shop_product_change_set` (`id_change_set`), - CONSTRAINT `FK_Shop_Image_Audit_id_image` FOREIGN KEY (`id_image`) REFERENCES `shop_image` (`id_image`) -) ENGINE=InnoDB DEFAULT CHARSET=utf8mb4 COLLATE=utf8mb4_general_ci; -/*!40101 SET character_set_client = @saved_cs_client */; - --- --- Dumping data for table `shop_image_audit` --- - -LOCK TABLES `shop_image_audit` WRITE; -/*!40000 ALTER TABLE `shop_image_audit` DISABLE KEYS */; -/*!40000 ALTER TABLE `shop_image_audit` ENABLE KEYS */; -UNLOCK TABLES; - --- --- Table structure for table `shop_image_type` --- - -DROP TABLE IF EXISTS `shop_image_type`; -/*!40101 SET @saved_cs_client = @@character_set_client */; -/*!50503 SET character_set_client = utf8mb4 */; -CREATE TABLE `shop_image_type` ( - `id_type` int NOT NULL AUTO_INCREMENT, - `code` varchar(50) DEFAULT NULL, - `name` varchar(255) DEFAULT NULL, - `name_plural` varchar(256) DEFAULT NULL, - `active` bit(1) NOT NULL DEFAULT b'1', - `display_order` int NOT NULL, - `created_on` datetime DEFAULT NULL, - `created_by` varchar(100) DEFAULT NULL, - `id_change_set` int DEFAULT NULL, - PRIMARY KEY (`id_type`), - KEY `FK_Shop_Image_Type_id_change_set` (`id_change_set`), - CONSTRAINT `FK_Shop_Image_Type_id_change_set` FOREIGN KEY (`id_change_set`) REFERENCES `shop_product_change_set` (`id_change_set`) -) ENGINE=InnoDB AUTO_INCREMENT=4 DEFAULT CHARSET=utf8mb4 COLLATE=utf8mb4_general_ci; -/*!40101 SET character_set_client = @saved_cs_client */; - --- --- Dumping data for table `shop_image_type` --- - -LOCK TABLES `shop_image_type` WRITE; -/*!40000 ALTER TABLE `shop_image_type` DISABLE KEYS */; -INSERT INTO `shop_image_type` VALUES (1,'FULL','Full Quality Image','Full Quality Images',_binary '',1,'2024-04-28 19:03:07','root@localhost',NULL),(2,'LOW','Low Quality Image','Low Quality Images',_binary '',2,'2024-04-28 19:03:07','root@localhost',NULL),(3,'THUMBNAIL','Thumbnail Image','Thumbnail Images',_binary '',3,'2024-04-28 19:03:07','root@localhost',NULL); -/*!40000 ALTER TABLE `shop_image_type` ENABLE KEYS */; -UNLOCK TABLES; -/*!50003 SET @saved_cs_client = @@character_set_client */ ; -/*!50003 SET @saved_cs_results = @@character_set_results */ ; -/*!50003 SET @saved_col_connection = @@collation_connection */ ; -/*!50003 SET character_set_client = utf8mb4 */ ; -/*!50003 SET character_set_results = utf8mb4 */ ; -/*!50003 SET collation_connection = utf8mb4_general_ci */ ; -/*!50003 SET @saved_sql_mode = @@sql_mode */ ; -/*!50003 SET sql_mode = 'ONLY_FULL_GROUP_BY,STRICT_TRANS_TABLES,NO_ZERO_IN_DATE,NO_ZERO_DATE,ERROR_FOR_DIVISION_BY_ZERO,NO_ENGINE_SUBSTITUTION' */ ; -DELIMITER ;;; -/*!50003 CREATE*/ /*!50017 DEFINER=`root`@`localhost`*/ /*!50003 TRIGGER `before_insert_Shop_Image_Type` BEFORE INSERT ON `shop_image_type` FOR EACH ROW BEGIN - SET NEW.created_on := IFNULL(NEW.created_on, NOW()); - SET NEW.created_by := IFNULL(NEW.created_by, IFNULL((SELECT id_user FROM Shop_User WHERE firstname = CURRENT_USER()), -1)); -END */;; -DELIMITER ;; -/*!50003 SET sql_mode = @saved_sql_mode */ ; -/*!50003 SET character_set_client = @saved_cs_client */ ; -/*!50003 SET character_set_results = @saved_cs_results */ ; -/*!50003 SET collation_connection = @saved_col_connection */ ; -/*!50003 SET @saved_cs_client = @@character_set_client */ ; -/*!50003 SET @saved_cs_results = @@character_set_results */ ; -/*!50003 SET @saved_col_connection = @@collation_connection */ ; -/*!50003 SET character_set_client = utf8mb4 */ ; -/*!50003 SET character_set_results = utf8mb4 */ ; -/*!50003 SET collation_connection = utf8mb4_general_ci */ ; -/*!50003 SET @saved_sql_mode = @@sql_mode */ ; -/*!50003 SET sql_mode = 'ONLY_FULL_GROUP_BY,STRICT_TRANS_TABLES,NO_ZERO_IN_DATE,NO_ZERO_DATE,ERROR_FOR_DIVISION_BY_ZERO,NO_ENGINE_SUBSTITUTION' */ ; -DELIMITER ;;; -/*!50003 CREATE*/ /*!50017 DEFINER=`root`@`localhost`*/ /*!50003 TRIGGER `before_update_Shop_Image_Type` BEFORE UPDATE ON `shop_image_type` FOR EACH ROW BEGIN - IF OLD.id_change_set <=> NEW.id_change_set THEN - SIGNAL SQLSTATE '45000' - SET MESSAGE_TEXT = 'New change Set ID must be provided.'; - END IF; - - INSERT INTO Shop_Image_Type_Audit ( - id_type, - name_field, - value_prev, - value_new, - id_change_set - ) - # Changed code - SELECT NEW.id_type, 'code', OLD.code, NEW.code, NEW.id_change_set - WHERE NOT OLD.code <=> NEW.code - UNION - # Changed name - SELECT NEW.id_type, 'name', OLD.name, NEW.name, NEW.id_change_set - WHERE NOT OLD.name <=> NEW.name - UNION - # Changed name_plural - SELECT NEW.id_type, 'name_plural', OLD.name_plural, NEW.name_plural, NEW.id_change_set - WHERE NOT OLD.name_plural <=> NEW.name_plural - UNION - # Changed active - SELECT NEW.id_type, 'active', CONVERT(CONVERT(OLD.active, SIGNED), CHAR), CONVERT(CONVERT(NEW.active, SIGNED), CHAR), NEW.id_change_set - WHERE NOT (OLD.active <=> NEW.active) - UNION - # Changed display_order - SELECT NEW.id_type, 'display_order', CONVERT(OLD.display_order, CHAR), CONVERT(NEW.display_order, CHAR), NEW.id_change_set - WHERE NOT (OLD.display_order <=> NEW.display_order) - ; -END */;; -DELIMITER ;; -/*!50003 SET sql_mode = @saved_sql_mode */ ; -/*!50003 SET character_set_client = @saved_cs_client */ ; -/*!50003 SET character_set_results = @saved_cs_results */ ; -/*!50003 SET collation_connection = @saved_col_connection */ ; - --- --- Table structure for table `shop_image_type_audit` --- - -DROP TABLE IF EXISTS `shop_image_type_audit`; -/*!40101 SET @saved_cs_client = @@character_set_client */; -/*!50503 SET character_set_client = utf8mb4 */; -CREATE TABLE `shop_image_type_audit` ( - `id_audit` int NOT NULL AUTO_INCREMENT, - `id_type` int NOT NULL, - `name_field` varchar(50) DEFAULT NULL, - `value_prev` varchar(500) DEFAULT NULL, - `value_new` varchar(500) DEFAULT NULL, - `id_change_set` int NOT NULL, - PRIMARY KEY (`id_audit`), - KEY `FK_Shop_Image_Type_Audit_id_type` (`id_type`), - KEY `FK_Shop_Image_Type_Audit_id_change_set` (`id_change_set`), - CONSTRAINT `FK_Shop_Image_Type_Audit_id_change_set` FOREIGN KEY (`id_change_set`) REFERENCES `shop_product_change_set` (`id_change_set`), - CONSTRAINT `FK_Shop_Image_Type_Audit_id_type` FOREIGN KEY (`id_type`) REFERENCES `shop_image_type` (`id_type`) ON UPDATE RESTRICT -) ENGINE=InnoDB DEFAULT CHARSET=utf8mb4 COLLATE=utf8mb4_general_ci; -/*!40101 SET character_set_client = @saved_cs_client */; - --- --- Dumping data for table `shop_image_type_audit` --- - -LOCK TABLES `shop_image_type_audit` WRITE; -/*!40000 ALTER TABLE `shop_image_type_audit` DISABLE KEYS */; -/*!40000 ALTER TABLE `shop_image_type_audit` ENABLE KEYS */; -UNLOCK TABLES; - --- --- Table structure for table `shop_msg_error_type` --- - -DROP TABLE IF EXISTS `shop_msg_error_type`; -/*!40101 SET @saved_cs_client = @@character_set_client */; -/*!50503 SET character_set_client = utf8mb4 */; -CREATE TABLE `shop_msg_error_type` ( - `id_type` int NOT NULL AUTO_INCREMENT, - `code` varchar(50) NOT NULL, - `name` varchar(500) NOT NULL, - `description` varchar(1000) DEFAULT NULL, - PRIMARY KEY (`id_type`) -) ENGINE=InnoDB AUTO_INCREMENT=4 DEFAULT CHARSET=utf8mb4 COLLATE=utf8mb4_general_ci; -/*!40101 SET character_set_client = @saved_cs_client */; - --- --- Dumping data for table `shop_msg_error_type` --- - -LOCK TABLES `shop_msg_error_type` WRITE; -/*!40000 ALTER TABLE `shop_msg_error_type` DISABLE KEYS */; -INSERT INTO `shop_msg_error_type` VALUES (1,'BAD_DATA','Invalid data','Rubbish data'),(2,'NO_PERMISSION','No permission','Not authorised'),(3,'PRODUCT_AVAILABILITY','Product not available','Product not available'); -/*!40000 ALTER TABLE `shop_msg_error_type` ENABLE KEYS */; -UNLOCK TABLES; - --- --- Table structure for table `shop_permission` --- - -DROP TABLE IF EXISTS `shop_permission`; -/*!40101 SET @saved_cs_client = @@character_set_client */; -/*!50503 SET character_set_client = utf8mb4 */; -CREATE TABLE `shop_permission` ( - `id_permission` int NOT NULL AUTO_INCREMENT, - `code` varchar(50) DEFAULT NULL, - `name` varchar(255) DEFAULT NULL, - `id_permission_group` int NOT NULL, - `id_access_level_required` int NOT NULL, - `active` bit(1) NOT NULL DEFAULT b'1', - `display_order` int NOT NULL, - `created_on` datetime DEFAULT NULL, - `created_by` varchar(100) DEFAULT NULL, - `id_change_set` int DEFAULT NULL, - PRIMARY KEY (`id_permission`), - KEY `FK_Shop_Permission_id_permission_group` (`id_permission_group`), - KEY `FK_Shop_Permission_id_access_level_required` (`id_access_level_required`), - KEY `FK_Shop_Permission_id_change_set` (`id_change_set`), - CONSTRAINT `FK_Shop_Permission_id_access_level_required` FOREIGN KEY (`id_access_level_required`) REFERENCES `shop_access_level` (`id_access_level`), - CONSTRAINT `FK_Shop_Permission_id_change_set` FOREIGN KEY (`id_change_set`) REFERENCES `shop_user_change_set` (`id_change_set`), - CONSTRAINT `FK_Shop_Permission_id_permission_group` FOREIGN KEY (`id_permission_group`) REFERENCES `shop_permission_group` (`id_group`) ON UPDATE RESTRICT -) ENGINE=InnoDB AUTO_INCREMENT=6 DEFAULT CHARSET=utf8mb4 COLLATE=utf8mb4_general_ci; -/*!40101 SET character_set_client = @saved_cs_client */; - --- --- Dumping data for table `shop_permission` --- - -LOCK TABLES `shop_permission` WRITE; -/*!40000 ALTER TABLE `shop_permission` DISABLE KEYS */; -INSERT INTO `shop_permission` VALUES (1,'HOME','Home Page',2,1,_binary '',1,'2024-04-28 19:03:07','root@localhost',NULL),(2,'STORE_PRODUCT','Store Product Page',3,1,_binary '',2,'2024-04-28 19:03:07','root@localhost',NULL),(3,'STORE_USER','Store User Account Page',4,2,_binary '',3,'2024-04-28 19:03:07','root@localhost',NULL),(4,'STORE_ADMIN','Store Admin Page',1,3,_binary '',4,'2024-04-28 19:03:07','root@localhost',NULL),(5,'CONTACT_US','Contact Us Page',2,1,_binary '',99,'2024-04-28 19:03:07','root@localhost',NULL); -/*!40000 ALTER TABLE `shop_permission` ENABLE KEYS */; -UNLOCK TABLES; -/*!50003 SET @saved_cs_client = @@character_set_client */ ; -/*!50003 SET @saved_cs_results = @@character_set_results */ ; -/*!50003 SET @saved_col_connection = @@collation_connection */ ; -/*!50003 SET character_set_client = utf8mb4 */ ; -/*!50003 SET character_set_results = utf8mb4 */ ; -/*!50003 SET collation_connection = utf8mb4_general_ci */ ; -/*!50003 SET @saved_sql_mode = @@sql_mode */ ; -/*!50003 SET sql_mode = 'ONLY_FULL_GROUP_BY,STRICT_TRANS_TABLES,NO_ZERO_IN_DATE,NO_ZERO_DATE,ERROR_FOR_DIVISION_BY_ZERO,NO_ENGINE_SUBSTITUTION' */ ; -DELIMITER ;;; -/*!50003 CREATE*/ /*!50017 DEFINER=`root`@`localhost`*/ /*!50003 TRIGGER `before_insert_Shop_Permission` BEFORE INSERT ON `shop_permission` FOR EACH ROW BEGIN - IF NEW.created_on <=> NULL THEN - SET NEW.created_on := IFNULL(NEW.created_on, NOW()); - END IF; - IF NEW.created_by <=> NULL THEN - SET NEW.created_by := IFNULL(NEW.created_by, IFNULL((SELECT id_user FROM Shop_User WHERE firstname = CURRENT_USER()), -1)); - END IF; -END */;; -DELIMITER ;; -/*!50003 SET sql_mode = @saved_sql_mode */ ; -/*!50003 SET character_set_client = @saved_cs_client */ ; -/*!50003 SET character_set_results = @saved_cs_results */ ; -/*!50003 SET collation_connection = @saved_col_connection */ ; -/*!50003 SET @saved_cs_client = @@character_set_client */ ; -/*!50003 SET @saved_cs_results = @@character_set_results */ ; -/*!50003 SET @saved_col_connection = @@collation_connection */ ; -/*!50003 SET character_set_client = utf8mb4 */ ; -/*!50003 SET character_set_results = utf8mb4 */ ; -/*!50003 SET collation_connection = utf8mb4_general_ci */ ; -/*!50003 SET @saved_sql_mode = @@sql_mode */ ; -/*!50003 SET sql_mode = 'ONLY_FULL_GROUP_BY,STRICT_TRANS_TABLES,NO_ZERO_IN_DATE,NO_ZERO_DATE,ERROR_FOR_DIVISION_BY_ZERO,NO_ENGINE_SUBSTITUTION' */ ; -DELIMITER ;;; -/*!50003 CREATE*/ /*!50017 DEFINER=`root`@`localhost`*/ /*!50003 TRIGGER `before_update_Shop_Permission` BEFORE UPDATE ON `shop_permission` FOR EACH ROW BEGIN - IF OLD.id_change_set <=> NEW.id_change_set THEN - SIGNAL SQLSTATE '45000' - SET MESSAGE_TEXT = 'New change Set ID must be provided.'; - END IF; - - INSERT INTO Shop_Permission_Audit ( - id_permission, - name_field, - value_prev, - value_new, - id_change_set - ) - # Changed code - SELECT NEW.id_permission, 'code', OLD.code, NEW.code, NEW.id_change_set - WHERE NOT OLD.code <=> NEW.code - UNION - # Changed name - SELECT NEW.id_permission, 'name', OLD.name, NEW.name, NEW.id_change_set - WHERE NOT OLD.name <=> NEW.name - UNION - # Changed id_permission_group - SELECT NEW.id_permission, 'id_permission_group', CONVERT(OLD.id_permission_group, CHAR), CONVERT(NEW.id_permission_group, CHAR), NEW.id_change_set - WHERE NOT OLD.id_permission_group <=> NEW.id_permission_group - UNION - # Changed Id_access_level_required - SELECT NEW.id_permission, 'Id_access_level_required', CONVERT(OLD.Id_access_level_required, CHAR), CONVERT(NEW.Id_access_level_required, CHAR), NEW.id_change_set - WHERE NOT OLD.Id_access_level_required <=> NEW.Id_access_level_required - UNION - # Changed active - SELECT NEW.id_permission, 'active', CONVERT(CONVERT(OLD.active, SIGNED), CHAR), CONVERT(CONVERT(NEW.active, SIGNED), CHAR), NEW.id_change_set - WHERE NOT (OLD.active <=> NEW.active) - UNION - # Changed display_order - SELECT NEW.id_permission, 'display_order', CONVERT(OLD.display_order, CHAR), CONVERT(NEW.display_order, CHAR), NEW.id_change_set - WHERE NOT OLD.display_order <=> NEW.display_order - ; -END */;; -DELIMITER ;; -/*!50003 SET sql_mode = @saved_sql_mode */ ; -/*!50003 SET character_set_client = @saved_cs_client */ ; -/*!50003 SET character_set_results = @saved_cs_results */ ; -/*!50003 SET collation_connection = @saved_col_connection */ ; - --- --- Table structure for table `shop_permission_audit` --- - -DROP TABLE IF EXISTS `shop_permission_audit`; -/*!40101 SET @saved_cs_client = @@character_set_client */; -/*!50503 SET character_set_client = utf8mb4 */; -CREATE TABLE `shop_permission_audit` ( - `id_audit` int NOT NULL AUTO_INCREMENT, - `id_permission` int NOT NULL, - `name_field` varchar(50) DEFAULT NULL, - `value_prev` varchar(500) DEFAULT NULL, - `value_new` varchar(500) DEFAULT NULL, - `id_change_set` int NOT NULL, - PRIMARY KEY (`id_audit`), - KEY `FK_Shop_Permission_Audit_id_permission` (`id_permission`), - KEY `FK_Shop_Permission_Audit_id_change_set` (`id_change_set`), - CONSTRAINT `FK_Shop_Permission_Audit_id_change_set` FOREIGN KEY (`id_change_set`) REFERENCES `shop_user_change_set` (`id_change_set`) ON UPDATE RESTRICT, - CONSTRAINT `FK_Shop_Permission_Audit_id_permission` FOREIGN KEY (`id_permission`) REFERENCES `shop_permission` (`id_permission`) ON UPDATE RESTRICT -) ENGINE=InnoDB DEFAULT CHARSET=utf8mb4 COLLATE=utf8mb4_general_ci; -/*!40101 SET character_set_client = @saved_cs_client */; - --- --- Dumping data for table `shop_permission_audit` --- - -LOCK TABLES `shop_permission_audit` WRITE; -/*!40000 ALTER TABLE `shop_permission_audit` DISABLE KEYS */; -/*!40000 ALTER TABLE `shop_permission_audit` ENABLE KEYS */; -UNLOCK TABLES; - --- --- Table structure for table `shop_permission_group` --- - -DROP TABLE IF EXISTS `shop_permission_group`; -/*!40101 SET @saved_cs_client = @@character_set_client */; -/*!50503 SET character_set_client = utf8mb4 */; -CREATE TABLE `shop_permission_group` ( - `id_group` int NOT NULL AUTO_INCREMENT, - `code` varchar(50) DEFAULT NULL, - `name` varchar(255) DEFAULT NULL, - `active` bit(1) NOT NULL DEFAULT b'1', - `display_order` int NOT NULL, - `created_on` datetime DEFAULT NULL, - `created_by` varchar(100) DEFAULT NULL, - `id_change_set` int DEFAULT NULL, - PRIMARY KEY (`id_group`), - KEY `FK_Shop_Permission_Group_id_change_set` (`id_change_set`), - CONSTRAINT `FK_Shop_Permission_Group_id_change_set` FOREIGN KEY (`id_change_set`) REFERENCES `shop_user_change_set` (`id_change_set`) ON UPDATE RESTRICT -) ENGINE=InnoDB AUTO_INCREMENT=5 DEFAULT CHARSET=utf8mb4 COLLATE=utf8mb4_general_ci; -/*!40101 SET character_set_client = @saved_cs_client */; - --- --- Dumping data for table `shop_permission_group` --- - -LOCK TABLES `shop_permission_group` WRITE; -/*!40000 ALTER TABLE `shop_permission_group` DISABLE KEYS */; -INSERT INTO `shop_permission_group` VALUES (1,'ADMIN','Website Admin',_binary '',0,'2024-04-28 19:03:07','root@localhost',NULL),(2,'HOME','Home, Contact Us, and other public information',_binary '',1,'2024-04-28 19:03:07','root@localhost',NULL),(3,'PRODUCT','Store Products',_binary '',2,'2024-04-28 19:03:07','root@localhost',NULL),(4,'USER','Store User',_binary '',3,'2024-04-28 19:03:07','root@localhost',NULL); -/*!40000 ALTER TABLE `shop_permission_group` ENABLE KEYS */; -UNLOCK TABLES; -/*!50003 SET @saved_cs_client = @@character_set_client */ ; -/*!50003 SET @saved_cs_results = @@character_set_results */ ; -/*!50003 SET @saved_col_connection = @@collation_connection */ ; -/*!50003 SET character_set_client = utf8mb4 */ ; -/*!50003 SET character_set_results = utf8mb4 */ ; -/*!50003 SET collation_connection = utf8mb4_general_ci */ ; -/*!50003 SET @saved_sql_mode = @@sql_mode */ ; -/*!50003 SET sql_mode = 'ONLY_FULL_GROUP_BY,STRICT_TRANS_TABLES,NO_ZERO_IN_DATE,NO_ZERO_DATE,ERROR_FOR_DIVISION_BY_ZERO,NO_ENGINE_SUBSTITUTION' */ ; -DELIMITER ;;; -/*!50003 CREATE*/ /*!50017 DEFINER=`root`@`localhost`*/ /*!50003 TRIGGER `before_insert_Shop_Permission_Group` BEFORE INSERT ON `shop_permission_group` FOR EACH ROW BEGIN - IF NEW.created_on <=> NULL THEN - SET NEW.created_on := IFNULL(NEW.created_on, NOW()); - END IF; - IF NEW.created_by <=> NULL THEN - SET NEW.created_by := IFNULL(NEW.created_by, IFNULL((SELECT id_user FROM Shop_User WHERE firstname = CURRENT_USER()), -1)); - END IF; -END */;; -DELIMITER ;; -/*!50003 SET sql_mode = @saved_sql_mode */ ; -/*!50003 SET character_set_client = @saved_cs_client */ ; -/*!50003 SET character_set_results = @saved_cs_results */ ; -/*!50003 SET collation_connection = @saved_col_connection */ ; -/*!50003 SET @saved_cs_client = @@character_set_client */ ; -/*!50003 SET @saved_cs_results = @@character_set_results */ ; -/*!50003 SET @saved_col_connection = @@collation_connection */ ; -/*!50003 SET character_set_client = utf8mb4 */ ; -/*!50003 SET character_set_results = utf8mb4 */ ; -/*!50003 SET collation_connection = utf8mb4_general_ci */ ; -/*!50003 SET @saved_sql_mode = @@sql_mode */ ; -/*!50003 SET sql_mode = 'ONLY_FULL_GROUP_BY,STRICT_TRANS_TABLES,NO_ZERO_IN_DATE,NO_ZERO_DATE,ERROR_FOR_DIVISION_BY_ZERO,NO_ENGINE_SUBSTITUTION' */ ; -DELIMITER ;;; -/*!50003 CREATE*/ /*!50017 DEFINER=`root`@`localhost`*/ /*!50003 TRIGGER `before_update_Shop_Permission_Group` BEFORE UPDATE ON `shop_permission_group` FOR EACH ROW BEGIN - IF OLD.id_change_set <=> NEW.id_change_set THEN - SIGNAL SQLSTATE '45000' - SET MESSAGE_TEXT = 'New change Set ID must be provided.'; - END IF; - - INSERT INTO Shop_Permission_Group_Audit ( - id_group, - name_field, - value_prev, - value_new, - id_change_set - ) - # Changed code - SELECT NEW.id_group, 'code', OLD.code, NEW.code, NEW.id_change_set - WHERE NOT OLD.code <=> NEW.code - UNION - # Changed name - SELECT NEW.id_group, 'name', OLD.name, NEW.name, NEW.id_change_set - WHERE NOT OLD.name <=> NEW.name - UNION - # Changed active - SELECT NEW.id_group, 'active', CONVERT(CONVERT(OLD.active, SIGNED), CHAR), CONVERT(CONVERT(NEW.active, SIGNED), CHAR), NEW.id_change_set - WHERE NOT (OLD.active <=> NEW.active) - UNION - # Changed display_order - SELECT NEW.id_group, 'display_order', CONVERT(OLD.display_order, CHAR), CONVERT(NEW.display_order, CHAR), NEW.id_change_set - WHERE NOT OLD.display_order <=> NEW.display_order - ; -END */;; -DELIMITER ;; -/*!50003 SET sql_mode = @saved_sql_mode */ ; -/*!50003 SET character_set_client = @saved_cs_client */ ; -/*!50003 SET character_set_results = @saved_cs_results */ ; -/*!50003 SET collation_connection = @saved_col_connection */ ; - --- --- Table structure for table `shop_permission_group_audit` --- - -DROP TABLE IF EXISTS `shop_permission_group_audit`; -/*!40101 SET @saved_cs_client = @@character_set_client */; -/*!50503 SET character_set_client = utf8mb4 */; -CREATE TABLE `shop_permission_group_audit` ( - `id_audit` int NOT NULL AUTO_INCREMENT, - `id_group` int NOT NULL, - `name_field` varchar(50) DEFAULT NULL, - `value_prev` varchar(500) DEFAULT NULL, - `value_new` varchar(500) DEFAULT NULL, - `id_change_set` int NOT NULL, - PRIMARY KEY (`id_audit`), - KEY `FK_Shop_Permission_Group_Audit_id_group` (`id_group`), - KEY `FK_Shop_Permission_Group_Audit_id_change_set` (`id_change_set`), - CONSTRAINT `FK_Shop_Permission_Group_Audit_id_change_set` FOREIGN KEY (`id_change_set`) REFERENCES `shop_user_change_set` (`id_change_set`) ON UPDATE RESTRICT, - CONSTRAINT `FK_Shop_Permission_Group_Audit_id_group` FOREIGN KEY (`id_group`) REFERENCES `shop_permission_group` (`id_group`) ON UPDATE RESTRICT -) ENGINE=InnoDB DEFAULT CHARSET=utf8mb4 COLLATE=utf8mb4_general_ci; -/*!40101 SET character_set_client = @saved_cs_client */; - --- --- Dumping data for table `shop_permission_group_audit` --- - -LOCK TABLES `shop_permission_group_audit` WRITE; -/*!40000 ALTER TABLE `shop_permission_group_audit` DISABLE KEYS */; -/*!40000 ALTER TABLE `shop_permission_group_audit` ENABLE KEYS */; -UNLOCK TABLES; - --- --- Table structure for table `shop_product` --- - -DROP TABLE IF EXISTS `shop_product`; -/*!40101 SET @saved_cs_client = @@character_set_client */; -/*!50503 SET character_set_client = utf8mb4 */; -CREATE TABLE `shop_product` ( - `id_product` int NOT NULL AUTO_INCREMENT, - `name` varchar(255) NOT NULL, - `id_category` int NOT NULL, - `has_variations` bit(1) NOT NULL, - `id_access_level_required` int NOT NULL, - `active` bit(1) NOT NULL DEFAULT b'1', - `display_order` int NOT NULL, - `created_on` datetime DEFAULT NULL, - `created_by` varchar(100) DEFAULT NULL, - `id_change_set` int DEFAULT NULL, - PRIMARY KEY (`id_product`), - KEY `FK_Shop_Product_id_access_level_required` (`id_access_level_required`), - KEY `FK_Shop_Product_id_change_set` (`id_change_set`), - CONSTRAINT `FK_Shop_Product_id_access_level_required` FOREIGN KEY (`id_access_level_required`) REFERENCES `shop_access_level` (`id_access_level`), - CONSTRAINT `FK_Shop_Product_id_change_set` FOREIGN KEY (`id_change_set`) REFERENCES `shop_product_change_set` (`id_change_set`) -) ENGINE=InnoDB AUTO_INCREMENT=6 DEFAULT CHARSET=utf8mb4 COLLATE=utf8mb4_general_ci; -/*!40101 SET character_set_client = @saved_cs_client */; - --- --- Dumping data for table `shop_product` --- - -LOCK TABLES `shop_product` WRITE; -/*!40000 ALTER TABLE `shop_product` DISABLE KEYS */; -INSERT INTO `shop_product` VALUES (1,'Braille Keyboard Translator',1,_binary '',3,_binary '',1,'2024-04-28 19:03:07','root@localhost',NULL),(2,'Test product 1',2,_binary '\0',3,_binary '',2,'2024-04-28 19:03:07','root@localhost',NULL),(3,'Phone',3,_binary '\0',1,_binary '',3,'2024-04-28 19:03:07','root@localhost',NULL),(4,'Laptop',3,_binary '\0',1,_binary '',4,'2024-04-28 19:03:07','root@localhost',NULL),(5,'Smart Watch',3,_binary '\0',1,_binary '',5,'2024-04-28 19:03:07','root@localhost',NULL); -/*!40000 ALTER TABLE `shop_product` ENABLE KEYS */; -UNLOCK TABLES; -/*!50003 SET @saved_cs_client = @@character_set_client */ ; -/*!50003 SET @saved_cs_results = @@character_set_results */ ; -/*!50003 SET @saved_col_connection = @@collation_connection */ ; -/*!50003 SET character_set_client = utf8mb4 */ ; -/*!50003 SET character_set_results = utf8mb4 */ ; -/*!50003 SET collation_connection = utf8mb4_general_ci */ ; -/*!50003 SET @saved_sql_mode = @@sql_mode */ ; -/*!50003 SET sql_mode = 'ONLY_FULL_GROUP_BY,STRICT_TRANS_TABLES,NO_ZERO_IN_DATE,NO_ZERO_DATE,ERROR_FOR_DIVISION_BY_ZERO,NO_ENGINE_SUBSTITUTION' */ ; -DELIMITER ;;; -/*!50003 CREATE*/ /*!50017 DEFINER=`root`@`localhost`*/ /*!50003 TRIGGER `before_insert_Shop_Product` BEFORE INSERT ON `shop_product` FOR EACH ROW BEGIN - SET NEW.created_on := IFNULL(NEW.created_on, NOW()); - SET NEW.created_by := IFNULL(NEW.created_by, IFNULL((SELECT id_user FROM Shop_User WHERE firstname = CURRENT_USER()), -1)); -END */;; -DELIMITER ;; -/*!50003 SET sql_mode = @saved_sql_mode */ ; -/*!50003 SET character_set_client = @saved_cs_client */ ; -/*!50003 SET character_set_results = @saved_cs_results */ ; -/*!50003 SET collation_connection = @saved_col_connection */ ; -/*!50003 SET @saved_cs_client = @@character_set_client */ ; -/*!50003 SET @saved_cs_results = @@character_set_results */ ; -/*!50003 SET @saved_col_connection = @@collation_connection */ ; -/*!50003 SET character_set_client = utf8mb4 */ ; -/*!50003 SET character_set_results = utf8mb4 */ ; -/*!50003 SET collation_connection = utf8mb4_general_ci */ ; -/*!50003 SET @saved_sql_mode = @@sql_mode */ ; -/*!50003 SET sql_mode = 'ONLY_FULL_GROUP_BY,STRICT_TRANS_TABLES,NO_ZERO_IN_DATE,NO_ZERO_DATE,ERROR_FOR_DIVISION_BY_ZERO,NO_ENGINE_SUBSTITUTION' */ ; -DELIMITER ;;; -/*!50003 CREATE*/ /*!50017 DEFINER=`root`@`localhost`*/ /*!50003 TRIGGER `before_update_Shop_Product` BEFORE UPDATE ON `shop_product` FOR EACH ROW BEGIN - IF OLD.id_change_set <=> NEW.id_change_set THEN - SIGNAL SQLSTATE '45000' - SET MESSAGE_TEXT = 'New change Set ID must be provided.'; - END IF; - /* - IF NOT NEW.has_variations THEN - IF ISNULL(NEW.price_GBP_full) THEN - SIGNAL SQLSTATE '45000' - SET MESSAGE_TEXT = 'Product must have price or variations (with prices).'; - END IF; - IF ISNULL(NEW.price_GBP_min) THEN - SIGNAL SQLSTATE '45000' - SET MESSAGE_TEXT = 'Product must have minimum price or variations (with prices).'; - END IF; - IF ISNULL(NEW.latency_manuf) THEN - SIGNAL SQLSTATE '45000' - SET MESSAGE_TEXT = 'Product must have manufacturing latency or variations (with manufacturing latencies).'; - END IF; - IF ISNULL(NEW.quantity_min) THEN - SIGNAL SQLSTATE '45000' - SET MESSAGE_TEXT = 'Product must have minimum quantity or variations (with minimum quantities).'; - END IF; - IF ISNULL(NEW.quantity_max) THEN - SIGNAL SQLSTATE '45000' - SET MESSAGE_TEXT = 'Product must have maximum quantity or variations (with maximum quantities).'; - END IF; - IF ISNULL(NEW.quantity_step) THEN - SIGNAL SQLSTATE '45000' - SET MESSAGE_TEXT = 'Product must have increment of quantity or variations (with increments of quantities).'; - END IF; - IF ISNULL(NEW.quantity_stock) THEN - SIGNAL SQLSTATE '45000' - SET MESSAGE_TEXT = 'Product must have stock quantity or variations (with stock quantities).'; - END IF; - IF ISNULL(NEW.is_subscription) THEN - SIGNAL SQLSTATE '45000' - SET MESSAGE_TEXT = 'Product must have subscription status or variations (with subscription statuses).'; - END IF; - IF ISNULL(NEW.id_unit_measurement_interval_recurrence) THEN - SIGNAL SQLSTATE '45000' - SET MESSAGE_TEXT = 'Product must have recurrence interval or variations (with recurrence intervals).'; - END IF; - IF ISNULL(NEW.count_interval_recurrence) THEN - SIGNAL SQLSTATE '45000' - SET MESSAGE_TEXT = 'Product must have recurrence interval count or variations (with recurrence interval counts).'; - END IF; - END IF; - */ - - INSERT INTO Shop_Product_Audit ( - id_product, - name_field, - value_prev, - value_new, - id_change_set - ) - # Changed name - SELECT NEW.id_product, 'name', OLD.name, NEW.name, NEW.id_change_set - WHERE NOT OLD.name <=> NEW.name - /* - UNION - # Changed description - SELECT NEW.id_product, 'description', OLD.description, NEW.description, NEW.id_change_set - WHERE NOT OLD.description <=> NEW.description - UNION - # Changed price_GBP_full - SELECT NEW.id_product, 'price_GBP_full', CONVERT(OLD.price_GBP_full, CHAR), CONVERT(NEW.price_GBP_full, CHAR), NEW.id_change_set - WHERE NOT OLD.price_GBP_full <=> NEW.price_GBP_full - UNION - # Changed price_GBP_min - SELECT NEW.id_product, 'price_GBP_min', CONVERT(OLD.price_GBP_min, CHAR), CONVERT(NEW.price_GBP_min, CHAR), NEW.id_change_set - WHERE NOT OLD.price_GBP_min <=> NEW.price_GBP_min - UNION - # Changed has_variations - SELECT NEW.id_product, 'has_variations', CONVERT(CONVERT(NEW.has_variations, SIGNED), CHAR), CONVERT(CONVERT(NEW.has_variations, SIGNED), CHAR), NEW.id_change_set - WHERE NOT OLD.has_variations <=> NEW.has_variations - UNION - /* - # Changed discount - SELECT NEW.id_product, 'discount', CONVERT(OLD.discount, CHAR), CONVERT(NEW.discount, CHAR), NEW.id_change_set - WHERE NOT OLD.discount <=> NEW.discount - */ - UNION - # Changed id_category - SELECT NEW.id_product, 'id_category', CONVERT(OLD.id_category, CHAR), CONVERT(NEW.id_category, CHAR), NEW.id_change_set - WHERE NOT OLD.id_category <=> NEW.id_category - /* - UNION - # Changed latency_manuf - SELECT NEW.id_product, 'latency_manuf', CONVERT(OLD.latency_manuf, CHAR), CONVERT(NEW.latency_manuf, CHAR), NEW.id_change_set - WHERE NOT OLD.latency_manuf <=> NEW.latency_manuf - UNION - # Changed quantity_min - SELECT NEW.id_product, 'quantity_min', CONVERT(OLD.quantity_min, CHAR), CONVERT(NEW.quantity_min, CHAR), NEW.id_change_set - WHERE NOT OLD.quantity_min <=> NEW.quantity_min - UNION - # Changed quantity_max - SELECT NEW.id_product, 'quantity_max', CONVERT(OLD.quantity_max, CHAR), CONVERT(NEW.quantity_max, CHAR), NEW.id_change_set - WHERE NOT OLD.quantity_max <=> NEW.quantity_max - UNION - # Changed quantity_step - SELECT NEW.id_product, 'quantity_step', CONVERT(OLD.quantity_step, CHAR), CONVERT(NEW.quantity_step, CHAR), NEW.id_change_set - WHERE NOT OLD.quantity_step <=> NEW.quantity_step - UNION - # Changed quantity_stock - SELECT NEW.id_product, 'quantity_stock', CONVERT(OLD.quantity_stock, CHAR), CONVERT(NEW.quantity_stock, CHAR), NEW.id_change_set - WHERE NOT OLD.quantity_stock <=> NEW.quantity_stock - UNION - # Changed is_subscription - SELECT NEW.id_product, 'is_subscription', CONVERT(CONVERT(OLD.is_subscription, SIGNED), CHAR), CONVERT(CONVERT(NEW.is_subscription, SIGNED), CHAR), NEW.id_change_set - WHERE NOT OLD.is_subscription <=> NEW.is_subscription - UNION - # Changed id_unit_measurement_interval_recurrence - SELECT NEW.id_product, 'id_unit_measurement_interval_recurrence', CONVERT(OLD.id_unit_measurement_interval_recurrence, CHAR), CONVERT(NEW.id_unit_measurement_interval_recurrence, CHAR), NEW.id_change_set - WHERE NOT OLD.id_unit_measurement_interval_recurrence <=> NEW.id_unit_measurement_interval_recurrence - UNION - # Changed count_interval_recurrence - SELECT NEW.id_product, 'count_interval_recurrence', CONVERT(OLD.count_interval_recurrence, CHAR), CONVERT(NEW.count_interval_recurrence, CHAR), NEW.id_change_set - WHERE NOT OLD.count_interval_recurrence <=> NEW.count_interval_recurrence - UNION - # Changed id_access_level_required - SELECT NEW.id_product, 'id_access_level_required', CONVERT(OLD.id_access_level_required, CHAR), CONVERT(NEW.id_access_level_required, CHAR), NEW.id_change_set - WHERE NOT OLD.id_access_level_required <=> NEW.id_access_level_required - UNION - # Changed id_stripe_product - SELECT NEW.id_product, 'id_stripe_product', OLD.id_stripe_product, NEW.id_stripe_product, NEW.id_change_set - WHERE NOT OLD.id_stripe_product <=> NEW.id_stripe_product - /* - UNION - # Changed id_stripe_price - SELECT NEW.id_product, 'id_stripe_price', OLD.id_stripe_price, NEW.id_stripe_price, NEW.id_change_set - WHERE NOT OLD.id_stripe_price <=> NEW.id_stripe_price - */ - UNION - # Changed active - SELECT NEW.id_product, 'active', CONVERT(CONVERT(OLD.active, SIGNED), CHAR), CONVERT(CONVERT(NEW.active, SIGNED), CHAR), NEW.id_change_set - WHERE NOT (OLD.active <=> NEW.active) - UNION - # Changed display_order - SELECT NEW.id_product, 'display_order', CONVERT(OLD.display_order, CHAR), CONVERT(NEW.display_order, CHAR), NEW.id_change_set - WHERE NOT OLD.display_order <=> NEW.display_order - ; -END */;; -DELIMITER ;; -/*!50003 SET sql_mode = @saved_sql_mode */ ; -/*!50003 SET character_set_client = @saved_cs_client */ ; -/*!50003 SET character_set_results = @saved_cs_results */ ; -/*!50003 SET collation_connection = @saved_col_connection */ ; - --- --- Table structure for table `shop_product_audit` --- - -DROP TABLE IF EXISTS `shop_product_audit`; -/*!40101 SET @saved_cs_client = @@character_set_client */; -/*!50503 SET character_set_client = utf8mb4 */; -CREATE TABLE `shop_product_audit` ( - `id_audit` int NOT NULL AUTO_INCREMENT, - `id_product` int NOT NULL, - `name_field` varchar(50) DEFAULT NULL, - `value_prev` varchar(500) DEFAULT NULL, - `value_new` varchar(500) DEFAULT NULL, - `id_change_set` int NOT NULL, - PRIMARY KEY (`id_audit`), - KEY `FK_Shop_Product_Audit_id_product` (`id_product`), - KEY `FK_Shop_Product_Audit_id_change_set` (`id_change_set`), - CONSTRAINT `FK_Shop_Product_Audit_id_change_set` FOREIGN KEY (`id_change_set`) REFERENCES `shop_product_change_set` (`id_change_set`), - CONSTRAINT `FK_Shop_Product_Audit_id_product` FOREIGN KEY (`id_product`) REFERENCES `shop_product` (`id_product`) ON UPDATE RESTRICT -) ENGINE=InnoDB DEFAULT CHARSET=utf8mb4 COLLATE=utf8mb4_general_ci; -/*!40101 SET character_set_client = @saved_cs_client */; - --- --- Dumping data for table `shop_product_audit` --- - -LOCK TABLES `shop_product_audit` WRITE; -/*!40000 ALTER TABLE `shop_product_audit` DISABLE KEYS */; -/*!40000 ALTER TABLE `shop_product_audit` ENABLE KEYS */; -UNLOCK TABLES; - --- --- Table structure for table `shop_product_change_set` --- - -DROP TABLE IF EXISTS `shop_product_change_set`; -/*!40101 SET @saved_cs_client = @@character_set_client */; -/*!50503 SET character_set_client = utf8mb4 */; -CREATE TABLE `shop_product_change_set` ( - `id_change_set` int NOT NULL AUTO_INCREMENT, - `comment` varchar(500) DEFAULT NULL, - `updated_last_on` datetime DEFAULT NULL, - `updated_last_by` varchar(100) DEFAULT NULL, - PRIMARY KEY (`id_change_set`) -) ENGINE=InnoDB DEFAULT CHARSET=utf8mb4 COLLATE=utf8mb4_general_ci; -/*!40101 SET character_set_client = @saved_cs_client */; - --- --- Dumping data for table `shop_product_change_set` --- - -LOCK TABLES `shop_product_change_set` WRITE; -/*!40000 ALTER TABLE `shop_product_change_set` DISABLE KEYS */; -/*!40000 ALTER TABLE `shop_product_change_set` ENABLE KEYS */; -UNLOCK TABLES; -/*!50003 SET @saved_cs_client = @@character_set_client */ ; -/*!50003 SET @saved_cs_results = @@character_set_results */ ; -/*!50003 SET @saved_col_connection = @@collation_connection */ ; -/*!50003 SET character_set_client = utf8mb4 */ ; -/*!50003 SET character_set_results = utf8mb4 */ ; -/*!50003 SET collation_connection = utf8mb4_general_ci */ ; -/*!50003 SET @saved_sql_mode = @@sql_mode */ ; -/*!50003 SET sql_mode = 'ONLY_FULL_GROUP_BY,STRICT_TRANS_TABLES,NO_ZERO_IN_DATE,NO_ZERO_DATE,ERROR_FOR_DIVISION_BY_ZERO,NO_ENGINE_SUBSTITUTION' */ ; -DELIMITER ;;; -/*!50003 CREATE*/ /*!50017 DEFINER=`root`@`localhost`*/ /*!50003 TRIGGER `before_insert_Shop_Product_Change_Set` BEFORE INSERT ON `shop_product_change_set` FOR EACH ROW BEGIN - IF NEW.updated_last_on <=> NULL THEN - SET NEW.updated_last_on = NOW(); - END IF; - IF NEW.updated_last_by <=> NULL THEN - SET NEW.updated_last_by = CURRENT_USER(); - END IF; -END */;; -DELIMITER ;; -/*!50003 SET sql_mode = @saved_sql_mode */ ; -/*!50003 SET character_set_client = @saved_cs_client */ ; -/*!50003 SET character_set_results = @saved_cs_results */ ; -/*!50003 SET collation_connection = @saved_col_connection */ ; - --- --- Table structure for table `shop_product_currency_link` --- - -DROP TABLE IF EXISTS `shop_product_currency_link`; -/*!40101 SET @saved_cs_client = @@character_set_client */; -/*!50503 SET character_set_client = utf8mb4 */; -CREATE TABLE `shop_product_currency_link` ( - `id_link` int NOT NULL AUTO_INCREMENT, - `id_product` int NOT NULL, - `id_permutation` int DEFAULT NULL, - `id_currency` int NOT NULL, - `id_region_purchase` int NOT NULL, - `price_local_VAT_incl` float DEFAULT NULL, - `price_local_VAT_excl` float DEFAULT NULL, - `id_stripe_price` varchar(200) DEFAULT NULL, - `active` bit(1) NOT NULL DEFAULT b'1', - `created_on` datetime DEFAULT NULL, - `created_by` varchar(100) DEFAULT NULL, - `id_change_set` int DEFAULT NULL, - PRIMARY KEY (`id_link`), - KEY `FK_Shop_Product_Currency_Link_id_product` (`id_product`), - KEY `FK_Shop_Product_Currency_Link_id_permutation` (`id_permutation`), - KEY `FK_Shop_Product_Currency_Link_id_currency` (`id_currency`), - KEY `FK_Shop_Product_Currency_Link_id_region_purchase` (`id_region_purchase`), - KEY `FK_Shop_Product_Currency_Link_id_change_set` (`id_change_set`), - CONSTRAINT `FK_Shop_Product_Currency_Link_id_change_set` FOREIGN KEY (`id_change_set`) REFERENCES `shop_product_change_set` (`id_change_set`), - CONSTRAINT `FK_Shop_Product_Currency_Link_id_currency` FOREIGN KEY (`id_currency`) REFERENCES `shop_currency` (`id_currency`) ON UPDATE RESTRICT, - CONSTRAINT `FK_Shop_Product_Currency_Link_id_permutation` FOREIGN KEY (`id_permutation`) REFERENCES `shop_product_permutation` (`id_permutation`) ON UPDATE RESTRICT, - CONSTRAINT `FK_Shop_Product_Currency_Link_id_product` FOREIGN KEY (`id_product`) REFERENCES `shop_product` (`id_product`) ON UPDATE RESTRICT, - CONSTRAINT `FK_Shop_Product_Currency_Link_id_region_purchase` FOREIGN KEY (`id_region_purchase`) REFERENCES `shop_region` (`id_region`) ON UPDATE RESTRICT -) ENGINE=InnoDB DEFAULT CHARSET=utf8mb4 COLLATE=utf8mb4_general_ci; -/*!40101 SET character_set_client = @saved_cs_client */; - --- --- Dumping data for table `shop_product_currency_link` --- - -LOCK TABLES `shop_product_currency_link` WRITE; -/*!40000 ALTER TABLE `shop_product_currency_link` DISABLE KEYS */; -/*!40000 ALTER TABLE `shop_product_currency_link` ENABLE KEYS */; -UNLOCK TABLES; -/*!50003 SET @saved_cs_client = @@character_set_client */ ; -/*!50003 SET @saved_cs_results = @@character_set_results */ ; -/*!50003 SET @saved_col_connection = @@collation_connection */ ; -/*!50003 SET character_set_client = utf8mb4 */ ; -/*!50003 SET character_set_results = utf8mb4 */ ; -/*!50003 SET collation_connection = utf8mb4_general_ci */ ; -/*!50003 SET @saved_sql_mode = @@sql_mode */ ; -/*!50003 SET sql_mode = 'ONLY_FULL_GROUP_BY,STRICT_TRANS_TABLES,NO_ZERO_IN_DATE,NO_ZERO_DATE,ERROR_FOR_DIVISION_BY_ZERO,NO_ENGINE_SUBSTITUTION' */ ; -DELIMITER ;;; -/*!50003 CREATE*/ /*!50017 DEFINER=`root`@`localhost`*/ /*!50003 TRIGGER `before_insert_Shop_Product_Currency_Link` BEFORE INSERT ON `shop_product_currency_link` FOR EACH ROW BEGIN - IF NEW.created_on <=> NULL THEN - SET NEW.created_on := IFNULL(NEW.created_on, NOW()); - END IF; - IF NEW.created_by <=> NULL THEN - SET NEW.created_by := IFNULL(NEW.created_by, IFNULL((SELECT id_user FROM Shop_User WHERE firstname = CURRENT_USER()), -1)); - END IF; - /* - SET NEW.price_local = ( - SELECT PP.price_GBP_full * C.factor_from_GBP - FROM Shop_Product_Permutation PP - INNER JOIN Shop_Product P ON PP.id_product = P.id_product - INNER JOIN Shop_Currency C ON NEW.id_currency = C.id_currency - WHERE NEW.id_product = P.id_product - LIMIT 1 - ); - */ -END */;; -DELIMITER ;; -/*!50003 SET sql_mode = @saved_sql_mode */ ; -/*!50003 SET character_set_client = @saved_cs_client */ ; -/*!50003 SET character_set_results = @saved_cs_results */ ; -/*!50003 SET collation_connection = @saved_col_connection */ ; -/*!50003 SET @saved_cs_client = @@character_set_client */ ; -/*!50003 SET @saved_cs_results = @@character_set_results */ ; -/*!50003 SET @saved_col_connection = @@collation_connection */ ; -/*!50003 SET character_set_client = utf8mb4 */ ; -/*!50003 SET character_set_results = utf8mb4 */ ; -/*!50003 SET collation_connection = utf8mb4_general_ci */ ; -/*!50003 SET @saved_sql_mode = @@sql_mode */ ; -/*!50003 SET sql_mode = 'ONLY_FULL_GROUP_BY,STRICT_TRANS_TABLES,NO_ZERO_IN_DATE,NO_ZERO_DATE,ERROR_FOR_DIVISION_BY_ZERO,NO_ENGINE_SUBSTITUTION' */ ; -DELIMITER ;;; -/*!50003 CREATE*/ /*!50017 DEFINER=`root`@`localhost`*/ /*!50003 TRIGGER `before_update_Shop_Product_Currency_Link` BEFORE UPDATE ON `shop_product_currency_link` FOR EACH ROW BEGIN - IF OLD.id_change_set <=> NEW.id_change_set THEN - SIGNAL SQLSTATE '45000' - SET MESSAGE_TEXT = 'New change Set ID must be provided.'; - END IF; - - /* - SET NEW.price_local = ( - SELECT P.price_GBP_full * C.factor_from_GBP - FROM Shop_Product P - INNER JOIN Shop_Currency C ON NEW.id_currency = C.id_currency - WHERE NEW.id_product = P.id_product - LIMIT 1 - ); - */ - - INSERT INTO Shop_Product_Currency_Link_Audit ( - id_link, - name_field, - value_prev, - value_new, - id_change_set - ) - /* - # Changed id_product - SELECT NEW.id_link, 'id_product', CONVERT(OLD.id_product, CHAR), CONVERT(NEW.id_product, CHAR), NEW.id_change_set - WHERE NOT OLD.id_product <=> NEW.id_product - UNION - # Changed id_currency - SELECT NEW.id_link, 'id_currency', CONVERT(OLD.id_currency, CHAR), CONVERT(NEW.id_currency, CHAR), NEW.id_change_set - WHERE NOT OLD.id_currency <=> NEW.id_currency - UNION - # Changed price_local - SELECT NEW.id_link, 'price_local', OLD.price_local, NEW.price_local, NEW.id_change_set - WHERE NOT OLD.price_local <=> NEW.price_local - UNION - */ - # Changed price_local_VAT_incl - SELECT NEW.id_link, 'price_local_VAT_incl', OLD.price_local_VAT_incl, NEW.price_local_VAT_incl, NEW.id_change_set - WHERE NOT OLD.price_local_VAT_incl <=> NEW.price_local_VAT_incl - UNION - # Changed price_local_VAT_excl - SELECT NEW.id_link, 'price_local_VAT_excl', OLD.price_local_VAT_excl, NEW.price_local_VAT_excl, NEW.id_change_set - WHERE NOT OLD.price_local_VAT_excl <=> NEW.price_local_VAT_excl - UNION - # Changed id_stripe_price - SELECT NEW.id_link, 'id_stripe_price', OLD.id_stripe_price, NEW.id_stripe_price, NEW.id_change_set - WHERE NOT OLD.id_stripe_price <=> NEW.id_stripe_price - UNION - # Changed active - SELECT NEW.id_link, 'active', CONVERT(CONVERT(OLD.active, SIGNED), CHAR), CONVERT(CONVERT(NEW.active, SIGNED), CHAR), NEW.id_change_set - WHERE NOT (OLD.active <=> NEW.active) - ; -END */;; -DELIMITER ;; -/*!50003 SET sql_mode = @saved_sql_mode */ ; -/*!50003 SET character_set_client = @saved_cs_client */ ; -/*!50003 SET character_set_results = @saved_cs_results */ ; -/*!50003 SET collation_connection = @saved_col_connection */ ; - --- --- Table structure for table `shop_product_currency_link_audit` --- - -DROP TABLE IF EXISTS `shop_product_currency_link_audit`; -/*!40101 SET @saved_cs_client = @@character_set_client */; -/*!50503 SET character_set_client = utf8mb4 */; -CREATE TABLE `shop_product_currency_link_audit` ( - `id_audit` int NOT NULL AUTO_INCREMENT, - `id_link` int NOT NULL, - `name_field` varchar(50) DEFAULT NULL, - `value_prev` varchar(500) DEFAULT NULL, - `value_new` varchar(500) DEFAULT NULL, - `id_change_set` int NOT NULL, - PRIMARY KEY (`id_audit`), - KEY `FK_Shop_Product_Currency_Link_Audit_id_link` (`id_link`), - KEY `FK_Shop_Product_Currency_Link_Audit_id_change_set` (`id_change_set`), - CONSTRAINT `FK_Shop_Product_Currency_Link_Audit_id_change_set` FOREIGN KEY (`id_change_set`) REFERENCES `shop_product_change_set` (`id_change_set`), - CONSTRAINT `FK_Shop_Product_Currency_Link_Audit_id_link` FOREIGN KEY (`id_link`) REFERENCES `shop_product_currency_link` (`id_link`) ON UPDATE RESTRICT -) ENGINE=InnoDB DEFAULT CHARSET=utf8mb4 COLLATE=utf8mb4_general_ci; -/*!40101 SET character_set_client = @saved_cs_client */; - --- --- Dumping data for table `shop_product_currency_link_audit` --- - -LOCK TABLES `shop_product_currency_link_audit` WRITE; -/*!40000 ALTER TABLE `shop_product_currency_link_audit` DISABLE KEYS */; -/*!40000 ALTER TABLE `shop_product_currency_link_audit` ENABLE KEYS */; -UNLOCK TABLES; - --- --- Table structure for table `shop_product_currency_region_link` --- - -DROP TABLE IF EXISTS `shop_product_currency_region_link`; -/*!40101 SET @saved_cs_client = @@character_set_client */; -/*!50503 SET character_set_client = utf8mb4 */; -CREATE TABLE `shop_product_currency_region_link` ( - `id_link` int NOT NULL AUTO_INCREMENT, - `id_product` int NOT NULL, - `id_permutation` int DEFAULT NULL, - `id_currency` int NOT NULL, - `id_region_purchase` int NOT NULL, - `price_local_VAT_incl` float DEFAULT NULL, - `price_local_VAT_excl` float DEFAULT NULL, - `id_stripe_price` varchar(200) DEFAULT NULL, - `active` bit(1) NOT NULL DEFAULT b'1', - `created_on` datetime DEFAULT NULL, - `created_by` varchar(100) DEFAULT NULL, - `id_change_set` int DEFAULT NULL, - PRIMARY KEY (`id_link`), - KEY `FK_Shop_Product_Currency_Region_Link_id_product` (`id_product`), - KEY `FK_Shop_Product_Currency_Region_Link_id_permutation` (`id_permutation`), - KEY `FK_Shop_Product_Currency_Region_Link_id_currency` (`id_currency`), - KEY `FK_Shop_Product_Currency_Region_Link_id_region_purchase` (`id_region_purchase`), - KEY `FK_Shop_Product_Currency_Region_Link_id_change_set` (`id_change_set`), - CONSTRAINT `FK_Shop_Product_Currency_Region_Link_id_change_set` FOREIGN KEY (`id_change_set`) REFERENCES `shop_product_change_set` (`id_change_set`), - CONSTRAINT `FK_Shop_Product_Currency_Region_Link_id_currency` FOREIGN KEY (`id_currency`) REFERENCES `shop_currency` (`id_currency`) ON UPDATE RESTRICT, - CONSTRAINT `FK_Shop_Product_Currency_Region_Link_id_permutation` FOREIGN KEY (`id_permutation`) REFERENCES `shop_product_permutation` (`id_permutation`) ON UPDATE RESTRICT, - CONSTRAINT `FK_Shop_Product_Currency_Region_Link_id_product` FOREIGN KEY (`id_product`) REFERENCES `shop_product` (`id_product`) ON UPDATE RESTRICT, - CONSTRAINT `FK_Shop_Product_Currency_Region_Link_id_region_purchase` FOREIGN KEY (`id_region_purchase`) REFERENCES `shop_region` (`id_region`) ON UPDATE RESTRICT -) ENGINE=InnoDB AUTO_INCREMENT=8 DEFAULT CHARSET=utf8mb4 COLLATE=utf8mb4_general_ci; -/*!40101 SET character_set_client = @saved_cs_client */; - --- --- Dumping data for table `shop_product_currency_region_link` --- - -LOCK TABLES `shop_product_currency_region_link` WRITE; -/*!40000 ALTER TABLE `shop_product_currency_region_link` DISABLE KEYS */; -INSERT INTO `shop_product_currency_region_link` VALUES (1,1,1,1,1,24,20,NULL,_binary '','2024-04-28 19:03:07','root@localhost',NULL),(2,1,1,2,1,48,40,NULL,_binary '','2024-04-28 19:03:07','root@localhost',NULL),(3,1,2,1,1,96,80,NULL,_binary '','2024-04-28 19:03:07','root@localhost',NULL),(4,2,3,1,1,144,120,NULL,_binary '','2024-04-28 19:03:07','root@localhost',NULL),(5,3,4,1,1,600,500,NULL,_binary '','2024-04-28 19:03:07','root@localhost',NULL),(6,4,5,1,1,1500,1200,NULL,_binary '','2024-04-28 19:03:07','root@localhost',NULL),(7,5,6,1,1,180,150,NULL,_binary '','2024-04-28 19:03:07','root@localhost',NULL); -/*!40000 ALTER TABLE `shop_product_currency_region_link` ENABLE KEYS */; -UNLOCK TABLES; -/*!50003 SET @saved_cs_client = @@character_set_client */ ; -/*!50003 SET @saved_cs_results = @@character_set_results */ ; -/*!50003 SET @saved_col_connection = @@collation_connection */ ; -/*!50003 SET character_set_client = utf8mb4 */ ; -/*!50003 SET character_set_results = utf8mb4 */ ; -/*!50003 SET collation_connection = utf8mb4_general_ci */ ; -/*!50003 SET @saved_sql_mode = @@sql_mode */ ; -/*!50003 SET sql_mode = 'ONLY_FULL_GROUP_BY,STRICT_TRANS_TABLES,NO_ZERO_IN_DATE,NO_ZERO_DATE,ERROR_FOR_DIVISION_BY_ZERO,NO_ENGINE_SUBSTITUTION' */ ; -DELIMITER ;;; -/*!50003 CREATE*/ /*!50017 DEFINER=`root`@`localhost`*/ /*!50003 TRIGGER `before_insert_Shop_Product_Currency_Region_Link` BEFORE INSERT ON `shop_product_currency_region_link` FOR EACH ROW BEGIN - IF NEW.created_on <=> NULL THEN - SET NEW.created_on := IFNULL(NEW.created_on, NOW()); - END IF; - IF NEW.created_by <=> NULL THEN - SET NEW.created_by := IFNULL(NEW.created_by, IFNULL((SELECT id_user FROM Shop_User WHERE firstname = CURRENT_USER()), -1)); - END IF; - /* - SET NEW.price_local = ( - SELECT PP.price_GBP_full * C.factor_from_GBP - FROM Shop_Product_Permutation PP - INNER JOIN Shop_Product P ON PP.id_product = P.id_product - INNER JOIN Shop_Currency C ON NEW.id_currency = C.id_currency - WHERE NEW.id_product = P.id_product - LIMIT 1 - ); - */ -END */;; -DELIMITER ;; -/*!50003 SET sql_mode = @saved_sql_mode */ ; -/*!50003 SET character_set_client = @saved_cs_client */ ; -/*!50003 SET character_set_results = @saved_cs_results */ ; -/*!50003 SET collation_connection = @saved_col_connection */ ; -/*!50003 SET @saved_cs_client = @@character_set_client */ ; -/*!50003 SET @saved_cs_results = @@character_set_results */ ; -/*!50003 SET @saved_col_connection = @@collation_connection */ ; -/*!50003 SET character_set_client = utf8mb4 */ ; -/*!50003 SET character_set_results = utf8mb4 */ ; -/*!50003 SET collation_connection = utf8mb4_general_ci */ ; -/*!50003 SET @saved_sql_mode = @@sql_mode */ ; -/*!50003 SET sql_mode = 'ONLY_FULL_GROUP_BY,STRICT_TRANS_TABLES,NO_ZERO_IN_DATE,NO_ZERO_DATE,ERROR_FOR_DIVISION_BY_ZERO,NO_ENGINE_SUBSTITUTION' */ ; -DELIMITER ;;; -/*!50003 CREATE*/ /*!50017 DEFINER=`root`@`localhost`*/ /*!50003 TRIGGER `before_update_Shop_Product_Currency_Region_Link` BEFORE UPDATE ON `shop_product_currency_region_link` FOR EACH ROW BEGIN - IF OLD.id_change_set <=> NEW.id_change_set THEN - SIGNAL SQLSTATE '45000' - SET MESSAGE_TEXT = 'New change Set ID must be provided.'; - END IF; - - /* - SET NEW.price_local = ( - SELECT P.price_GBP_full * C.factor_from_GBP - FROM Shop_Product P - INNER JOIN Shop_Currency C ON NEW.id_currency = C.id_currency - WHERE NEW.id_product = P.id_product - LIMIT 1 - ); - */ - - INSERT INTO Shop_Product_Currency_Region_Link_Audit ( - id_link, - name_field, - value_prev, - value_new, - id_change_set - ) - /* - # Changed id_product - SELECT NEW.id_link, 'id_product', CONVERT(OLD.id_product, CHAR), CONVERT(NEW.id_product, CHAR), NEW.id_change_set - WHERE NOT OLD.id_product <=> NEW.id_product - UNION - # Changed id_currency - SELECT NEW.id_link, 'id_currency', CONVERT(OLD.id_currency, CHAR), CONVERT(NEW.id_currency, CHAR), NEW.id_change_set - WHERE NOT OLD.id_currency <=> NEW.id_currency - UNION - # Changed price_local - SELECT NEW.id_link, 'price_local', OLD.price_local, NEW.price_local, NEW.id_change_set - WHERE NOT OLD.price_local <=> NEW.price_local - UNION - */ - # Changed price_local_VAT_incl - SELECT NEW.id_link, 'price_local_VAT_incl', OLD.price_local_VAT_incl, NEW.price_local_VAT_incl, NEW.id_change_set - WHERE NOT OLD.price_local_VAT_incl <=> NEW.price_local_VAT_incl - UNION - # Changed price_local_VAT_excl - SELECT NEW.id_link, 'price_local_VAT_excl', OLD.price_local_VAT_excl, NEW.price_local_VAT_excl, NEW.id_change_set - WHERE NOT OLD.price_local_VAT_excl <=> NEW.price_local_VAT_excl - UNION - # Changed id_stripe_price - SELECT NEW.id_link, 'id_stripe_price', OLD.id_stripe_price, NEW.id_stripe_price, NEW.id_change_set - WHERE NOT OLD.id_stripe_price <=> NEW.id_stripe_price - UNION - # Changed active - SELECT NEW.id_link, 'active', CONVERT(CONVERT(OLD.active, SIGNED), CHAR), CONVERT(CONVERT(NEW.active, SIGNED), CHAR), NEW.id_change_set - WHERE NOT (OLD.active <=> NEW.active) - ; -END */;; -DELIMITER ;; -/*!50003 SET sql_mode = @saved_sql_mode */ ; -/*!50003 SET character_set_client = @saved_cs_client */ ; -/*!50003 SET character_set_results = @saved_cs_results */ ; -/*!50003 SET collation_connection = @saved_col_connection */ ; - --- --- Table structure for table `shop_product_currency_region_link_audit` --- - -DROP TABLE IF EXISTS `shop_product_currency_region_link_audit`; -/*!40101 SET @saved_cs_client = @@character_set_client */; -/*!50503 SET character_set_client = utf8mb4 */; -CREATE TABLE `shop_product_currency_region_link_audit` ( - `id_audit` int NOT NULL AUTO_INCREMENT, - `id_link` int NOT NULL, - `name_field` varchar(50) DEFAULT NULL, - `value_prev` varchar(500) DEFAULT NULL, - `value_new` varchar(500) DEFAULT NULL, - `id_change_set` int NOT NULL, - PRIMARY KEY (`id_audit`), - KEY `FK_Shop_Product_Currency_Region_Link_Audit_id_link` (`id_link`), - KEY `FK_Shop_Product_Currency_Region_Link_Audit_id_change_set` (`id_change_set`), - CONSTRAINT `FK_Shop_Product_Currency_Region_Link_Audit_id_change_set` FOREIGN KEY (`id_change_set`) REFERENCES `shop_product_change_set` (`id_change_set`), - CONSTRAINT `FK_Shop_Product_Currency_Region_Link_Audit_id_link` FOREIGN KEY (`id_link`) REFERENCES `shop_product_currency_region_link` (`id_link`) ON UPDATE RESTRICT -) ENGINE=InnoDB DEFAULT CHARSET=utf8mb4 COLLATE=utf8mb4_general_ci; -/*!40101 SET character_set_client = @saved_cs_client */; - --- --- Dumping data for table `shop_product_currency_region_link_audit` --- - -LOCK TABLES `shop_product_currency_region_link_audit` WRITE; -/*!40000 ALTER TABLE `shop_product_currency_region_link_audit` DISABLE KEYS */; -/*!40000 ALTER TABLE `shop_product_currency_region_link_audit` ENABLE KEYS */; -UNLOCK TABLES; - --- --- Table structure for table `shop_product_delivery_option_link` --- - -DROP TABLE IF EXISTS `shop_product_delivery_option_link`; -/*!40101 SET @saved_cs_client = @@character_set_client */; -/*!50503 SET character_set_client = utf8mb4 */; -CREATE TABLE `shop_product_delivery_option_link` ( - `id_link` int NOT NULL AUTO_INCREMENT, - `id_product` int NOT NULL, - `id_permutation` int DEFAULT NULL, - `id_delivery_option` int NOT NULL, - `id_region` int NOT NULL, - `id_currency` int NOT NULL, - `price_local` float NOT NULL, - `active` bit(1) NOT NULL DEFAULT b'1', - `display_order` int NOT NULL, - `created_on` datetime DEFAULT NULL, - `created_by` varchar(100) DEFAULT NULL, - `id_change_set` int DEFAULT NULL, - PRIMARY KEY (`id_link`), - KEY `FK_Shop_Product_Delivery_Option_Link_id_product` (`id_product`), - KEY `FK_Shop_Product_Delivery_Option_Link_id_permutation` (`id_permutation`), - KEY `FK_Shop_Product_Delivery_Option_Link_id_delivery_option` (`id_delivery_option`), - KEY `FK_Shop_Product_Delivery_Option_Link_id_region` (`id_region`), - KEY `FK_Shop_Product_Delivery_Option_Link_id_currency` (`id_currency`), - KEY `FK_Shop_Product_Delivery_Option_Link_id_change_set` (`id_change_set`), - CONSTRAINT `FK_Shop_Product_Delivery_Option_Link_id_change_set` FOREIGN KEY (`id_change_set`) REFERENCES `shop_product_change_set` (`id_change_set`), - CONSTRAINT `FK_Shop_Product_Delivery_Option_Link_id_currency` FOREIGN KEY (`id_currency`) REFERENCES `shop_currency` (`id_currency`) ON UPDATE RESTRICT, - CONSTRAINT `FK_Shop_Product_Delivery_Option_Link_id_delivery_option` FOREIGN KEY (`id_delivery_option`) REFERENCES `shop_delivery_option` (`id_option`) ON UPDATE RESTRICT, - CONSTRAINT `FK_Shop_Product_Delivery_Option_Link_id_permutation` FOREIGN KEY (`id_permutation`) REFERENCES `shop_product_permutation` (`id_permutation`) ON UPDATE RESTRICT, - CONSTRAINT `FK_Shop_Product_Delivery_Option_Link_id_product` FOREIGN KEY (`id_product`) REFERENCES `shop_product` (`id_product`) ON UPDATE RESTRICT, - CONSTRAINT `FK_Shop_Product_Delivery_Option_Link_id_region` FOREIGN KEY (`id_region`) REFERENCES `shop_region` (`id_region`) ON UPDATE RESTRICT -) ENGINE=InnoDB AUTO_INCREMENT=7 DEFAULT CHARSET=utf8mb4 COLLATE=utf8mb4_general_ci; -/*!40101 SET character_set_client = @saved_cs_client */; - --- --- Dumping data for table `shop_product_delivery_option_link` --- - -LOCK TABLES `shop_product_delivery_option_link` WRITE; -/*!40000 ALTER TABLE `shop_product_delivery_option_link` DISABLE KEYS */; -INSERT INTO `shop_product_delivery_option_link` VALUES (1,1,1,1,1,1,5,_binary '',1,'2024-04-28 19:03:07','root@localhost',NULL),(2,1,2,1,1,1,9,_binary '',2,'2024-04-28 19:03:07','root@localhost',NULL),(3,2,NULL,1,1,1,10,_binary '',3,'2024-04-28 19:03:07','root@localhost',NULL),(4,3,4,1,1,1,10,_binary '',4,'2024-04-28 19:03:07','root@localhost',NULL),(5,4,5,1,1,1,10,_binary '',5,'2024-04-28 19:03:07','root@localhost',NULL),(6,5,6,1,1,1,10,_binary '',6,'2024-04-28 19:03:07','root@localhost',NULL); -/*!40000 ALTER TABLE `shop_product_delivery_option_link` ENABLE KEYS */; -UNLOCK TABLES; -/*!50003 SET @saved_cs_client = @@character_set_client */ ; -/*!50003 SET @saved_cs_results = @@character_set_results */ ; -/*!50003 SET @saved_col_connection = @@collation_connection */ ; -/*!50003 SET character_set_client = utf8mb4 */ ; -/*!50003 SET character_set_results = utf8mb4 */ ; -/*!50003 SET collation_connection = utf8mb4_general_ci */ ; -/*!50003 SET @saved_sql_mode = @@sql_mode */ ; -/*!50003 SET sql_mode = 'ONLY_FULL_GROUP_BY,STRICT_TRANS_TABLES,NO_ZERO_IN_DATE,NO_ZERO_DATE,ERROR_FOR_DIVISION_BY_ZERO,NO_ENGINE_SUBSTITUTION' */ ; -DELIMITER ;;; -/*!50003 CREATE*/ /*!50017 DEFINER=`root`@`localhost`*/ /*!50003 TRIGGER `before_insert_Shop_Product_Delivery_Option_Link` BEFORE INSERT ON `shop_product_delivery_option_link` FOR EACH ROW BEGIN - IF NEW.created_on <=> NULL THEN - SET NEW.created_on := IFNULL(NEW.created_on, NOW()); - END IF; - IF NEW.created_by <=> NULL THEN - SET NEW.created_by := IFNULL(NEW.created_by, IFNULL((SELECT id_user FROM Shop_User WHERE firstname = CURRENT_USER()), -1)); - END IF; -END */;; -DELIMITER ;; -/*!50003 SET sql_mode = @saved_sql_mode */ ; -/*!50003 SET character_set_client = @saved_cs_client */ ; -/*!50003 SET character_set_results = @saved_cs_results */ ; -/*!50003 SET collation_connection = @saved_col_connection */ ; -/*!50003 SET @saved_cs_client = @@character_set_client */ ; -/*!50003 SET @saved_cs_results = @@character_set_results */ ; -/*!50003 SET @saved_col_connection = @@collation_connection */ ; -/*!50003 SET character_set_client = utf8mb4 */ ; -/*!50003 SET character_set_results = utf8mb4 */ ; -/*!50003 SET collation_connection = utf8mb4_general_ci */ ; -/*!50003 SET @saved_sql_mode = @@sql_mode */ ; -/*!50003 SET sql_mode = 'ONLY_FULL_GROUP_BY,STRICT_TRANS_TABLES,NO_ZERO_IN_DATE,NO_ZERO_DATE,ERROR_FOR_DIVISION_BY_ZERO,NO_ENGINE_SUBSTITUTION' */ ; -DELIMITER ;;; -/*!50003 CREATE*/ /*!50017 DEFINER=`root`@`localhost`*/ /*!50003 TRIGGER `before_update_Shop_Product_Delivery_Option_Link` BEFORE UPDATE ON `shop_product_delivery_option_link` FOR EACH ROW BEGIN - IF OLD.id_change_set <=> NEW.id_change_set THEN - SIGNAL SQLSTATE '45000' - SET MESSAGE_TEXT = 'New change Set ID must be provided.'; - END IF; - - INSERT INTO Shop_Product_Delivery_Option_Link_Audit ( - id_link, - name_field, - value_prev, - value_new, - id_change_set - ) - /* - # Changed id_product - SELECT NEW.id_link, 'id_product', CONVERT(OLD.id_product, CHAR), CONVERT(NEW.id_product, CHAR), NEW.id_change_set - WHERE NOT OLD.id_product <=> NEW.id_product - UNION - # Changed id_permutation - SELECT NEW.id_link, 'id_permutation', CONVERT(OLD.id_permutation, CHAR), CONVERT(NEW.id_permutation, CHAR), NEW.id_change_set - WHERE NOT OLD.id_permutation <=> NEW.id_permutation - UNION - # Changed id_option - SELECT NEW.id_link, 'id_option', CONVERT(OLD.id_option, CHAR), CONVERT(NEW.id_option, CHAR), NEW.id_change_set - WHERE NOT OLD.id_option <=> NEW.id_option - UNION - # Changed id_region - SELECT NEW.id_link, 'id_region', CONVERT(OLD.id_region, CHAR), CONVERT(NEW.id_region, CHAR), NEW.id_change_set - WHERE NOT OLD.id_region <=> NEW.id_region - UNION - */ - # Changed price_local - SELECT NEW.id_link, 'price_local', CONVERT(OLD.price_local, CHAR), CONVERT(NEW.price_local, CHAR), NEW.id_change_set - WHERE NOT OLD.price_local <=> NEW.price_local - UNION - # Changed active - SELECT NEW.id_link, 'active', CONVERT(CONVERT(OLD.active, SIGNED), CHAR), CONVERT(CONVERT(NEW.active, SIGNED), CHAR), NEW.id_change_set - WHERE NOT (OLD.active <=> NEW.active) - UNION - # Changed display_order - SELECT NEW.id_link, 'display_order', CONVERT(OLD.display_order, CHAR), CONVERT(NEW.display_order, CHAR), NEW.id_change_set - WHERE NOT (OLD.display_order <=> NEW.display_order) - ; -END */;; -DELIMITER ;; -/*!50003 SET sql_mode = @saved_sql_mode */ ; -/*!50003 SET character_set_client = @saved_cs_client */ ; -/*!50003 SET character_set_results = @saved_cs_results */ ; -/*!50003 SET collation_connection = @saved_col_connection */ ; - --- --- Table structure for table `shop_product_delivery_option_link_audit` --- - -DROP TABLE IF EXISTS `shop_product_delivery_option_link_audit`; -/*!40101 SET @saved_cs_client = @@character_set_client */; -/*!50503 SET character_set_client = utf8mb4 */; -CREATE TABLE `shop_product_delivery_option_link_audit` ( - `id_audit` int NOT NULL AUTO_INCREMENT, - `id_link` int NOT NULL, - `name_field` varchar(64) NOT NULL, - `value_prev` varchar(500) DEFAULT NULL, - `value_new` varchar(500) DEFAULT NULL, - `id_change_set` int NOT NULL, - PRIMARY KEY (`id_audit`), - KEY `FK_Shop_Product_Delivery_Option_Link_Audit_id_link` (`id_link`), - KEY `FK_Shop_Product_Delivery_Option_Link_Audit_id_change_set` (`id_change_set`), - CONSTRAINT `FK_Shop_Product_Delivery_Option_Link_Audit_id_change_set` FOREIGN KEY (`id_change_set`) REFERENCES `shop_product_change_set` (`id_change_set`), - CONSTRAINT `FK_Shop_Product_Delivery_Option_Link_Audit_id_link` FOREIGN KEY (`id_link`) REFERENCES `shop_product_delivery_option_link` (`id_link`) ON UPDATE RESTRICT -) ENGINE=InnoDB DEFAULT CHARSET=utf8mb4 COLLATE=utf8mb4_general_ci; -/*!40101 SET character_set_client = @saved_cs_client */; - --- --- Dumping data for table `shop_product_delivery_option_link_audit` --- - -LOCK TABLES `shop_product_delivery_option_link_audit` WRITE; -/*!40000 ALTER TABLE `shop_product_delivery_option_link_audit` DISABLE KEYS */; -/*!40000 ALTER TABLE `shop_product_delivery_option_link_audit` ENABLE KEYS */; -UNLOCK TABLES; - --- --- Table structure for table `shop_product_permutation` --- - -DROP TABLE IF EXISTS `shop_product_permutation`; -/*!40101 SET @saved_cs_client = @@character_set_client */; -/*!50503 SET character_set_client = utf8mb4 */; -CREATE TABLE `shop_product_permutation` ( - `id_permutation` int NOT NULL AUTO_INCREMENT, - `id_product` int NOT NULL, - `description` varchar(4000) NOT NULL, - `cost_local_manufacturing` float NOT NULL, - `id_currency_cost_manufacturing` int NOT NULL, - `profit_local_min` float NOT NULL, - `id_currency_profit_min` int NOT NULL, - `latency_manufacture` int NOT NULL, - `quantity_min` float NOT NULL, - `quantity_max` float NOT NULL, - `quantity_step` float NOT NULL, - `quantity_stock` float NOT NULL, - `is_subscription` bit(1) NOT NULL, - `id_unit_measurement_interval_recurrence` int DEFAULT NULL, - `count_interval_recurrence` int DEFAULT NULL, - `id_access_level_required` int NOT NULL, - `id_stripe_product` varchar(100) DEFAULT NULL, - `active` bit(1) NOT NULL DEFAULT b'1', - `display_order` int NOT NULL, - `created_on` datetime DEFAULT NULL, - `created_by` varchar(100) DEFAULT NULL, - `id_change_set` int DEFAULT NULL, - PRIMARY KEY (`id_permutation`), - KEY `FK_Shop_Product_Variation_Link_id_product` (`id_product`), - KEY `FK_Shop_Product_Permutation_id_unit_measurement_interval_recurrence` (`id_unit_measurement_interval_recurrence`), - KEY `FK_Shop_Product_Permutation_id_access_level_required` (`id_access_level_required`), - KEY `FK_Shop_Product_Variation_Link_id_change_set` (`id_change_set`), - CONSTRAINT `FK_Shop_Product_Permutation_id_access_level_required` FOREIGN KEY (`id_access_level_required`) REFERENCES `shop_access_level` (`id_access_level`), - CONSTRAINT `FK_Shop_Product_Permutation_id_unit_measurement_interval_recurrence` FOREIGN KEY (`id_unit_measurement_interval_recurrence`) REFERENCES `shop_interval_recurrence` (`id_interval`), - CONSTRAINT `FK_Shop_Product_Variation_Link_id_change_set` FOREIGN KEY (`id_change_set`) REFERENCES `shop_product_change_set` (`id_change_set`), - CONSTRAINT `FK_Shop_Product_Variation_Link_id_product` FOREIGN KEY (`id_product`) REFERENCES `shop_product` (`id_product`) ON UPDATE RESTRICT -) ENGINE=InnoDB AUTO_INCREMENT=7 DEFAULT CHARSET=utf8mb4 COLLATE=utf8mb4_general_ci; -/*!40101 SET character_set_client = @saved_cs_client */; - --- --- Dumping data for table `shop_product_permutation` --- - -LOCK TABLES `shop_product_permutation` WRITE; -/*!40000 ALTER TABLE `shop_product_permutation` DISABLE KEYS */; -INSERT INTO `shop_product_permutation` VALUES (1,1,'Good Red',5,1,3,1,14,1,3,1,99,_binary '\0',NULL,NULL,1,NULL,_binary '',1,'2024-04-28 19:03:07','root@localhost',NULL),(2,1,'Good Blue',6,1,4,1,14,1,3,1,99,_binary '\0',NULL,NULL,1,NULL,_binary '',2,'2024-04-28 19:03:07','root@localhost',NULL),(3,2,'Test product describes good',10,1,5,1,14,1,2,1,99,_binary '\0',NULL,NULL,1,NULL,_binary '',3,'2024-04-28 19:03:07','root@localhost',NULL),(4,3,'Phone describes good',10,1,5,1,14,1,2,1,99,_binary '\0',NULL,NULL,1,NULL,_binary '',4,'2024-04-28 19:03:07','root@localhost',NULL),(5,4,'Laptop describes good',10,1,5,1,14,1,2,1,99,_binary '\0',NULL,NULL,1,NULL,_binary '',5,'2024-04-28 19:03:07','root@localhost',NULL),(6,5,'Smart watch describes good',10,1,5,1,14,1,2,1,99,_binary '\0',NULL,NULL,1,NULL,_binary '',6,'2024-04-28 19:03:07','root@localhost',NULL); -/*!40000 ALTER TABLE `shop_product_permutation` ENABLE KEYS */; -UNLOCK TABLES; -/*!50003 SET @saved_cs_client = @@character_set_client */ ; -/*!50003 SET @saved_cs_results = @@character_set_results */ ; -/*!50003 SET @saved_col_connection = @@collation_connection */ ; -/*!50003 SET character_set_client = utf8mb4 */ ; -/*!50003 SET character_set_results = utf8mb4 */ ; -/*!50003 SET collation_connection = utf8mb4_general_ci */ ; -/*!50003 SET @saved_sql_mode = @@sql_mode */ ; -/*!50003 SET sql_mode = 'ONLY_FULL_GROUP_BY,STRICT_TRANS_TABLES,NO_ZERO_IN_DATE,NO_ZERO_DATE,ERROR_FOR_DIVISION_BY_ZERO,NO_ENGINE_SUBSTITUTION' */ ; -DELIMITER ;;; -/*!50003 CREATE*/ /*!50017 DEFINER=`root`@`localhost`*/ /*!50003 TRIGGER `before_insert_Shop_Product_Permutation` BEFORE INSERT ON `shop_product_permutation` FOR EACH ROW BEGIN - IF NEW.created_on <=> NULL THEN - SET NEW.created_on := IFNULL(NEW.created_on, NOW()); - END IF; - IF NEW.created_by <=> NULL THEN - SET NEW.created_by := IFNULL(NEW.created_by, IFNULL((SELECT id_user FROM Shop_User WHERE firstname = CURRENT_USER()), -1)); - END IF; -END */;; -DELIMITER ;; -/*!50003 SET sql_mode = @saved_sql_mode */ ; -/*!50003 SET character_set_client = @saved_cs_client */ ; -/*!50003 SET character_set_results = @saved_cs_results */ ; -/*!50003 SET collation_connection = @saved_col_connection */ ; -/*!50003 SET @saved_cs_client = @@character_set_client */ ; -/*!50003 SET @saved_cs_results = @@character_set_results */ ; -/*!50003 SET @saved_col_connection = @@collation_connection */ ; -/*!50003 SET character_set_client = utf8mb4 */ ; -/*!50003 SET character_set_results = utf8mb4 */ ; -/*!50003 SET collation_connection = utf8mb4_general_ci */ ; -/*!50003 SET @saved_sql_mode = @@sql_mode */ ; -/*!50003 SET sql_mode = 'ONLY_FULL_GROUP_BY,STRICT_TRANS_TABLES,NO_ZERO_IN_DATE,NO_ZERO_DATE,ERROR_FOR_DIVISION_BY_ZERO,NO_ENGINE_SUBSTITUTION' */ ; -DELIMITER ;;; -/*!50003 CREATE*/ /*!50017 DEFINER=`root`@`localhost`*/ /*!50003 TRIGGER `before_update_Shop_Product_Permutation` BEFORE UPDATE ON `shop_product_permutation` FOR EACH ROW BEGIN - IF OLD.id_change_set <=> NEW.id_change_set THEN - SIGNAL SQLSTATE '45000' - SET MESSAGE_TEXT = 'New change Set ID must be provided.'; - END IF; - - INSERT INTO Shop_Product_Permutation_Audit ( - id_permutation, - name_field, - value_prev, - value_new, - id_change_set - ) - /* - # Changed id_product - SELECT NEW.id_permutation, 'id_product', OLD.id_product, NEW.id_product, NEW.id_change_set - WHERE NOT OLD.id_product <=> NEW.id_product - UNION - # Changed id_variation - SELECT NEW.id_permutation, 'id_variation', OLD.id_variation, NEW.id_variation, NEW.id_change_set - WHERE NOT OLD.id_variation <=> NEW.id_variation - UNION - # Changed name - SELECT NEW.id_permutation, 'name', OLD.name, NEW.name, NEW.id_change_set - WHERE NOT (OLD.name <=> NEW.name) - UNION - */ - # Changed description - SELECT NEW.id_permutation, 'description', OLD.description, NEW.description, NEW.id_change_set - WHERE NOT (OLD.description <=> NEW.description) - UNION - # Changed cost_local_manufacturing - SELECT NEW.id_permutation, 'cost_local_manufacturing', CONVERT(OLD.cost_local_manufacturing, CHAR), CONVERT(NEW.cost_local_manufacturing, CHAR), NEW.id_change_set - WHERE NOT (OLD.cost_local_manufacturing <=> NEW.cost_local_manufacturing) - UNION - # Changed id_currency_cost_manufacturing - SELECT NEW.id_permutation, 'id_currency_cost_manufacturing', CONVERT(OLD.id_currency_cost_manufacturing, CHAR), CONVERT(NEW.id_currency_cost_manufacturing, CHAR), NEW.id_change_set - WHERE NOT (OLD.id_currency_cost_manufacturing <=> NEW.id_currency_cost_manufacturing) - UNION - # Changed profit_local_min - SELECT NEW.id_permutation, 'profit_local_min', CONVERT(OLD.profit_local_min, CHAR), CONVERT(NEW.profit_local_min, CHAR), NEW.id_change_set - WHERE NOT (OLD.profit_local_min <=> NEW.profit_local_min) - UNION - # Changed id_currency_profit_min - SELECT NEW.id_permutation, 'id_currency_profit_min', CONVERT(OLD.id_currency_profit_min, CHAR), CONVERT(NEW.id_currency_profit_min, CHAR), NEW.id_change_set - WHERE NOT (OLD.id_currency_profit_min <=> NEW.id_currency_profit_min) - UNION - /* - # Changed price_GBP_min - SELECT NEW.id_permutation, 'price_GBP_min', CONVERT(OLD.price_GBP_min, CHAR), CONVERT(NEW.price_GBP_min, CHAR), NEW.id_change_set - WHERE NOT (OLD.price_GBP_min <=> NEW.price_GBP_min) - UNION - */ - # Changed latency_manufacture - SELECT NEW.id_product, 'latency_manufacture', CONVERT(OLD.latency_manufacture, CHAR), CONVERT(NEW.latency_manufacture, CHAR), NEW.id_change_set - WHERE NOT OLD.latency_manufacture <=> NEW.latency_manufacture - UNION - # Changed quantity_min - SELECT NEW.id_product, 'quantity_min', CONVERT(OLD.quantity_min, CHAR), CONVERT(NEW.quantity_min, CHAR), NEW.id_change_set - WHERE NOT OLD.quantity_min <=> NEW.quantity_min - UNION - # Changed quantity_max - SELECT NEW.id_product, 'quantity_max', CONVERT(OLD.quantity_max, CHAR), CONVERT(NEW.quantity_max, CHAR), NEW.id_change_set - WHERE NOT OLD.quantity_max <=> NEW.quantity_max - UNION - # Changed quantity_step - SELECT NEW.id_product, 'quantity_step', CONVERT(OLD.quantity_step, CHAR), CONVERT(NEW.quantity_step, CHAR), NEW.id_change_set - WHERE NOT OLD.quantity_step <=> NEW.quantity_step - UNION - # Changed quantity_stock - SELECT NEW.id_product, 'quantity_stock', CONVERT(OLD.quantity_stock, CHAR), CONVERT(NEW.quantity_stock, CHAR), NEW.id_change_set - WHERE NOT OLD.quantity_stock <=> NEW.quantity_stock - UNION - # Changed is_subscription - SELECT NEW.id_product, 'is_subscription', CONVERT(CONVERT(OLD.is_subscription, SIGNED), CHAR), CONVERT(CONVERT(NEW.is_subscription, SIGNED), CHAR), NEW.id_change_set - WHERE NOT OLD.is_subscription <=> NEW.is_subscription - UNION - # Changed id_unit_measurement_interval_recurrence - SELECT NEW.id_product, 'id_unit_measurement_interval_recurrence', CONVERT(OLD.id_unit_measurement_interval_recurrence, CHAR), CONVERT(NEW.id_unit_measurement_interval_recurrence, CHAR), NEW.id_change_set - WHERE NOT OLD.id_unit_measurement_interval_recurrence <=> NEW.id_unit_measurement_interval_recurrence - UNION - # Changed count_interval_recurrence - SELECT NEW.id_product, 'count_interval_recurrence', CONVERT(OLD.count_interval_recurrence, CHAR), CONVERT(NEW.count_interval_recurrence, CHAR), NEW.id_change_set - WHERE NOT OLD.count_interval_recurrence <=> NEW.count_interval_recurrence - UNION - # Changed id_stripe_product - SELECT NEW.id_permutation, 'id_stripe_product', OLD.id_stripe_product, NEW.id_stripe_product, NEW.id_change_set - WHERE NOT (OLD.id_stripe_product <=> NEW.id_stripe_product) - UNION - # Changed active - SELECT NEW.id_permutation, 'active', CONVERT(CONVERT(OLD.active, SIGNED), CHAR), CONVERT(CONVERT(NEW.active, SIGNED), CHAR), NEW.id_change_set - WHERE NOT (OLD.active <=> NEW.active) - UNION - # Changed display_order - SELECT NEW.id_permutation, 'display_order', CONVERT(OLD.display_order, CHAR), CONVERT(NEW.display_order, CHAR), NEW.id_change_set - WHERE NOT (OLD.display_order <=> NEW.display_order) - ; -END */;; -DELIMITER ;; -/*!50003 SET sql_mode = @saved_sql_mode */ ; -/*!50003 SET character_set_client = @saved_cs_client */ ; -/*!50003 SET character_set_results = @saved_cs_results */ ; -/*!50003 SET collation_connection = @saved_col_connection */ ; - --- --- Table structure for table `shop_product_permutation_audit` --- - -DROP TABLE IF EXISTS `shop_product_permutation_audit`; -/*!40101 SET @saved_cs_client = @@character_set_client */; -/*!50503 SET character_set_client = utf8mb4 */; -CREATE TABLE `shop_product_permutation_audit` ( - `id_audit` int NOT NULL AUTO_INCREMENT, - `id_permutation` int NOT NULL, - `name_field` varchar(50) DEFAULT NULL, - `value_prev` varchar(500) DEFAULT NULL, - `value_new` varchar(500) DEFAULT NULL, - `id_change_set` int NOT NULL, - PRIMARY KEY (`id_audit`), - KEY `FK_Shop_Product_Permutation_Audit_id_permutation` (`id_permutation`), - KEY `FK_Shop_Product_Permutation_Audit_id_change_set` (`id_change_set`), - CONSTRAINT `FK_Shop_Product_Permutation_Audit_id_change_set` FOREIGN KEY (`id_change_set`) REFERENCES `shop_product_change_set` (`id_change_set`) ON UPDATE RESTRICT, - CONSTRAINT `FK_Shop_Product_Permutation_Audit_id_permutation` FOREIGN KEY (`id_permutation`) REFERENCES `shop_product_permutation` (`id_permutation`) ON UPDATE RESTRICT -) ENGINE=InnoDB DEFAULT CHARSET=utf8mb4 COLLATE=utf8mb4_general_ci; -/*!40101 SET character_set_client = @saved_cs_client */; - --- --- Dumping data for table `shop_product_permutation_audit` --- - -LOCK TABLES `shop_product_permutation_audit` WRITE; -/*!40000 ALTER TABLE `shop_product_permutation_audit` DISABLE KEYS */; -/*!40000 ALTER TABLE `shop_product_permutation_audit` ENABLE KEYS */; -UNLOCK TABLES; - --- --- Table structure for table `shop_product_permutation_variation_link` --- - -DROP TABLE IF EXISTS `shop_product_permutation_variation_link`; -/*!40101 SET @saved_cs_client = @@character_set_client */; -/*!50503 SET character_set_client = utf8mb4 */; -CREATE TABLE `shop_product_permutation_variation_link` ( - `id_link` int NOT NULL AUTO_INCREMENT, - `id_permutation` int NOT NULL, - `id_variation` int NOT NULL, - `active` bit(1) NOT NULL DEFAULT b'1', - `display_order` int NOT NULL, - `created_on` datetime DEFAULT NULL, - `created_by` varchar(100) DEFAULT NULL, - `id_change_set` int DEFAULT NULL, - PRIMARY KEY (`id_link`), - KEY `FK_Shop_Product_Permutation_Variation_Link_id_permutation` (`id_permutation`), - KEY `FK_Shop_Product_Permutation_Variation_Link_id_variation` (`id_variation`), - KEY `FK_Shop_Product_Permutation_Variation_Link_id_change_set` (`id_change_set`), - CONSTRAINT `FK_Shop_Product_Permutation_Variation_Link_id_change_set` FOREIGN KEY (`id_change_set`) REFERENCES `shop_product_change_set` (`id_change_set`), - CONSTRAINT `FK_Shop_Product_Permutation_Variation_Link_id_permutation` FOREIGN KEY (`id_permutation`) REFERENCES `shop_product_permutation` (`id_permutation`) ON UPDATE RESTRICT, - CONSTRAINT `FK_Shop_Product_Permutation_Variation_Link_id_variation` FOREIGN KEY (`id_variation`) REFERENCES `shop_variation` (`id_variation`) ON UPDATE RESTRICT -) ENGINE=InnoDB AUTO_INCREMENT=3 DEFAULT CHARSET=utf8mb4 COLLATE=utf8mb4_general_ci; -/*!40101 SET character_set_client = @saved_cs_client */; - --- --- Dumping data for table `shop_product_permutation_variation_link` --- - -LOCK TABLES `shop_product_permutation_variation_link` WRITE; -/*!40000 ALTER TABLE `shop_product_permutation_variation_link` DISABLE KEYS */; -INSERT INTO `shop_product_permutation_variation_link` VALUES (1,1,1,_binary '',1,'2024-04-28 19:03:07','root@localhost',NULL),(2,2,2,_binary '',2,'2024-04-28 19:03:07','root@localhost',NULL); -/*!40000 ALTER TABLE `shop_product_permutation_variation_link` ENABLE KEYS */; -UNLOCK TABLES; -/*!50003 SET @saved_cs_client = @@character_set_client */ ; -/*!50003 SET @saved_cs_results = @@character_set_results */ ; -/*!50003 SET @saved_col_connection = @@collation_connection */ ; -/*!50003 SET character_set_client = utf8mb4 */ ; -/*!50003 SET character_set_results = utf8mb4 */ ; -/*!50003 SET collation_connection = utf8mb4_general_ci */ ; -/*!50003 SET @saved_sql_mode = @@sql_mode */ ; -/*!50003 SET sql_mode = 'ONLY_FULL_GROUP_BY,STRICT_TRANS_TABLES,NO_ZERO_IN_DATE,NO_ZERO_DATE,ERROR_FOR_DIVISION_BY_ZERO,NO_ENGINE_SUBSTITUTION' */ ; -DELIMITER ;;; -/*!50003 CREATE*/ /*!50017 DEFINER=`root`@`localhost`*/ /*!50003 TRIGGER `before_insert_Shop_Product_Permutation_Variation_Link` BEFORE INSERT ON `shop_product_permutation_variation_link` FOR EACH ROW BEGIN - IF NEW.created_on <=> NULL THEN - SET NEW.created_on := IFNULL(NEW.created_on, NOW()); - END IF; - IF NEW.created_by <=> NULL THEN - SET NEW.created_by := IFNULL(NEW.created_by, IFNULL((SELECT id_user FROM Shop_User WHERE firstname = CURRENT_USER()), -1)); - END IF; -END */;; -DELIMITER ;; -/*!50003 SET sql_mode = @saved_sql_mode */ ; -/*!50003 SET character_set_client = @saved_cs_client */ ; -/*!50003 SET character_set_results = @saved_cs_results */ ; -/*!50003 SET collation_connection = @saved_col_connection */ ; -/*!50003 SET @saved_cs_client = @@character_set_client */ ; -/*!50003 SET @saved_cs_results = @@character_set_results */ ; -/*!50003 SET @saved_col_connection = @@collation_connection */ ; -/*!50003 SET character_set_client = utf8mb4 */ ; -/*!50003 SET character_set_results = utf8mb4 */ ; -/*!50003 SET collation_connection = utf8mb4_general_ci */ ; -/*!50003 SET @saved_sql_mode = @@sql_mode */ ; -/*!50003 SET sql_mode = 'ONLY_FULL_GROUP_BY,STRICT_TRANS_TABLES,NO_ZERO_IN_DATE,NO_ZERO_DATE,ERROR_FOR_DIVISION_BY_ZERO,NO_ENGINE_SUBSTITUTION' */ ; -DELIMITER ;;; -/*!50003 CREATE*/ /*!50017 DEFINER=`root`@`localhost`*/ /*!50003 TRIGGER `before_update_Shop_Product_Permutation_Variation_Link` BEFORE UPDATE ON `shop_product_permutation_variation_link` FOR EACH ROW BEGIN - IF OLD.id_change_set <=> NEW.id_change_set THEN - SIGNAL SQLSTATE '45000' - SET MESSAGE_TEXT = 'New change Set ID must be provided.'; - END IF; - - INSERT INTO Shop_Product_Permutation_Variation_Link_Audit ( - id_link, - name_field, - value_prev, - value_new, - id_change_set - ) - /* - # Changed id_product - SELECT NEW.id_link, 'id_product', OLD.id_product, NEW.id_product, NEW.id_change_set - WHERE NOT OLD.id_product <=> NEW.id_product - UNION - # Changed id_variation - SELECT NEW.id_link, 'id_variation', OLD.id_variation, NEW.id_variation, NEW.id_change_set - WHERE NOT OLD.id_variation <=> NEW.id_variation - UNION - */ - # Changed active - SELECT NEW.id_link, 'active', CONVERT(CONVERT(OLD.active, SIGNED), CHAR), CONVERT(CONVERT(NEW.active, SIGNED), CHAR), NEW.id_change_set - WHERE NOT (OLD.active <=> NEW.active) - UNION - # Changed display_order - SELECT NEW.id_link, 'display_order', CONVERT(OLD.display_order, CHAR), CONVERT(NEW.display_order, CHAR), NEW.id_change_set - WHERE NOT (OLD.display_order <=> NEW.display_order) - ; -END */;; -DELIMITER ;; -/*!50003 SET sql_mode = @saved_sql_mode */ ; -/*!50003 SET character_set_client = @saved_cs_client */ ; -/*!50003 SET character_set_results = @saved_cs_results */ ; -/*!50003 SET collation_connection = @saved_col_connection */ ; - --- --- Table structure for table `shop_product_permutation_variation_link_audit` --- - -DROP TABLE IF EXISTS `shop_product_permutation_variation_link_audit`; -/*!40101 SET @saved_cs_client = @@character_set_client */; -/*!50503 SET character_set_client = utf8mb4 */; -CREATE TABLE `shop_product_permutation_variation_link_audit` ( - `id_audit` int NOT NULL AUTO_INCREMENT, - `id_link` int NOT NULL, - `name_field` varchar(50) DEFAULT NULL, - `value_prev` varchar(500) DEFAULT NULL, - `value_new` varchar(500) DEFAULT NULL, - `id_change_set` int NOT NULL, - PRIMARY KEY (`id_audit`), - KEY `FK_Shop_Product_Permutation_Variation_Link_Audit_id_link` (`id_link`), - KEY `FK_Shop_Product_Permutation_Variation_Link_Audit_id_change_set` (`id_change_set`), - CONSTRAINT `FK_Shop_Product_Permutation_Variation_Link_Audit_id_change_set` FOREIGN KEY (`id_change_set`) REFERENCES `shop_product_change_set` (`id_change_set`) ON UPDATE RESTRICT, - CONSTRAINT `FK_Shop_Product_Permutation_Variation_Link_Audit_id_link` FOREIGN KEY (`id_link`) REFERENCES `shop_product_permutation_variation_link` (`id_link`) ON UPDATE RESTRICT -) ENGINE=InnoDB DEFAULT CHARSET=utf8mb4 COLLATE=utf8mb4_general_ci; -/*!40101 SET character_set_client = @saved_cs_client */; - --- --- Dumping data for table `shop_product_permutation_variation_link_audit` --- - -LOCK TABLES `shop_product_permutation_variation_link_audit` WRITE; -/*!40000 ALTER TABLE `shop_product_permutation_variation_link_audit` DISABLE KEYS */; -/*!40000 ALTER TABLE `shop_product_permutation_variation_link_audit` ENABLE KEYS */; -UNLOCK TABLES; - --- --- Table structure for table `shop_interval_recurrence` --- - -DROP TABLE IF EXISTS `shop_interval_recurrence`; -/*!40101 SET @saved_cs_client = @@character_set_client */; -/*!50503 SET character_set_client = utf8mb4 */; -CREATE TABLE `shop_interval_recurrence` ( - `id_interval` int NOT NULL AUTO_INCREMENT, - `code` varchar(50) DEFAULT NULL, - `name` varchar(255) DEFAULT NULL, - `name_plural` varchar(256) DEFAULT NULL, - `active` bit(1) NOT NULL DEFAULT b'1', - `created_on` datetime DEFAULT NULL, - `created_by` varchar(100) DEFAULT NULL, - `id_change_set` int DEFAULT NULL, - PRIMARY KEY (`id_interval`), - KEY `FK_Shop_Interval_Recurrence_id_change_set` (`id_change_set`), - CONSTRAINT `FK_Shop_Interval_Recurrence_id_change_set` FOREIGN KEY (`id_change_set`) REFERENCES `shop_product_change_set` (`id_change_set`) -) ENGINE=InnoDB AUTO_INCREMENT=4 DEFAULT CHARSET=utf8mb4 COLLATE=utf8mb4_general_ci; -/*!40101 SET character_set_client = @saved_cs_client */; - --- --- Dumping data for table `shop_interval_recurrence` --- - -LOCK TABLES `shop_interval_recurrence` WRITE; -/*!40000 ALTER TABLE `shop_interval_recurrence` DISABLE KEYS */; -INSERT INTO `shop_interval_recurrence` VALUES (1,'WEEK','Week','Weeks',_binary '','2024-04-28 19:03:07','root@localhost',NULL),(2,'MONTH','Month','Months',_binary '','2024-04-28 19:03:07','root@localhost',NULL),(3,'YEAR','Year','Years',_binary '','2024-04-28 19:03:07','root@localhost',NULL); -/*!40000 ALTER TABLE `shop_interval_recurrence` ENABLE KEYS */; -UNLOCK TABLES; -/*!50003 SET @saved_cs_client = @@character_set_client */ ; -/*!50003 SET @saved_cs_results = @@character_set_results */ ; -/*!50003 SET @saved_col_connection = @@collation_connection */ ; -/*!50003 SET character_set_client = utf8mb4 */ ; -/*!50003 SET character_set_results = utf8mb4 */ ; -/*!50003 SET collation_connection = utf8mb4_general_ci */ ; -/*!50003 SET @saved_sql_mode = @@sql_mode */ ; -/*!50003 SET sql_mode = 'ONLY_FULL_GROUP_BY,STRICT_TRANS_TABLES,NO_ZERO_IN_DATE,NO_ZERO_DATE,ERROR_FOR_DIVISION_BY_ZERO,NO_ENGINE_SUBSTITUTION' */ ; -DELIMITER ;;; -/*!50003 CREATE*/ /*!50017 DEFINER=`root`@`localhost`*/ /*!50003 TRIGGER `before_insert_Shop_Interval_Recurrence` BEFORE INSERT ON `shop_interval_recurrence` FOR EACH ROW BEGIN - SET NEW.created_on := IFNULL(NEW.created_on, NOW()); - SET NEW.created_by := IFNULL(NEW.created_by, IFNULL((SELECT id_user FROM Shop_User WHERE firstname = CURRENT_USER()), -1)); -END */;; -DELIMITER ;; -/*!50003 SET sql_mode = @saved_sql_mode */ ; -/*!50003 SET character_set_client = @saved_cs_client */ ; -/*!50003 SET character_set_results = @saved_cs_results */ ; -/*!50003 SET collation_connection = @saved_col_connection */ ; -/*!50003 SET @saved_cs_client = @@character_set_client */ ; -/*!50003 SET @saved_cs_results = @@character_set_results */ ; -/*!50003 SET @saved_col_connection = @@collation_connection */ ; -/*!50003 SET character_set_client = utf8mb4 */ ; -/*!50003 SET character_set_results = utf8mb4 */ ; -/*!50003 SET collation_connection = utf8mb4_general_ci */ ; -/*!50003 SET @saved_sql_mode = @@sql_mode */ ; -/*!50003 SET sql_mode = 'ONLY_FULL_GROUP_BY,STRICT_TRANS_TABLES,NO_ZERO_IN_DATE,NO_ZERO_DATE,ERROR_FOR_DIVISION_BY_ZERO,NO_ENGINE_SUBSTITUTION' */ ; -DELIMITER ;;; -/*!50003 CREATE*/ /*!50017 DEFINER=`root`@`localhost`*/ /*!50003 TRIGGER `before_update_Shop_Interval_Recurrence` BEFORE UPDATE ON `shop_interval_recurrence` FOR EACH ROW BEGIN - IF OLD.id_change_set <=> NEW.id_change_set THEN - SIGNAL SQLSTATE '45000' - SET MESSAGE_TEXT = 'New change Set ID must be provided.'; - END IF; - - INSERT INTO Shop_Interval_Recurrence_Audit ( - id_interval, - name_field, - value_prev, - value_new, - id_change_set - ) - # Changed code - SELECT NEW.id_interval, 'code', OLD.code, NEW.code, NEW.id_change_set - WHERE NOT OLD.code <=> NEW.code - UNION - # Changed name - SELECT NEW.id_interval, 'name', OLD.name, NEW.name, NEW.id_change_set - WHERE NOT OLD.name <=> NEW.name - UNION - # Changed name_plural - SELECT NEW.id_interval, 'name_plural', OLD.name_plural, NEW.name_plural, NEW.id_change_set - WHERE NOT OLD.name_plural <=> NEW.name_plural - UNION - # Changed name - SELECT NEW.id_interval, 'active', OLD.active, NEW.active, NEW.id_change_set - WHERE NOT OLD.active <=> NEW.active - ; -END */;; -DELIMITER ;; -/*!50003 SET sql_mode = @saved_sql_mode */ ; -/*!50003 SET character_set_client = @saved_cs_client */ ; -/*!50003 SET character_set_results = @saved_cs_results */ ; -/*!50003 SET collation_connection = @saved_col_connection */ ; - --- --- Table structure for table `shop_interval_recurrence_audit` --- - -DROP TABLE IF EXISTS `shop_interval_recurrence_audit`; -/*!40101 SET @saved_cs_client = @@character_set_client */; -/*!50503 SET character_set_client = utf8mb4 */; -CREATE TABLE `shop_interval_recurrence_audit` ( - `id_audit` int NOT NULL AUTO_INCREMENT, - `id_interval` int NOT NULL, - `name_field` varchar(50) DEFAULT NULL, - `value_prev` varchar(256) DEFAULT NULL, - `value_new` varchar(256) DEFAULT NULL, - `id_change_set` int NOT NULL, - PRIMARY KEY (`id_audit`), - KEY `FK_Shop_Interval_Recurrence_Audit_id_interval` (`id_interval`), - KEY `FK_Shop_Interval_Recurrence_Audit_id_change_set` (`id_change_set`), - CONSTRAINT `FK_Shop_Interval_Recurrence_Audit_id_change_set` FOREIGN KEY (`id_change_set`) REFERENCES `shop_product_change_set` (`id_change_set`), - CONSTRAINT `FK_Shop_Interval_Recurrence_Audit_id_interval` FOREIGN KEY (`id_interval`) REFERENCES `shop_interval_recurrence` (`id_interval`) ON UPDATE RESTRICT -) ENGINE=InnoDB DEFAULT CHARSET=utf8mb4 COLLATE=utf8mb4_general_ci; -/*!40101 SET character_set_client = @saved_cs_client */; - --- --- Dumping data for table `shop_interval_recurrence_audit` --- - -LOCK TABLES `shop_interval_recurrence_audit` WRITE; -/*!40000 ALTER TABLE `shop_interval_recurrence_audit` DISABLE KEYS */; -/*!40000 ALTER TABLE `shop_interval_recurrence_audit` ENABLE KEYS */; -UNLOCK TABLES; - --- --- Table structure for table `shop_region` --- - -DROP TABLE IF EXISTS `shop_region`; -/*!40101 SET @saved_cs_client = @@character_set_client */; -/*!50503 SET character_set_client = utf8mb4 */; -CREATE TABLE `shop_region` ( - `id_region` int NOT NULL AUTO_INCREMENT, - `code` varchar(50) NOT NULL, - `name` varchar(200) NOT NULL, - `active` bit(1) NOT NULL DEFAULT b'1', - `display_order` int NOT NULL, - `created_on` datetime DEFAULT NULL, - `created_by` varchar(100) DEFAULT NULL, - `id_change_set` int DEFAULT NULL, - PRIMARY KEY (`id_region`), - KEY `FK_Shop_Region_id_change_set` (`id_change_set`), - CONSTRAINT `FK_Shop_Region_id_change_set` FOREIGN KEY (`id_change_set`) REFERENCES `shop_product_change_set` (`id_change_set`) -) ENGINE=InnoDB AUTO_INCREMENT=2 DEFAULT CHARSET=utf8mb4 COLLATE=utf8mb4_general_ci; -/*!40101 SET character_set_client = @saved_cs_client */; - --- --- Dumping data for table `shop_region` --- - -LOCK TABLES `shop_region` WRITE; -/*!40000 ALTER TABLE `shop_region` DISABLE KEYS */; -INSERT INTO `shop_region` VALUES (1,'UK','United Kingdom',_binary '',1,'2024-04-28 19:03:07','root@localhost',NULL); -/*!40000 ALTER TABLE `shop_region` ENABLE KEYS */; -UNLOCK TABLES; -/*!50003 SET @saved_cs_client = @@character_set_client */ ; -/*!50003 SET @saved_cs_results = @@character_set_results */ ; -/*!50003 SET @saved_col_connection = @@collation_connection */ ; -/*!50003 SET character_set_client = utf8mb4 */ ; -/*!50003 SET character_set_results = utf8mb4 */ ; -/*!50003 SET collation_connection = utf8mb4_general_ci */ ; -/*!50003 SET @saved_sql_mode = @@sql_mode */ ; -/*!50003 SET sql_mode = 'ONLY_FULL_GROUP_BY,STRICT_TRANS_TABLES,NO_ZERO_IN_DATE,NO_ZERO_DATE,ERROR_FOR_DIVISION_BY_ZERO,NO_ENGINE_SUBSTITUTION' */ ; -DELIMITER ;;; -/*!50003 CREATE*/ /*!50017 DEFINER=`root`@`localhost`*/ /*!50003 TRIGGER `before_insert_Shop_Region` BEFORE INSERT ON `shop_region` FOR EACH ROW BEGIN - SET NEW.created_on := IFNULL(NEW.created_on, NOW()); - SET NEW.created_by := IFNULL(NEW.created_by, IFNULL((SELECT id_user FROM Shop_User WHERE firstname = CURRENT_USER()), -1)); -END */;; -DELIMITER ;; -/*!50003 SET sql_mode = @saved_sql_mode */ ; -/*!50003 SET character_set_client = @saved_cs_client */ ; -/*!50003 SET character_set_results = @saved_cs_results */ ; -/*!50003 SET collation_connection = @saved_col_connection */ ; -/*!50003 SET @saved_cs_client = @@character_set_client */ ; -/*!50003 SET @saved_cs_results = @@character_set_results */ ; -/*!50003 SET @saved_col_connection = @@collation_connection */ ; -/*!50003 SET character_set_client = utf8mb4 */ ; -/*!50003 SET character_set_results = utf8mb4 */ ; -/*!50003 SET collation_connection = utf8mb4_general_ci */ ; -/*!50003 SET @saved_sql_mode = @@sql_mode */ ; -/*!50003 SET sql_mode = 'ONLY_FULL_GROUP_BY,STRICT_TRANS_TABLES,NO_ZERO_IN_DATE,NO_ZERO_DATE,ERROR_FOR_DIVISION_BY_ZERO,NO_ENGINE_SUBSTITUTION' */ ; -DELIMITER ;;; -/*!50003 CREATE*/ /*!50017 DEFINER=`root`@`localhost`*/ /*!50003 TRIGGER `before_update_Shop_Region` BEFORE UPDATE ON `shop_region` FOR EACH ROW BEGIN - IF OLD.id_change_set <=> NEW.id_change_set THEN - SIGNAL SQLSTATE '45000' - SET MESSAGE_TEXT = 'New change Set ID must be provided.'; - END IF; - - INSERT INTO Shop_Region_Audit ( - id_region, - name_field, - value_prev, - value_new, - id_change_set - ) - # Changed code - SELECT NEW.id_region, 'code', OLD.code, NEW.code, NEW.id_change_set - WHERE NOT OLD.code <=> NEW.code - UNION - # Changed name - SELECT NEW.id_region, 'name', OLD.name, NEW.name, NEW.id_change_set - WHERE NOT OLD.name <=> NEW.name - UNION - # Changed active - SELECT NEW.id_region, 'active', CONVERT(OLD.active, CHAR), CONVERT(NEW.active, CHAR), NEW.id_change_set - WHERE NOT OLD.active <=> NEW.active - UNION - # Changed display_order - SELECT NEW.id_region, 'display_order', CONVERT(OLD.display_order, CHAR), CONVERT(NEW.display_order, CHAR), NEW.id_change_set - WHERE NOT OLD.display_order <=> NEW.display_order - ; -END */;; -DELIMITER ;; -/*!50003 SET sql_mode = @saved_sql_mode */ ; -/*!50003 SET character_set_client = @saved_cs_client */ ; -/*!50003 SET character_set_results = @saved_cs_results */ ; -/*!50003 SET collation_connection = @saved_col_connection */ ; - --- --- Table structure for table `shop_region_audit` --- - -DROP TABLE IF EXISTS `shop_region_audit`; -/*!40101 SET @saved_cs_client = @@character_set_client */; -/*!50503 SET character_set_client = utf8mb4 */; -CREATE TABLE `shop_region_audit` ( - `id_audit` int NOT NULL AUTO_INCREMENT, - `id_region` int NOT NULL, - `name_field` varchar(64) NOT NULL, - `value_prev` varchar(500) DEFAULT NULL, - `value_new` varchar(500) DEFAULT NULL, - `id_change_set` int NOT NULL, - PRIMARY KEY (`id_audit`), - KEY `FK_Shop_Region_Audit_id_region` (`id_region`), - KEY `FK_Shop_Region_Audit_id_change_set` (`id_change_set`), - CONSTRAINT `FK_Shop_Region_Audit_id_change_set` FOREIGN KEY (`id_change_set`) REFERENCES `shop_product_change_set` (`id_change_set`), - CONSTRAINT `FK_Shop_Region_Audit_id_region` FOREIGN KEY (`id_region`) REFERENCES `shop_region` (`id_region`) ON UPDATE RESTRICT -) ENGINE=InnoDB DEFAULT CHARSET=utf8mb4 COLLATE=utf8mb4_general_ci; -/*!40101 SET character_set_client = @saved_cs_client */; - --- --- Dumping data for table `shop_region_audit` --- - -LOCK TABLES `shop_region_audit` WRITE; -/*!40000 ALTER TABLE `shop_region_audit` DISABLE KEYS */; -/*!40000 ALTER TABLE `shop_region_audit` ENABLE KEYS */; -UNLOCK TABLES; - --- --- Table structure for table `shop_region_branch` --- - -DROP TABLE IF EXISTS `shop_region_branch`; -/*!40101 SET @saved_cs_client = @@character_set_client */; -/*!50503 SET character_set_client = utf8mb4 */; -CREATE TABLE `shop_region_branch` ( - `id_branch` int NOT NULL AUTO_INCREMENT, - `id_region_parent` int NOT NULL, - `id_region_child` int NOT NULL, - `active` bit(1) NOT NULL DEFAULT b'1', - `display_order` int NOT NULL, - `created_on` datetime DEFAULT NULL, - `created_by` varchar(100) DEFAULT NULL, - `id_change_set` int DEFAULT NULL, - PRIMARY KEY (`id_branch`), - KEY `FK_Shop_Region_Branch_id_region_parent` (`id_region_parent`), - KEY `FK_Shop_Region_Branch_id_region_child` (`id_region_child`), - KEY `FK_Shop_Region_Branch_id_change_set` (`id_change_set`), - CONSTRAINT `FK_Shop_Region_Branch_id_change_set` FOREIGN KEY (`id_change_set`) REFERENCES `shop_product_change_set` (`id_change_set`), - CONSTRAINT `FK_Shop_Region_Branch_id_region_child` FOREIGN KEY (`id_region_child`) REFERENCES `shop_region` (`id_region`) ON UPDATE RESTRICT, - CONSTRAINT `FK_Shop_Region_Branch_id_region_parent` FOREIGN KEY (`id_region_parent`) REFERENCES `shop_region` (`id_region`) ON UPDATE RESTRICT -) ENGINE=InnoDB DEFAULT CHARSET=utf8mb4 COLLATE=utf8mb4_general_ci; -/*!40101 SET character_set_client = @saved_cs_client */; - --- --- Dumping data for table `shop_region_branch` --- - -LOCK TABLES `shop_region_branch` WRITE; -/*!40000 ALTER TABLE `shop_region_branch` DISABLE KEYS */; -/*!40000 ALTER TABLE `shop_region_branch` ENABLE KEYS */; -UNLOCK TABLES; -/*!50003 SET @saved_cs_client = @@character_set_client */ ; -/*!50003 SET @saved_cs_results = @@character_set_results */ ; -/*!50003 SET @saved_col_connection = @@collation_connection */ ; -/*!50003 SET character_set_client = utf8mb4 */ ; -/*!50003 SET character_set_results = utf8mb4 */ ; -/*!50003 SET collation_connection = utf8mb4_general_ci */ ; -/*!50003 SET @saved_sql_mode = @@sql_mode */ ; -/*!50003 SET sql_mode = 'ONLY_FULL_GROUP_BY,STRICT_TRANS_TABLES,NO_ZERO_IN_DATE,NO_ZERO_DATE,ERROR_FOR_DIVISION_BY_ZERO,NO_ENGINE_SUBSTITUTION' */ ; -DELIMITER ;;; -/*!50003 CREATE*/ /*!50017 DEFINER=`root`@`localhost`*/ /*!50003 TRIGGER `before_insert_Shop_Region_Branch` BEFORE INSERT ON `shop_region_branch` FOR EACH ROW BEGIN - SET NEW.created_on := IFNULL(NEW.created_on, NOW()); - SET NEW.created_by := IFNULL(NEW.created_by, IFNULL((SELECT id_user FROM Shop_User WHERE firstname = CURRENT_USER()), -1)); -END */;; -DELIMITER ;; -/*!50003 SET sql_mode = @saved_sql_mode */ ; -/*!50003 SET character_set_client = @saved_cs_client */ ; -/*!50003 SET character_set_results = @saved_cs_results */ ; -/*!50003 SET collation_connection = @saved_col_connection */ ; -/*!50003 SET @saved_cs_client = @@character_set_client */ ; -/*!50003 SET @saved_cs_results = @@character_set_results */ ; -/*!50003 SET @saved_col_connection = @@collation_connection */ ; -/*!50003 SET character_set_client = utf8mb4 */ ; -/*!50003 SET character_set_results = utf8mb4 */ ; -/*!50003 SET collation_connection = utf8mb4_general_ci */ ; -/*!50003 SET @saved_sql_mode = @@sql_mode */ ; -/*!50003 SET sql_mode = 'ONLY_FULL_GROUP_BY,STRICT_TRANS_TABLES,NO_ZERO_IN_DATE,NO_ZERO_DATE,ERROR_FOR_DIVISION_BY_ZERO,NO_ENGINE_SUBSTITUTION' */ ; -DELIMITER ;;; -/*!50003 CREATE*/ /*!50017 DEFINER=`root`@`localhost`*/ /*!50003 TRIGGER `before_update_Shop_Region_Branch` BEFORE UPDATE ON `shop_region_branch` FOR EACH ROW BEGIN - IF OLD.id_change_set <=> NEW.id_change_set THEN - SIGNAL SQLSTATE '45000' - SET MESSAGE_TEXT = 'New change Set ID must be provided.'; - END IF; - - INSERT INTO Shop_Region_Branch_Audit ( - id_branch, - name_field, - value_prev, - value_new, - id_change_set - ) - /* - # Changed depth - SELECT NEW.id_branch, 'depth', CONVERT(OLD.depth, CHAR), CONVERT(NEW.depth, CHAR), NEW.id_change_set - WHERE NOT OLD.depth <=> NEW.depth - UNION - */ - # Changed active - SELECT NEW.id_branch, 'active', CONVERT(OLD.active, CHAR), CONVERT(NEW.active, CHAR), NEW.id_change_set - WHERE NOT OLD.active <=> NEW.active - UNION - # Changed display_order - SELECT NEW.id_branch, 'display_order', CONVERT(OLD.display_order, CHAR), CONVERT(NEW.display_order, CHAR), NEW.id_change_set - WHERE NOT OLD.display_order <=> NEW.display_order - ; -END */;; -DELIMITER ;; -/*!50003 SET sql_mode = @saved_sql_mode */ ; -/*!50003 SET character_set_client = @saved_cs_client */ ; -/*!50003 SET character_set_results = @saved_cs_results */ ; -/*!50003 SET collation_connection = @saved_col_connection */ ; - --- --- Table structure for table `shop_region_branch_audit` --- - -DROP TABLE IF EXISTS `shop_region_branch_audit`; -/*!40101 SET @saved_cs_client = @@character_set_client */; -/*!50503 SET character_set_client = utf8mb4 */; -CREATE TABLE `shop_region_branch_audit` ( - `id_audit` int NOT NULL AUTO_INCREMENT, - `id_branch` int NOT NULL, - `name_field` varchar(64) NOT NULL, - `value_prev` varchar(500) DEFAULT NULL, - `value_new` varchar(500) DEFAULT NULL, - `id_change_set` int NOT NULL, - PRIMARY KEY (`id_audit`), - KEY `FK_Shop_Region_Branch_Audit_id_branch` (`id_branch`), - KEY `FK_Shop_Region_Branch_Audit_id_change_set` (`id_change_set`), - CONSTRAINT `FK_Shop_Region_Branch_Audit_id_branch` FOREIGN KEY (`id_branch`) REFERENCES `shop_region_branch` (`id_branch`) ON UPDATE RESTRICT, - CONSTRAINT `FK_Shop_Region_Branch_Audit_id_change_set` FOREIGN KEY (`id_change_set`) REFERENCES `shop_product_change_set` (`id_change_set`) -) ENGINE=InnoDB DEFAULT CHARSET=utf8mb4 COLLATE=utf8mb4_general_ci; -/*!40101 SET character_set_client = @saved_cs_client */; - --- --- Dumping data for table `shop_region_branch_audit` --- - -LOCK TABLES `shop_region_branch_audit` WRITE; -/*!40000 ALTER TABLE `shop_region_branch_audit` DISABLE KEYS */; -/*!40000 ALTER TABLE `shop_region_branch_audit` ENABLE KEYS */; -UNLOCK TABLES; - --- --- Table structure for table `shop_role` --- - -DROP TABLE IF EXISTS `shop_role`; -/*!40101 SET @saved_cs_client = @@character_set_client */; -/*!50503 SET character_set_client = utf8mb4 */; -CREATE TABLE `shop_role` ( - `id_role` int NOT NULL AUTO_INCREMENT, - `code` varchar(50) DEFAULT NULL, - `name` varchar(255) DEFAULT NULL, - `active` bit(1) NOT NULL DEFAULT b'1', - `display_order` int NOT NULL, - `created_on` datetime DEFAULT NULL, - `created_by` varchar(100) DEFAULT NULL, - `id_change_set` int DEFAULT NULL, - PRIMARY KEY (`id_role`), - KEY `FK_Shop_Role_id_change_set` (`id_change_set`), - CONSTRAINT `FK_Shop_Role_id_change_set` FOREIGN KEY (`id_change_set`) REFERENCES `shop_user_change_set` (`id_change_set`) -) ENGINE=InnoDB AUTO_INCREMENT=3 DEFAULT CHARSET=utf8mb4 COLLATE=utf8mb4_general_ci; -/*!40101 SET character_set_client = @saved_cs_client */; - --- --- Dumping data for table `shop_role` --- - -LOCK TABLES `shop_role` WRITE; -/*!40000 ALTER TABLE `shop_role` DISABLE KEYS */; -INSERT INTO `shop_role` VALUES (1,'DIRECTOR','Director',_binary '',1,'2024-04-28 19:03:07','root@localhost',NULL),(2,'USER','User',_binary '',2,'2024-04-28 19:03:07','root@localhost',NULL); -/*!40000 ALTER TABLE `shop_role` ENABLE KEYS */; -UNLOCK TABLES; -/*!50003 SET @saved_cs_client = @@character_set_client */ ; -/*!50003 SET @saved_cs_results = @@character_set_results */ ; -/*!50003 SET @saved_col_connection = @@collation_connection */ ; -/*!50003 SET character_set_client = utf8mb4 */ ; -/*!50003 SET character_set_results = utf8mb4 */ ; -/*!50003 SET collation_connection = utf8mb4_general_ci */ ; -/*!50003 SET @saved_sql_mode = @@sql_mode */ ; -/*!50003 SET sql_mode = 'ONLY_FULL_GROUP_BY,STRICT_TRANS_TABLES,NO_ZERO_IN_DATE,NO_ZERO_DATE,ERROR_FOR_DIVISION_BY_ZERO,NO_ENGINE_SUBSTITUTION' */ ; -DELIMITER ;;; -/*!50003 CREATE*/ /*!50017 DEFINER=`root`@`localhost`*/ /*!50003 TRIGGER `before_insert_Shop_Role` BEFORE INSERT ON `shop_role` FOR EACH ROW BEGIN - IF NEW.created_on <=> NULL THEN - SET NEW.created_on := IFNULL(NEW.created_on, NOW()); - END IF; - IF NEW.created_by <=> NULL THEN - SET NEW.created_by := IFNULL(NEW.created_by, IFNULL((SELECT id_user FROM Shop_User WHERE firstname = CURRENT_USER()), -1)); - END IF; -END */;; -DELIMITER ;; -/*!50003 SET sql_mode = @saved_sql_mode */ ; -/*!50003 SET character_set_client = @saved_cs_client */ ; -/*!50003 SET character_set_results = @saved_cs_results */ ; -/*!50003 SET collation_connection = @saved_col_connection */ ; -/*!50003 SET @saved_cs_client = @@character_set_client */ ; -/*!50003 SET @saved_cs_results = @@character_set_results */ ; -/*!50003 SET @saved_col_connection = @@collation_connection */ ; -/*!50003 SET character_set_client = utf8mb4 */ ; -/*!50003 SET character_set_results = utf8mb4 */ ; -/*!50003 SET collation_connection = utf8mb4_general_ci */ ; -/*!50003 SET @saved_sql_mode = @@sql_mode */ ; -/*!50003 SET sql_mode = 'ONLY_FULL_GROUP_BY,STRICT_TRANS_TABLES,NO_ZERO_IN_DATE,NO_ZERO_DATE,ERROR_FOR_DIVISION_BY_ZERO,NO_ENGINE_SUBSTITUTION' */ ; -DELIMITER ;;; -/*!50003 CREATE*/ /*!50017 DEFINER=`root`@`localhost`*/ /*!50003 TRIGGER `before_update_Shop_Role` BEFORE UPDATE ON `shop_role` FOR EACH ROW BEGIN - IF OLD.id_change_set <=> NEW.id_change_set THEN - SIGNAL SQLSTATE '45000' - SET MESSAGE_TEXT = 'New change Set ID must be provided.'; - END IF; - - INSERT INTO Shop_Role_Audit ( - id_role, - name_field, - value_prev, - value_new, - id_change_set - ) - # Changed code - SELECT NEW.id_role, 'code', OLD.code, NEW.code, NEW.id_change_set - WHERE NOT OLD.code <=> NEW.code - UNION - # Changed name - SELECT NEW.id_role, 'name', OLD.name, NEW.name, NEW.id_change_set - WHERE NOT OLD.name <=> NEW.name - UNION - # Changed active - SELECT NEW.id_role, 'active', CONVERT(CONVERT(OLD.active, SIGNED), CHAR), CONVERT(CONVERT(NEW.active, SIGNED), CHAR), NEW.id_change_set - WHERE NOT (OLD.active <=> NEW.active) - UNION - # Changed display_order - SELECT NEW.id_role, 'display_order', CONVERT(OLD.display_order, CHAR), CONVERT(NEW.display_order, CHAR), NEW.id_change_set - WHERE NOT OLD.display_order <=> NEW.display_order - ; -END */;; -DELIMITER ;; -/*!50003 SET sql_mode = @saved_sql_mode */ ; -/*!50003 SET character_set_client = @saved_cs_client */ ; -/*!50003 SET character_set_results = @saved_cs_results */ ; -/*!50003 SET collation_connection = @saved_col_connection */ ; - --- --- Table structure for table `shop_role_audit` --- - -DROP TABLE IF EXISTS `shop_role_audit`; -/*!40101 SET @saved_cs_client = @@character_set_client */; -/*!50503 SET character_set_client = utf8mb4 */; -CREATE TABLE `shop_role_audit` ( - `id_audit` int NOT NULL AUTO_INCREMENT, - `id_role` int NOT NULL, - `name_field` varchar(50) DEFAULT NULL, - `value_prev` varchar(500) DEFAULT NULL, - `value_new` varchar(500) DEFAULT NULL, - `id_change_set` int NOT NULL, - PRIMARY KEY (`id_audit`), - KEY `FK_Shop_Role_Audit_id_role` (`id_role`), - KEY `FK_Shop_Role_Audit_id_change_set` (`id_change_set`), - CONSTRAINT `FK_Shop_Role_Audit_id_change_set` FOREIGN KEY (`id_change_set`) REFERENCES `shop_user_change_set` (`id_change_set`) ON UPDATE RESTRICT, - CONSTRAINT `FK_Shop_Role_Audit_id_role` FOREIGN KEY (`id_role`) REFERENCES `shop_role` (`id_role`) ON UPDATE RESTRICT -) ENGINE=InnoDB DEFAULT CHARSET=utf8mb4 COLLATE=utf8mb4_general_ci; -/*!40101 SET character_set_client = @saved_cs_client */; - --- --- Dumping data for table `shop_role_audit` --- - -LOCK TABLES `shop_role_audit` WRITE; -/*!40000 ALTER TABLE `shop_role_audit` DISABLE KEYS */; -/*!40000 ALTER TABLE `shop_role_audit` ENABLE KEYS */; -UNLOCK TABLES; - --- --- Table structure for table `shop_role_permission_link` --- - -DROP TABLE IF EXISTS `shop_role_permission_link`; -/*!40101 SET @saved_cs_client = @@character_set_client */; -/*!50503 SET character_set_client = utf8mb4 */; -CREATE TABLE `shop_role_permission_link` ( - `id_link` int NOT NULL AUTO_INCREMENT, - `id_role` int DEFAULT NULL, - `id_permission` int DEFAULT NULL, - `id_access_level` int DEFAULT NULL, - `active` bit(1) NOT NULL DEFAULT b'1', - `created_on` datetime DEFAULT NULL, - `created_by` varchar(100) DEFAULT NULL, - `id_change_set` int DEFAULT NULL, - PRIMARY KEY (`id_link`), - KEY `FK_Shop_Role_Permission_Link_id_role` (`id_role`), - KEY `FK_Shop_Role_Permission_Link_id_permission` (`id_permission`), - KEY `FK_Shop_Role_Permission_Link_id_access_level` (`id_access_level`), - KEY `FK_Shop_Role_Permission_Link_id_change_set` (`id_change_set`), - CONSTRAINT `FK_Shop_Role_Permission_Link_id_access_level` FOREIGN KEY (`id_access_level`) REFERENCES `shop_access_level` (`id_access_level`), - CONSTRAINT `FK_Shop_Role_Permission_Link_id_change_set` FOREIGN KEY (`id_change_set`) REFERENCES `shop_user_change_set` (`id_change_set`), - CONSTRAINT `FK_Shop_Role_Permission_Link_id_permission` FOREIGN KEY (`id_permission`) REFERENCES `shop_permission` (`id_permission`) ON UPDATE RESTRICT, - CONSTRAINT `FK_Shop_Role_Permission_Link_id_role` FOREIGN KEY (`id_role`) REFERENCES `shop_role` (`id_role`) ON UPDATE RESTRICT -) ENGINE=InnoDB AUTO_INCREMENT=11 DEFAULT CHARSET=utf8mb4 COLLATE=utf8mb4_general_ci; -/*!40101 SET character_set_client = @saved_cs_client */; - --- --- Dumping data for table `shop_role_permission_link` --- - -LOCK TABLES `shop_role_permission_link` WRITE; -/*!40000 ALTER TABLE `shop_role_permission_link` DISABLE KEYS */; -INSERT INTO `shop_role_permission_link` VALUES (1,1,1,3,_binary '','2024-04-28 19:03:07','root@localhost',NULL),(2,1,2,3,_binary '','2024-04-28 19:03:07','root@localhost',NULL),(3,1,3,3,_binary '','2024-04-28 19:03:07','root@localhost',NULL),(4,1,4,3,_binary '','2024-04-28 19:03:07','root@localhost',NULL),(5,1,5,3,_binary '','2024-04-28 19:03:07','root@localhost',NULL),(6,2,1,1,_binary '','2024-04-28 19:03:07','root@localhost',NULL),(7,2,2,1,_binary '','2024-04-28 19:03:07','root@localhost',NULL),(8,2,3,1,_binary '','2024-04-28 19:03:07','root@localhost',NULL),(9,2,4,1,_binary '','2024-04-28 19:03:07','root@localhost',NULL),(10,2,5,1,_binary '','2024-04-28 19:03:07','root@localhost',NULL); -/*!40000 ALTER TABLE `shop_role_permission_link` ENABLE KEYS */; -UNLOCK TABLES; -/*!50003 SET @saved_cs_client = @@character_set_client */ ; -/*!50003 SET @saved_cs_results = @@character_set_results */ ; -/*!50003 SET @saved_col_connection = @@collation_connection */ ; -/*!50003 SET character_set_client = utf8mb4 */ ; -/*!50003 SET character_set_results = utf8mb4 */ ; -/*!50003 SET collation_connection = utf8mb4_general_ci */ ; -/*!50003 SET @saved_sql_mode = @@sql_mode */ ; -/*!50003 SET sql_mode = 'ONLY_FULL_GROUP_BY,STRICT_TRANS_TABLES,NO_ZERO_IN_DATE,NO_ZERO_DATE,ERROR_FOR_DIVISION_BY_ZERO,NO_ENGINE_SUBSTITUTION' */ ; -DELIMITER ;;; -/*!50003 CREATE*/ /*!50017 DEFINER=`root`@`localhost`*/ /*!50003 TRIGGER `before_insert_Shop_Role_Permission_Link` BEFORE INSERT ON `shop_role_permission_link` FOR EACH ROW BEGIN - IF NEW.created_on <=> NULL THEN - SET NEW.created_on := IFNULL(NEW.created_on, NOW()); - END IF; - IF NEW.created_by <=> NULL THEN - SET NEW.created_by := IFNULL(NEW.created_by, IFNULL((SELECT id_user FROM Shop_User WHERE firstname = CURRENT_USER()), -1)); - END IF; -END */;; -DELIMITER ;; -/*!50003 SET sql_mode = @saved_sql_mode */ ; -/*!50003 SET character_set_client = @saved_cs_client */ ; -/*!50003 SET character_set_results = @saved_cs_results */ ; -/*!50003 SET collation_connection = @saved_col_connection */ ; -/*!50003 SET @saved_cs_client = @@character_set_client */ ; -/*!50003 SET @saved_cs_results = @@character_set_results */ ; -/*!50003 SET @saved_col_connection = @@collation_connection */ ; -/*!50003 SET character_set_client = utf8mb4 */ ; -/*!50003 SET character_set_results = utf8mb4 */ ; -/*!50003 SET collation_connection = utf8mb4_general_ci */ ; -/*!50003 SET @saved_sql_mode = @@sql_mode */ ; -/*!50003 SET sql_mode = 'ONLY_FULL_GROUP_BY,STRICT_TRANS_TABLES,NO_ZERO_IN_DATE,NO_ZERO_DATE,ERROR_FOR_DIVISION_BY_ZERO,NO_ENGINE_SUBSTITUTION' */ ; -DELIMITER ;;; -/*!50003 CREATE*/ /*!50017 DEFINER=`root`@`localhost`*/ /*!50003 TRIGGER `before_update_Shop_Role_Permission_Link` BEFORE UPDATE ON `shop_role_permission_link` FOR EACH ROW BEGIN - IF OLD.id_change_set <=> NEW.id_change_set THEN - SIGNAL SQLSTATE '45000' - SET MESSAGE_TEXT = 'New change Set ID must be provided.'; - END IF; - - INSERT INTO Shop_Role_Permission_Link_Audit ( - id_link, - name_field, - value_prev, - value_new, - id_change_set - ) - /* - # Changed id_role - SELECT NEW.id_link, 'id_role', CONVERT(OLD.id_role, CHAR), CONVERT(NEW.id_role, CHAR), NEW.id_change_set - WHERE NOT OLD.id_role <=> NEW.id_role - UNION - # Changed id_permission - SELECT NEW.id_link, 'id_permission', CONVERT(OLD.id_permission, CHAR), CONVERT(NEW.id_permission, CHAR), NEW.id_change_set - WHERE NOT OLD.id_permission <=> NEW.id_permission - UNION - */ - # Changed id_access_level - SELECT NEW.id_link, 'id_access_level', CONVERT(OLD.id_access_level, CHAR), CONVERT(NEW.id_access_level, CHAR), NEW.id_change_set - WHERE NOT OLD.id_access_level <=> NEW.id_access_level - UNION - # Changed active - SELECT NEW.id_link, 'active', CONVERT(CONVERT(OLD.active, SIGNED), CHAR), CONVERT(CONVERT(NEW.active, SIGNED), CHAR), NEW.id_change_set - WHERE NOT (OLD.active <=> NEW.active) - ; -END */;; -DELIMITER ;; -/*!50003 SET sql_mode = @saved_sql_mode */ ; -/*!50003 SET character_set_client = @saved_cs_client */ ; -/*!50003 SET character_set_results = @saved_cs_results */ ; -/*!50003 SET collation_connection = @saved_col_connection */ ; - --- --- Table structure for table `shop_role_permission_link_audit` --- - -DROP TABLE IF EXISTS `shop_role_permission_link_audit`; -/*!40101 SET @saved_cs_client = @@character_set_client */; -/*!50503 SET character_set_client = utf8mb4 */; -CREATE TABLE `shop_role_permission_link_audit` ( - `id_audit` int NOT NULL AUTO_INCREMENT, - `id_link` int NOT NULL, - `name_field` varchar(50) DEFAULT NULL, - `value_prev` varchar(500) DEFAULT NULL, - `value_new` varchar(500) DEFAULT NULL, - `id_change_set` int NOT NULL, - PRIMARY KEY (`id_audit`), - KEY `FK_Shop_Role_Permission_Link_Audit_id_link` (`id_link`), - KEY `FK_Shop_Role_Permission_Link_Audit_id_change_set` (`id_change_set`), - CONSTRAINT `FK_Shop_Role_Permission_Link_Audit_id_change_set` FOREIGN KEY (`id_change_set`) REFERENCES `shop_user_change_set` (`id_change_set`), - CONSTRAINT `FK_Shop_Role_Permission_Link_Audit_id_link` FOREIGN KEY (`id_link`) REFERENCES `shop_role_permission_link` (`id_link`) ON UPDATE RESTRICT -) ENGINE=InnoDB DEFAULT CHARSET=utf8mb4 COLLATE=utf8mb4_general_ci; -/*!40101 SET character_set_client = @saved_cs_client */; - --- --- Dumping data for table `shop_role_permission_link_audit` --- - -LOCK TABLES `shop_role_permission_link_audit` WRITE; -/*!40000 ALTER TABLE `shop_role_permission_link_audit` DISABLE KEYS */; -/*!40000 ALTER TABLE `shop_role_permission_link_audit` ENABLE KEYS */; -UNLOCK TABLES; - --- --- Table structure for table `shop_tax_or_surcharge` --- - -DROP TABLE IF EXISTS `shop_tax_or_surcharge`; -/*!40101 SET @saved_cs_client = @@character_set_client */; -/*!50503 SET character_set_client = utf8mb4 */; -CREATE TABLE `shop_tax_or_surcharge` ( - `id_tax` int NOT NULL AUTO_INCREMENT, - `code` varchar(50) NOT NULL, - `name` varchar(200) NOT NULL, - `id_region_buyer` int NOT NULL, - `id_region_seller` int NOT NULL, - `id_currency` int DEFAULT NULL, - `fixed_fee` float NOT NULL DEFAULT '0', - `multiplier` float NOT NULL DEFAULT '1', - `apply_fixed_fee_before_multiplier` bit(1) DEFAULT b'1', - `quantity_min` float NOT NULL DEFAULT '0', - `quantity_max` float NOT NULL, - `active` bit(1) NOT NULL DEFAULT b'1', - `display_order` int NOT NULL, - `created_on` datetime DEFAULT NULL, - `created_by` varchar(100) DEFAULT NULL, - `id_change_set` int DEFAULT NULL, - PRIMARY KEY (`id_tax`), - KEY `FK_Shop_Tax_Or_Surcharge_id_region_buyer` (`id_region_buyer`), - KEY `FK_Shop_Tax_Or_Surcharge_id_region_seller` (`id_region_seller`), - KEY `FK_Shop_Tax_Or_Surcharge_id_currency` (`id_currency`), - KEY `FK_Shop_Tax_Or_Surcharge_id_change_set` (`id_change_set`), - CONSTRAINT `FK_Shop_Tax_Or_Surcharge_id_change_set` FOREIGN KEY (`id_change_set`) REFERENCES `shop_product_change_set` (`id_change_set`), - CONSTRAINT `FK_Shop_Tax_Or_Surcharge_id_currency` FOREIGN KEY (`id_currency`) REFERENCES `shop_currency` (`id_currency`) ON UPDATE RESTRICT, - CONSTRAINT `FK_Shop_Tax_Or_Surcharge_id_region_buyer` FOREIGN KEY (`id_region_buyer`) REFERENCES `shop_region` (`id_region`), - CONSTRAINT `FK_Shop_Tax_Or_Surcharge_id_region_seller` FOREIGN KEY (`id_region_seller`) REFERENCES `shop_region` (`id_region`), - CONSTRAINT `shop_tax_or_surcharge_chk_1` CHECK ((`multiplier` > 0)) -) ENGINE=InnoDB AUTO_INCREMENT=2 DEFAULT CHARSET=utf8mb4 COLLATE=utf8mb4_general_ci; -/*!40101 SET character_set_client = @saved_cs_client */; - --- --- Dumping data for table `shop_tax_or_surcharge` --- - -LOCK TABLES `shop_tax_or_surcharge` WRITE; -/*!40000 ALTER TABLE `shop_tax_or_surcharge` DISABLE KEYS */; -INSERT INTO `shop_tax_or_surcharge` VALUES (1,'VAT','Value Added Tax',1,1,NULL,0,0.2,_binary '',0,1,_binary '',1,'2024-04-28 19:03:07','root@localhost',NULL); -/*!40000 ALTER TABLE `shop_tax_or_surcharge` ENABLE KEYS */; -UNLOCK TABLES; -/*!50003 SET @saved_cs_client = @@character_set_client */ ; -/*!50003 SET @saved_cs_results = @@character_set_results */ ; -/*!50003 SET @saved_col_connection = @@collation_connection */ ; -/*!50003 SET character_set_client = utf8mb4 */ ; -/*!50003 SET character_set_results = utf8mb4 */ ; -/*!50003 SET collation_connection = utf8mb4_general_ci */ ; -/*!50003 SET @saved_sql_mode = @@sql_mode */ ; -/*!50003 SET sql_mode = 'ONLY_FULL_GROUP_BY,STRICT_TRANS_TABLES,NO_ZERO_IN_DATE,NO_ZERO_DATE,ERROR_FOR_DIVISION_BY_ZERO,NO_ENGINE_SUBSTITUTION' */ ; -DELIMITER ;;; -/*!50003 CREATE*/ /*!50017 DEFINER=`root`@`localhost`*/ /*!50003 TRIGGER `before_insert_Shop_Tax_Or_Surcharge` BEFORE INSERT ON `shop_tax_or_surcharge` FOR EACH ROW BEGIN - SET NEW.created_on := IFNULL(NEW.created_on, NOW()); - SET NEW.created_by := IFNULL(NEW.created_by, IFNULL((SELECT id_user FROM Shop_User WHERE firstname = CURRENT_USER()), -1)); -END */;; -DELIMITER ;; -/*!50003 SET sql_mode = @saved_sql_mode */ ; -/*!50003 SET character_set_client = @saved_cs_client */ ; -/*!50003 SET character_set_results = @saved_cs_results */ ; -/*!50003 SET collation_connection = @saved_col_connection */ ; -/*!50003 SET @saved_cs_client = @@character_set_client */ ; -/*!50003 SET @saved_cs_results = @@character_set_results */ ; -/*!50003 SET @saved_col_connection = @@collation_connection */ ; -/*!50003 SET character_set_client = utf8mb4 */ ; -/*!50003 SET character_set_results = utf8mb4 */ ; -/*!50003 SET collation_connection = utf8mb4_general_ci */ ; -/*!50003 SET @saved_sql_mode = @@sql_mode */ ; -/*!50003 SET sql_mode = 'ONLY_FULL_GROUP_BY,STRICT_TRANS_TABLES,NO_ZERO_IN_DATE,NO_ZERO_DATE,ERROR_FOR_DIVISION_BY_ZERO,NO_ENGINE_SUBSTITUTION' */ ; -DELIMITER ;;; -/*!50003 CREATE*/ /*!50017 DEFINER=`root`@`localhost`*/ /*!50003 TRIGGER `before_update_Shop_Tax_Or_Surcharge` BEFORE UPDATE ON `shop_tax_or_surcharge` FOR EACH ROW BEGIN - IF OLD.id_change_set <=> NEW.id_change_set THEN - SIGNAL SQLSTATE '45000' - SET MESSAGE_TEXT = 'New change Set ID must be provided.'; - END IF; - - INSERT INTO Shop_Tax_Or_Surcharge_Audit ( - id_tax, - name_field, - value_prev, - value_new, - id_change_set - ) - # Changed code - SELECT NEW.id_tax, 'code', OLD.code, NEW.code, NEW.id_change_set - WHERE NOT OLD.code <=> NEW.code - UNION - # Changed name - SELECT NEW.id_tax, 'name', OLD.name, NEW.name, NEW.id_change_set - WHERE NOT OLD.name <=> NEW.name - UNION - # Changed fixed_fee - SELECT NEW.id_tax, 'fixed_fee', OLD.fixed_fee, NEW.fixed_fee, NEW.id_change_set - WHERE NOT OLD.fixed_fee <=> NEW.fixed_fee - UNION - # Changed multiplier - SELECT NEW.id_tax, 'multiplier', OLD.multiplier, NEW.multiplier, NEW.id_change_set - WHERE NOT OLD.multiplier <=> NEW.multiplier - UNION - # Changed apply_fixed_fee_before_multiplier - SELECT NEW.id_tax, 'apply_fixed_fee_before_multiplier', CONVERT(CONVERT(OLD.apply_fixed_fee_before_multiplier, SIGNED), CHAR), CONVERT(CONVERT(NEW.apply_fixed_fee_before_multiplier, SIGNED), CHAR), NEW.id_change_set - WHERE NOT OLD.apply_fixed_fee_before_multiplier <=> NEW.apply_fixed_fee_before_multiplier - UNION - # Changed quantity_min - SELECT NEW.id_tax, 'quantity_min', OLD.quantity_min, NEW.quantity_min, NEW.id_change_set - WHERE NOT OLD.quantity_min <=> NEW.quantity_min - UNION - # Changed quantity_max - SELECT NEW.id_tax, 'quantity_max', OLD.quantity_max, NEW.quantity_max, NEW.id_change_set - WHERE NOT OLD.quantity_max <=> NEW.quantity_max - UNION - # Changed display_order - SELECT NEW.id_tax, 'display_order', CONVERT(OLD.display_order, CHAR), CONVERT(NEW.display_order, CHAR), NEW.id_change_set - WHERE NOT OLD.display_order <=> NEW.display_order - UNION - # Changed active - SELECT NEW.id_tax, 'active', CONVERT(CONVERT(OLD.active, SIGNED), CHAR), CONVERT(CONVERT(NEW.active, SIGNED), CHAR), NEW.id_change_set - WHERE NOT OLD.active <=> NEW.active - ; -END */;; -DELIMITER ;; -/*!50003 SET sql_mode = @saved_sql_mode */ ; -/*!50003 SET character_set_client = @saved_cs_client */ ; -/*!50003 SET character_set_results = @saved_cs_results */ ; -/*!50003 SET collation_connection = @saved_col_connection */ ; - --- --- Table structure for table `shop_tax_or_surcharge_audit` --- - -DROP TABLE IF EXISTS `shop_tax_or_surcharge_audit`; -/*!40101 SET @saved_cs_client = @@character_set_client */; -/*!50503 SET character_set_client = utf8mb4 */; -CREATE TABLE `shop_tax_or_surcharge_audit` ( - `id_audit` int NOT NULL AUTO_INCREMENT, - `id_tax` int NOT NULL, - `name_field` varchar(50) DEFAULT NULL, - `value_prev` varchar(500) DEFAULT NULL, - `value_new` varchar(500) DEFAULT NULL, - `id_change_set` int NOT NULL, - PRIMARY KEY (`id_audit`), - KEY `FK_Shop_Tax_Or_Surcharge_Audit_id_discount` (`id_tax`), - KEY `FK_Shop_Tax_Or_Surcharge_Audit_id_change_set` (`id_change_set`), - CONSTRAINT `FK_Shop_Tax_Or_Surcharge_Audit_id_change_set` FOREIGN KEY (`id_change_set`) REFERENCES `shop_product_change_set` (`id_change_set`) ON UPDATE RESTRICT, - CONSTRAINT `FK_Shop_Tax_Or_Surcharge_Audit_id_discount` FOREIGN KEY (`id_tax`) REFERENCES `shop_tax_or_surcharge` (`id_tax`) ON UPDATE RESTRICT -) ENGINE=InnoDB DEFAULT CHARSET=utf8mb4 COLLATE=utf8mb4_general_ci; -/*!40101 SET character_set_client = @saved_cs_client */; - --- --- Dumping data for table `shop_tax_or_surcharge_audit` --- - -LOCK TABLES `shop_tax_or_surcharge_audit` WRITE; -/*!40000 ALTER TABLE `shop_tax_or_surcharge_audit` DISABLE KEYS */; -/*!40000 ALTER TABLE `shop_tax_or_surcharge_audit` ENABLE KEYS */; -UNLOCK TABLES; - --- --- Table structure for table `shop_user` --- - -DROP TABLE IF EXISTS `shop_user`; -/*!40101 SET @saved_cs_client = @@character_set_client */; -/*!50503 SET character_set_client = utf8mb4 */; -CREATE TABLE `shop_user` ( - `id_user` varchar(200) NOT NULL, - `name` varchar(255) NOT NULL, - `email` varchar(254) NOT NULL, - `email_verified` bit(1) NOT NULL DEFAULT b'0', - `is_super_user` bit(1) NOT NULL DEFAULT b'0', - `active` bit(1) NOT NULL DEFAULT b'1', - `created_on` datetime DEFAULT NULL, - `created_by` varchar(100) DEFAULT NULL, - `id_change_set` int DEFAULT NULL, - PRIMARY KEY (`id_user`), - KEY `FK_Shop_User_id_change_set` (`id_change_set`), - CONSTRAINT `FK_Shop_User_id_change_set` FOREIGN KEY (`id_change_set`) REFERENCES `shop_user_change_set` (`id_change_set`) -) ENGINE=InnoDB DEFAULT CHARSET=utf8mb4 COLLATE=utf8mb4_general_ci; -/*!40101 SET character_set_client = @saved_cs_client */; - --- --- Dumping data for table `shop_user` --- - -LOCK TABLES `shop_user` WRITE; -/*!40000 ALTER TABLE `shop_user` DISABLE KEYS */; -INSERT INTO `shop_user` VALUES ('auth0|6582b95c895d09a70ba10fef','Teddy','edward.middletonsmith@gmail.com',_binary '\0',_binary '',_binary '','2024-04-28 19:03:07','root@localhost',NULL),('parts_guest','Guest','',_binary '\0',_binary '\0',_binary '','2024-04-28 19:03:07','root@localhost',NULL); -/*!40000 ALTER TABLE `shop_user` ENABLE KEYS */; -UNLOCK TABLES; -/*!50003 SET @saved_cs_client = @@character_set_client */ ; -/*!50003 SET @saved_cs_results = @@character_set_results */ ; -/*!50003 SET @saved_col_connection = @@collation_connection */ ; -/*!50003 SET character_set_client = utf8mb4 */ ; -/*!50003 SET character_set_results = utf8mb4 */ ; -/*!50003 SET collation_connection = utf8mb4_general_ci */ ; -/*!50003 SET @saved_sql_mode = @@sql_mode */ ; -/*!50003 SET sql_mode = 'ONLY_FULL_GROUP_BY,STRICT_TRANS_TABLES,NO_ZERO_IN_DATE,NO_ZERO_DATE,ERROR_FOR_DIVISION_BY_ZERO,NO_ENGINE_SUBSTITUTION' */ ; -DELIMITER ;;; -/*!50003 CREATE*/ /*!50017 DEFINER=`root`@`localhost`*/ /*!50003 TRIGGER `before_insert_Shop_User` BEFORE INSERT ON `shop_user` FOR EACH ROW BEGIN - IF NEW.created_on <=> NULL THEN - SET NEW.created_on := IFNULL(NEW.created_on, NOW()); - END IF; - IF NEW.created_by <=> NULL THEN - SET NEW.created_by := IFNULL(NEW.created_by, IFNULL((SELECT id_user FROM Shop_User WHERE firstname = CURRENT_USER()), -1)); - END IF; -END */;; -DELIMITER ;; -/*!50003 SET sql_mode = @saved_sql_mode */ ; -/*!50003 SET character_set_client = @saved_cs_client */ ; -/*!50003 SET character_set_results = @saved_cs_results */ ; -/*!50003 SET collation_connection = @saved_col_connection */ ; -/*!50003 SET @saved_cs_client = @@character_set_client */ ; -/*!50003 SET @saved_cs_results = @@character_set_results */ ; -/*!50003 SET @saved_col_connection = @@collation_connection */ ; -/*!50003 SET character_set_client = utf8mb4 */ ; -/*!50003 SET character_set_results = utf8mb4 */ ; -/*!50003 SET collation_connection = utf8mb4_general_ci */ ; -/*!50003 SET @saved_sql_mode = @@sql_mode */ ; -/*!50003 SET sql_mode = 'ONLY_FULL_GROUP_BY,STRICT_TRANS_TABLES,NO_ZERO_IN_DATE,NO_ZERO_DATE,ERROR_FOR_DIVISION_BY_ZERO,NO_ENGINE_SUBSTITUTION' */ ; -DELIMITER ;;; -/*!50003 CREATE*/ /*!50017 DEFINER=`root`@`localhost`*/ /*!50003 TRIGGER `before_update_Shop_User` BEFORE UPDATE ON `shop_user` FOR EACH ROW BEGIN - IF OLD.id_change_set <=> NEW.id_change_set THEN - SIGNAL SQLSTATE '45000' - SET MESSAGE_TEXT = 'New change Set ID must be provided.'; - END IF; - - INSERT INTO Shop_User_Audit ( - id_user, - name_field, - value_prev, - value_new, - id_change_set - ) - # Changed name - SELECT NEW.id_user, 'name', OLD.name, NEW.name, NEW.id_change_set - WHERE NOT (OLD.name <=> NEW.name) - UNION - # Changed is_super_user - SELECT NEW.id_user, 'is_super_user', CONVERT(CONVERT(OLD.is_super_user, SIGNED), CHAR), CONVERT(CONVERT(NEW.is_super_user, SIGNED), CHAR), NEW.id_change_set - WHERE NOT (OLD.is_super_user <=> NEW.is_super_user) - UNION - # Changed active - SELECT NEW.id_user, 'active', CONVERT(CONVERT(OLD.active, SIGNED), CHAR), CONVERT(CONVERT(NEW.active, SIGNED), CHAR), NEW.id_change_set - WHERE NOT (OLD.active <=> NEW.active) - ; -END */;; -DELIMITER ;; -/*!50003 SET sql_mode = @saved_sql_mode */ ; -/*!50003 SET character_set_client = @saved_cs_client */ ; -/*!50003 SET character_set_results = @saved_cs_results */ ; -/*!50003 SET collation_connection = @saved_col_connection */ ; - --- --- Table structure for table `shop_user_audit` --- - -DROP TABLE IF EXISTS `shop_user_audit`; -/*!40101 SET @saved_cs_client = @@character_set_client */; -/*!50503 SET character_set_client = utf8mb4 */; -CREATE TABLE `shop_user_audit` ( - `id_audit` int NOT NULL AUTO_INCREMENT, - `id_user` varchar(200) NOT NULL, - `name_field` varchar(50) DEFAULT NULL, - `value_prev` varchar(500) DEFAULT NULL, - `value_new` varchar(500) DEFAULT NULL, - `id_change_set` int NOT NULL, - PRIMARY KEY (`id_audit`), - KEY `FK_Shop_User_Audit_id_user` (`id_user`), - KEY `FK_Shop_User_Audit_id_change_set` (`id_change_set`), - CONSTRAINT `FK_Shop_User_Audit_id_change_set` FOREIGN KEY (`id_change_set`) REFERENCES `shop_user_change_set` (`id_change_set`) ON UPDATE RESTRICT, - CONSTRAINT `FK_Shop_User_Audit_id_user` FOREIGN KEY (`id_user`) REFERENCES `shop_user` (`id_user`) ON UPDATE RESTRICT -) ENGINE=InnoDB DEFAULT CHARSET=utf8mb4 COLLATE=utf8mb4_general_ci; -/*!40101 SET character_set_client = @saved_cs_client */; - --- --- Dumping data for table `shop_user_audit` --- - -LOCK TABLES `shop_user_audit` WRITE; -/*!40000 ALTER TABLE `shop_user_audit` DISABLE KEYS */; -/*!40000 ALTER TABLE `shop_user_audit` ENABLE KEYS */; -UNLOCK TABLES; - --- --- Table structure for table `shop_user_basket` --- - -DROP TABLE IF EXISTS `shop_user_basket`; -/*!40101 SET @saved_cs_client = @@character_set_client */; -/*!50503 SET character_set_client = utf8mb4 */; -CREATE TABLE `shop_user_basket` ( - `id_item` int NOT NULL AUTO_INCREMENT, - `id_user` varchar(200) NOT NULL, - `id_product` int NOT NULL, - `id_permutation` int DEFAULT NULL, - `quantity` int NOT NULL, - `active` bit(1) NOT NULL DEFAULT b'1', - `created_on` datetime DEFAULT NULL, - `created_by` varchar(100) DEFAULT NULL, - `id_change_set_user` int DEFAULT NULL, - PRIMARY KEY (`id_item`), - KEY `FK_Shop_User_Basket_id_user` (`id_user`), - KEY `FK_Shop_User_Basket_id_product` (`id_product`), - KEY `FK_Shop_User_Basket_id_permutation` (`id_permutation`), - KEY `FK_Shop_User_Basket_id_change_set_user` (`id_change_set_user`), - CONSTRAINT `FK_Shop_User_Basket_id_change_set_user` FOREIGN KEY (`id_change_set_user`) REFERENCES `shop_user_change_set` (`id_change_set`), - CONSTRAINT `FK_Shop_User_Basket_id_permutation` FOREIGN KEY (`id_permutation`) REFERENCES `shop_product_permutation` (`id_permutation`) ON UPDATE RESTRICT, - CONSTRAINT `FK_Shop_User_Basket_id_product` FOREIGN KEY (`id_product`) REFERENCES `shop_product` (`id_product`) ON UPDATE RESTRICT, - CONSTRAINT `FK_Shop_User_Basket_id_user` FOREIGN KEY (`id_user`) REFERENCES `shop_user` (`id_user`) ON UPDATE RESTRICT -) ENGINE=InnoDB AUTO_INCREMENT=2 DEFAULT CHARSET=utf8mb4 COLLATE=utf8mb4_general_ci; -/*!40101 SET character_set_client = @saved_cs_client */; - --- --- Dumping data for table `shop_user_basket` --- - -LOCK TABLES `shop_user_basket` WRITE; -/*!40000 ALTER TABLE `shop_user_basket` DISABLE KEYS */; -INSERT INTO `shop_user_basket` VALUES (1,'auth0|6582b95c895d09a70ba10fef',1,1,69,_binary '','2024-04-28 19:03:07','root@localhost',NULL); -/*!40000 ALTER TABLE `shop_user_basket` ENABLE KEYS */; -UNLOCK TABLES; -/*!50003 SET @saved_cs_client = @@character_set_client */ ; -/*!50003 SET @saved_cs_results = @@character_set_results */ ; -/*!50003 SET @saved_col_connection = @@collation_connection */ ; -/*!50003 SET character_set_client = utf8mb4 */ ; -/*!50003 SET character_set_results = utf8mb4 */ ; -/*!50003 SET collation_connection = utf8mb4_general_ci */ ; -/*!50003 SET @saved_sql_mode = @@sql_mode */ ; -/*!50003 SET sql_mode = 'ONLY_FULL_GROUP_BY,STRICT_TRANS_TABLES,NO_ZERO_IN_DATE,NO_ZERO_DATE,ERROR_FOR_DIVISION_BY_ZERO,NO_ENGINE_SUBSTITUTION' */ ; -DELIMITER ;;; -/*!50003 CREATE*/ /*!50017 DEFINER=`root`@`localhost`*/ /*!50003 TRIGGER `before_insert_Shop_User_Basket` BEFORE INSERT ON `shop_user_basket` FOR EACH ROW BEGIN - IF NEW.created_on <=> NULL THEN - SET NEW.created_on := IFNULL(NEW.created_on, NOW()); - END IF; - IF NEW.created_by <=> NULL THEN - SET NEW.created_by := IFNULL(NEW.created_by, IFNULL((SELECT id_user FROM Shop_User WHERE firstname = CURRENT_USER()), -1)); - END IF; -END */;; -DELIMITER ;; -/*!50003 SET sql_mode = @saved_sql_mode */ ; -/*!50003 SET character_set_client = @saved_cs_client */ ; -/*!50003 SET character_set_results = @saved_cs_results */ ; -/*!50003 SET collation_connection = @saved_col_connection */ ; -/*!50003 SET @saved_cs_client = @@character_set_client */ ; -/*!50003 SET @saved_cs_results = @@character_set_results */ ; -/*!50003 SET @saved_col_connection = @@collation_connection */ ; -/*!50003 SET character_set_client = utf8mb4 */ ; -/*!50003 SET character_set_results = utf8mb4 */ ; -/*!50003 SET collation_connection = utf8mb4_general_ci */ ; -/*!50003 SET @saved_sql_mode = @@sql_mode */ ; -/*!50003 SET sql_mode = 'ONLY_FULL_GROUP_BY,STRICT_TRANS_TABLES,NO_ZERO_IN_DATE,NO_ZERO_DATE,ERROR_FOR_DIVISION_BY_ZERO,NO_ENGINE_SUBSTITUTION' */ ; -DELIMITER ;;; -/*!50003 CREATE*/ /*!50017 DEFINER=`root`@`localhost`*/ /*!50003 TRIGGER `before_update_Shop_User_Basket` BEFORE UPDATE ON `shop_user_basket` FOR EACH ROW BEGIN - IF NEW.id_change_set_user <=> OLD.id_change_set_user THEN - SIGNAL SQLSTATE '45000' - SET MESSAGE_TEXT = 'New change Set ID must be provided.'; - END IF; - - INSERT INTO Shop_User_Basket_Audit ( - id_item, - name_field, - value_prev, - value_new, - id_change_set_user - ) - # Changed id_user - SELECT NEW.id_item, 'id_user', OLD.id_user, NEW.id_user, NEW.id_change_set_user - WHERE NOT OLD.id_user <=> NEW.id_user - UNION - # Changed id_product - SELECT NEW.id_item, 'id_product', OLD.id_product, NEW.id_product, NEW.id_change_set_user - WHERE NOT OLD.id_product <=> NEW.id_product - UNION - # Changed quantity - SELECT NEW.id_item, 'quantity', CONVERT(OLD.quantity, CHAR), CONVERT(NEW.quantity, CHAR), NEW.id_change_set_user - WHERE NOT (OLD.quantity <=> NEW.quantity) - UNION - # Changed active - SELECT NEW.id_item, 'active', CONVERT(CONVERT(OLD.active, SIGNED), CHAR), CONVERT(CONVERT(NEW.active, SIGNED), CHAR), NEW.id_change_set_user - WHERE NOT (OLD.active <=> NEW.active) - ; -END */;; -DELIMITER ;; -/*!50003 SET sql_mode = @saved_sql_mode */ ; -/*!50003 SET character_set_client = @saved_cs_client */ ; -/*!50003 SET character_set_results = @saved_cs_results */ ; -/*!50003 SET collation_connection = @saved_col_connection */ ; - --- --- Table structure for table `shop_user_basket_audit` --- - -DROP TABLE IF EXISTS `shop_user_basket_audit`; -/*!40101 SET @saved_cs_client = @@character_set_client */; -/*!50503 SET character_set_client = utf8mb4 */; -CREATE TABLE `shop_user_basket_audit` ( - `id_audit` int NOT NULL AUTO_INCREMENT, - `id_item` int NOT NULL, - `name_field` varchar(50) DEFAULT NULL, - `value_prev` varchar(500) DEFAULT NULL, - `value_new` varchar(500) DEFAULT NULL, - `id_change_set_user` int DEFAULT NULL, - PRIMARY KEY (`id_audit`), - KEY `FK_Shop_User_Basket_Audit_id_link` (`id_item`), - KEY `FK_Shop_User_Basket_Audit_id_change_set_user` (`id_change_set_user`), - CONSTRAINT `FK_Shop_User_Basket_Audit_id_change_set_user` FOREIGN KEY (`id_change_set_user`) REFERENCES `shop_user_change_set` (`id_change_set`), - CONSTRAINT `FK_Shop_User_Basket_Audit_id_link` FOREIGN KEY (`id_item`) REFERENCES `shop_user_basket` (`id_item`) ON UPDATE RESTRICT -) ENGINE=InnoDB DEFAULT CHARSET=utf8mb4 COLLATE=utf8mb4_general_ci; -/*!40101 SET character_set_client = @saved_cs_client */; - --- --- Dumping data for table `shop_user_basket_audit` --- - -LOCK TABLES `shop_user_basket_audit` WRITE; -/*!40000 ALTER TABLE `shop_user_basket_audit` DISABLE KEYS */; -/*!40000 ALTER TABLE `shop_user_basket_audit` ENABLE KEYS */; -UNLOCK TABLES; - --- --- Table structure for table `shop_user_change_set` --- - -DROP TABLE IF EXISTS `shop_user_change_set`; -/*!40101 SET @saved_cs_client = @@character_set_client */; -/*!50503 SET character_set_client = utf8mb4 */; -CREATE TABLE `shop_user_change_set` ( - `id_change_set` int NOT NULL AUTO_INCREMENT, - `comment` varchar(500) DEFAULT NULL, - `updated_last_on` datetime DEFAULT NULL, - `updated_last_by` varchar(100) DEFAULT NULL, - PRIMARY KEY (`id_change_set`) -) ENGINE=InnoDB DEFAULT CHARSET=utf8mb4 COLLATE=utf8mb4_general_ci; -/*!40101 SET character_set_client = @saved_cs_client */; - --- --- Dumping data for table `shop_user_change_set` --- - -LOCK TABLES `shop_user_change_set` WRITE; -/*!40000 ALTER TABLE `shop_user_change_set` DISABLE KEYS */; -/*!40000 ALTER TABLE `shop_user_change_set` ENABLE KEYS */; -UNLOCK TABLES; -/*!50003 SET @saved_cs_client = @@character_set_client */ ; -/*!50003 SET @saved_cs_results = @@character_set_results */ ; -/*!50003 SET @saved_col_connection = @@collation_connection */ ; -/*!50003 SET character_set_client = utf8mb4 */ ; -/*!50003 SET character_set_results = utf8mb4 */ ; -/*!50003 SET collation_connection = utf8mb4_general_ci */ ; -/*!50003 SET @saved_sql_mode = @@sql_mode */ ; -/*!50003 SET sql_mode = 'ONLY_FULL_GROUP_BY,STRICT_TRANS_TABLES,NO_ZERO_IN_DATE,NO_ZERO_DATE,ERROR_FOR_DIVISION_BY_ZERO,NO_ENGINE_SUBSTITUTION' */ ; -DELIMITER ;;; -/*!50003 CREATE*/ /*!50017 DEFINER=`root`@`localhost`*/ /*!50003 TRIGGER `before_insert_Shop_User_Change_Set` BEFORE INSERT ON `shop_user_change_set` FOR EACH ROW BEGIN - IF NEW.updated_last_on <=> NULL THEN - SET NEW.updated_last_on = NOW(); - END IF; - IF NEW.updated_last_by <=> NULL THEN - SET NEW.updated_last_by = CURRENT_USER(); - END IF; -END */;; -DELIMITER ;; -/*!50003 SET sql_mode = @saved_sql_mode */ ; -/*!50003 SET character_set_client = @saved_cs_client */ ; -/*!50003 SET character_set_results = @saved_cs_results */ ; -/*!50003 SET collation_connection = @saved_col_connection */ ; - --- --- Table structure for table `shop_user_order` --- - -DROP TABLE IF EXISTS `shop_user_order`; -/*!40101 SET @saved_cs_client = @@character_set_client */; -/*!50503 SET character_set_client = utf8mb4 */; -CREATE TABLE `shop_user_order` ( - `id_order` int NOT NULL AUTO_INCREMENT, - `id_user` varchar(200) NOT NULL, - `value_total` float DEFAULT NULL, - `id_order_status` int NOT NULL, - `id_checkout_session` varchar(200) NOT NULL, - `id_currency` int NOT NULL, - `active` bit(1) NOT NULL DEFAULT b'1', - `created_on` datetime DEFAULT NULL, - `created_by` varchar(100) DEFAULT NULL, - `id_change_set_user` int DEFAULT NULL, - PRIMARY KEY (`id_order`), - KEY `FK_Shop_User_Order_id_user` (`id_user`), - KEY `FK_Shop_User_Order_id_order_status` (`id_order_status`), - KEY `FK_Shop_User_Order_id_currency` (`id_currency`), - KEY `FK_Shop_User_Order_id_change_set_user` (`id_change_set_user`), - CONSTRAINT `FK_Shop_User_Order_id_change_set_user` FOREIGN KEY (`id_change_set_user`) REFERENCES `shop_user_change_set` (`id_change_set`), - CONSTRAINT `FK_Shop_User_Order_id_currency` FOREIGN KEY (`id_currency`) REFERENCES `shop_currency` (`id_currency`) ON UPDATE RESTRICT, - CONSTRAINT `FK_Shop_User_Order_id_order_status` FOREIGN KEY (`id_order_status`) REFERENCES `shop_user_order_status` (`id_status`), - CONSTRAINT `FK_Shop_User_Order_id_user` FOREIGN KEY (`id_user`) REFERENCES `shop_user` (`id_user`) ON UPDATE RESTRICT -) ENGINE=InnoDB AUTO_INCREMENT=3 DEFAULT CHARSET=utf8mb4 COLLATE=utf8mb4_general_ci; -/*!40101 SET character_set_client = @saved_cs_client */; - --- --- Dumping data for table `shop_user_order` --- - -LOCK TABLES `shop_user_order` WRITE; -/*!40000 ALTER TABLE `shop_user_order` DISABLE KEYS */; -INSERT INTO `shop_user_order` VALUES (1,'auth0|6582b95c895d09a70ba10fef',25,1,'noods',1,_binary '','2024-04-28 19:03:07','root@localhost',NULL),(2,'auth0|6582b95c895d09a70ba10fef',25,1,'noods',1,_binary '','2024-04-28 19:03:07','root@localhost',NULL); -/*!40000 ALTER TABLE `shop_user_order` ENABLE KEYS */; -UNLOCK TABLES; -/*!50003 SET @saved_cs_client = @@character_set_client */ ; -/*!50003 SET @saved_cs_results = @@character_set_results */ ; -/*!50003 SET @saved_col_connection = @@collation_connection */ ; -/*!50003 SET character_set_client = utf8mb4 */ ; -/*!50003 SET character_set_results = utf8mb4 */ ; -/*!50003 SET collation_connection = utf8mb4_general_ci */ ; -/*!50003 SET @saved_sql_mode = @@sql_mode */ ; -/*!50003 SET sql_mode = 'ONLY_FULL_GROUP_BY,STRICT_TRANS_TABLES,NO_ZERO_IN_DATE,NO_ZERO_DATE,ERROR_FOR_DIVISION_BY_ZERO,NO_ENGINE_SUBSTITUTION' */ ; -DELIMITER ;;; -/*!50003 CREATE*/ /*!50017 DEFINER=`root`@`localhost`*/ /*!50003 TRIGGER `before_insert_Shop_User_Order` BEFORE INSERT ON `shop_user_order` FOR EACH ROW BEGIN - IF NEW.created_on <=> NULL THEN - SET NEW.created_on := IFNULL(NEW.created_on, NOW()); - END IF; - IF NEW.created_by <=> NULL THEN - SET NEW.created_by := IFNULL(NEW.created_by, IFNULL((SELECT id_user FROM Shop_User WHERE firstname = CURRENT_USER()), -1)); - END IF; -END */;; -DELIMITER ;; -/*!50003 SET sql_mode = @saved_sql_mode */ ; -/*!50003 SET character_set_client = @saved_cs_client */ ; -/*!50003 SET character_set_results = @saved_cs_results */ ; -/*!50003 SET collation_connection = @saved_col_connection */ ; -/*!50003 SET @saved_cs_client = @@character_set_client */ ; -/*!50003 SET @saved_cs_results = @@character_set_results */ ; -/*!50003 SET @saved_col_connection = @@collation_connection */ ; -/*!50003 SET character_set_client = utf8mb4 */ ; -/*!50003 SET character_set_results = utf8mb4 */ ; -/*!50003 SET collation_connection = utf8mb4_general_ci */ ; -/*!50003 SET @saved_sql_mode = @@sql_mode */ ; -/*!50003 SET sql_mode = 'ONLY_FULL_GROUP_BY,STRICT_TRANS_TABLES,NO_ZERO_IN_DATE,NO_ZERO_DATE,ERROR_FOR_DIVISION_BY_ZERO,NO_ENGINE_SUBSTITUTION' */ ; -DELIMITER ;;; -/*!50003 CREATE*/ /*!50017 DEFINER=`root`@`localhost`*/ /*!50003 TRIGGER `before_update_Shop_User_Order` BEFORE UPDATE ON `shop_user_order` FOR EACH ROW BEGIN - IF OLD.id_change_set_user <=> NEW.id_change_set_user THEN - SIGNAL SQLSTATE '45000' - SET MESSAGE_TEXT = 'New change Set ID must be provided.'; - END IF; - IF NOT (NEW.id_checkout_session <=> OLD.id_checkout_session) THEN - SIGNAL SQLSTATE '45000' - SET MESSAGE_TEXT = 'Checkout session ID must not change.'; - END IF; - - INSERT INTO Shop_User_Order_Audit ( - id_order, - name_field, - value_prev, - value_new, - id_change_set_user - ) - # Changed id_user - SELECT NEW.id_order, 'id_user', OLD.id_user, NEW.id_user, NEW.id_change_set_user - WHERE NOT OLD.id_user <=> NEW.id_user - UNION - # Changed value_total - SELECT NEW.id_order, 'value_total', CONVERT(OLD.value_total, CHAR), CONVERT(NEW.value_total, CHAR), NEW.id_change_set_user - WHERE NOT (OLD.value_total <=> NEW.value_total) - UNION - # Changed id_order_status - SELECT NEW.id_order, 'id_order_status', CONVERT(OLD.id_order_status, CHAR), CONVERT(NEW.id_order_status, CHAR), NEW.id_change_set_user - WHERE NOT (OLD.id_order_status <=> NEW.id_order_status) - UNION - # Changed id_checkout_session - SELECT NEW.id_order, 'id_checkout_session', OLD.id_checkout_session, NEW.id_checkout_session, NEW.id_change_set_user - WHERE NOT (OLD.id_checkout_session <=> NEW.id_checkout_session) - UNION - # Changed active - SELECT NEW.id_order, 'active', CONVERT(CONVERT(OLD.active, SIGNED), CHAR), CONVERT(CONVERT(NEW.active, SIGNED), CHAR), NEW.id_change_set_user - WHERE NOT (OLD.active <=> NEW.active) - ; -END */;; -DELIMITER ;; -/*!50003 SET sql_mode = @saved_sql_mode */ ; -/*!50003 SET character_set_client = @saved_cs_client */ ; -/*!50003 SET character_set_results = @saved_cs_results */ ; -/*!50003 SET collation_connection = @saved_col_connection */ ; - --- --- Table structure for table `shop_user_order_audit` --- - -DROP TABLE IF EXISTS `shop_user_order_audit`; -/*!40101 SET @saved_cs_client = @@character_set_client */; -/*!50503 SET character_set_client = utf8mb4 */; -CREATE TABLE `shop_user_order_audit` ( - `id_audit` int NOT NULL AUTO_INCREMENT, - `id_order` int NOT NULL, - `name_field` varchar(50) DEFAULT NULL, - `value_prev` varchar(500) DEFAULT NULL, - `value_new` varchar(500) DEFAULT NULL, - `id_change_set_user` int DEFAULT NULL, - PRIMARY KEY (`id_audit`), - KEY `FK_Shop_User_Order_Audit_id_order` (`id_order`), - KEY `FK_Shop_User_Order_Audit_id_change_set_user` (`id_change_set_user`), - CONSTRAINT `FK_Shop_User_Order_Audit_id_change_set_user` FOREIGN KEY (`id_change_set_user`) REFERENCES `shop_user_change_set` (`id_change_set`), - CONSTRAINT `FK_Shop_User_Order_Audit_id_order` FOREIGN KEY (`id_order`) REFERENCES `shop_user_order` (`id_order`) ON UPDATE RESTRICT -) ENGINE=InnoDB DEFAULT CHARSET=utf8mb4 COLLATE=utf8mb4_general_ci; -/*!40101 SET character_set_client = @saved_cs_client */; - --- --- Dumping data for table `shop_user_order_audit` --- - -LOCK TABLES `shop_user_order_audit` WRITE; -/*!40000 ALTER TABLE `shop_user_order_audit` DISABLE KEYS */; -/*!40000 ALTER TABLE `shop_user_order_audit` ENABLE KEYS */; -UNLOCK TABLES; - --- --- Table structure for table `shop_user_order_product_link` --- - -DROP TABLE IF EXISTS `shop_user_order_product_link`; -/*!40101 SET @saved_cs_client = @@character_set_client */; -/*!50503 SET character_set_client = utf8mb4 */; -CREATE TABLE `shop_user_order_product_link` ( - `id_link` int NOT NULL AUTO_INCREMENT, - `id_order` int NOT NULL, - `id_product` int NOT NULL, - `id_permutation` int DEFAULT NULL, - `quantity` float NOT NULL, - `active` bit(1) NOT NULL DEFAULT b'1', - `created_on` datetime DEFAULT NULL, - `created_by` varchar(100) DEFAULT NULL, - `id_change_set` int DEFAULT NULL, - PRIMARY KEY (`id_link`), - KEY `FK_Shop_User_Order_Product_Link_id_order` (`id_order`), - KEY `FK_Shop_User_Order_Product_Link_id_product` (`id_product`), - KEY `FK_Shop_User_Order_Product_Link_id_permutation` (`id_permutation`), - KEY `FK_Shop_User_Order_Product_Link_id_change_set` (`id_change_set`), - CONSTRAINT `FK_Shop_User_Order_Product_Link_id_change_set` FOREIGN KEY (`id_change_set`) REFERENCES `shop_user_change_set` (`id_change_set`), - CONSTRAINT `FK_Shop_User_Order_Product_Link_id_order` FOREIGN KEY (`id_order`) REFERENCES `shop_user_order` (`id_order`) ON UPDATE RESTRICT, - CONSTRAINT `FK_Shop_User_Order_Product_Link_id_permutation` FOREIGN KEY (`id_permutation`) REFERENCES `shop_product_permutation` (`id_permutation`) ON UPDATE RESTRICT, - CONSTRAINT `FK_Shop_User_Order_Product_Link_id_product` FOREIGN KEY (`id_product`) REFERENCES `shop_product` (`id_product`) ON UPDATE RESTRICT -) ENGINE=InnoDB AUTO_INCREMENT=4 DEFAULT CHARSET=utf8mb4 COLLATE=utf8mb4_general_ci; -/*!40101 SET character_set_client = @saved_cs_client */; - --- --- Dumping data for table `shop_user_order_product_link` --- - -LOCK TABLES `shop_user_order_product_link` WRITE; -/*!40000 ALTER TABLE `shop_user_order_product_link` DISABLE KEYS */; -INSERT INTO `shop_user_order_product_link` VALUES (1,1,1,1,69,_binary '','2024-04-28 19:03:07','root@localhost',NULL),(2,1,2,NULL,69,_binary '','2024-04-28 19:03:07','root@localhost',NULL),(3,1,1,2,69,_binary '','2024-04-28 19:03:07','root@localhost',NULL); -/*!40000 ALTER TABLE `shop_user_order_product_link` ENABLE KEYS */; -UNLOCK TABLES; -/*!50003 SET @saved_cs_client = @@character_set_client */ ; -/*!50003 SET @saved_cs_results = @@character_set_results */ ; -/*!50003 SET @saved_col_connection = @@collation_connection */ ; -/*!50003 SET character_set_client = utf8mb4 */ ; -/*!50003 SET character_set_results = utf8mb4 */ ; -/*!50003 SET collation_connection = utf8mb4_general_ci */ ; -/*!50003 SET @saved_sql_mode = @@sql_mode */ ; -/*!50003 SET sql_mode = 'ONLY_FULL_GROUP_BY,STRICT_TRANS_TABLES,NO_ZERO_IN_DATE,NO_ZERO_DATE,ERROR_FOR_DIVISION_BY_ZERO,NO_ENGINE_SUBSTITUTION' */ ; -DELIMITER ;;; -/*!50003 CREATE*/ /*!50017 DEFINER=`root`@`localhost`*/ /*!50003 TRIGGER `before_insert_Shop_User_Order_Product_Link` BEFORE INSERT ON `shop_user_order_product_link` FOR EACH ROW BEGIN - IF NEW.created_on <=> NULL THEN - SET NEW.created_on := IFNULL(NEW.created_on, NOW()); - END IF; - IF NEW.created_by <=> NULL THEN - SET NEW.created_by := IFNULL(NEW.created_by, IFNULL((SELECT id_user FROM Shop_User WHERE firstname = CURRENT_USER()), -1)); - END IF; -END */;; -DELIMITER ;; -/*!50003 SET sql_mode = @saved_sql_mode */ ; -/*!50003 SET character_set_client = @saved_cs_client */ ; -/*!50003 SET character_set_results = @saved_cs_results */ ; -/*!50003 SET collation_connection = @saved_col_connection */ ; -/*!50003 SET @saved_cs_client = @@character_set_client */ ; -/*!50003 SET @saved_cs_results = @@character_set_results */ ; -/*!50003 SET @saved_col_connection = @@collation_connection */ ; -/*!50003 SET character_set_client = utf8mb4 */ ; -/*!50003 SET character_set_results = utf8mb4 */ ; -/*!50003 SET collation_connection = utf8mb4_general_ci */ ; -/*!50003 SET @saved_sql_mode = @@sql_mode */ ; -/*!50003 SET sql_mode = 'ONLY_FULL_GROUP_BY,STRICT_TRANS_TABLES,NO_ZERO_IN_DATE,NO_ZERO_DATE,ERROR_FOR_DIVISION_BY_ZERO,NO_ENGINE_SUBSTITUTION' */ ; -DELIMITER ;;; -/*!50003 CREATE*/ /*!50017 DEFINER=`root`@`localhost`*/ /*!50003 TRIGGER `before_update_Shop_User_Order_Product_Link` BEFORE UPDATE ON `shop_user_order_product_link` FOR EACH ROW BEGIN - IF OLD.id_change_set <=> NEW.id_change_set THEN - SIGNAL SQLSTATE '45000' - SET MESSAGE_TEXT = 'New change Set ID must be provided.'; - END IF; - - INSERT INTO Shop_User_Order_Product_Link_Audit ( - id_link, - name_field, - value_prev, - value_new, - id_change_set - ) - # Changed id_product - SELECT NEW.id_link, 'active', CONVERT(OLD.id_product, CHAR), CONVERT(NEW.id_product, CHAR), NEW.id_change_set - WHERE NOT (OLD.id_product <=> NEW.id_product) - UNION - # Changed quantity - SELECT NEW.id_link, 'quantity', CONVERT(OLD.quantity, CHAR), CONVERT(NEW.quantity, CHAR), NEW.id_change_set - WHERE NOT (OLD.quantity <=> NEW.quantity) - UNION - # Changed active - SELECT NEW.id_link, 'active', CONVERT(CONVERT(OLD.active, SIGNED), CHAR), CONVERT(CONVERT(NEW.active, SIGNED), CHAR), NEW.id_change_set - WHERE NOT (OLD.active <=> NEW.active) - ; -END */;; -DELIMITER ;; -/*!50003 SET sql_mode = @saved_sql_mode */ ; -/*!50003 SET character_set_client = @saved_cs_client */ ; -/*!50003 SET character_set_results = @saved_cs_results */ ; -/*!50003 SET collation_connection = @saved_col_connection */ ; - --- --- Table structure for table `shop_user_order_product_link_audit` --- - -DROP TABLE IF EXISTS `shop_user_order_product_link_audit`; -/*!40101 SET @saved_cs_client = @@character_set_client */; -/*!50503 SET character_set_client = utf8mb4 */; -CREATE TABLE `shop_user_order_product_link_audit` ( - `id_audit` int NOT NULL AUTO_INCREMENT, - `id_link` int NOT NULL, - `name_field` varchar(50) DEFAULT NULL, - `value_prev` varchar(500) DEFAULT NULL, - `value_new` varchar(500) DEFAULT NULL, - `id_change_set` int NOT NULL, - PRIMARY KEY (`id_audit`), - KEY `FK_Shop_User_Order_Product_Link_Audit_id_link` (`id_link`), - KEY `FK_Shop_User_Order_Product_Link_Audit_id_change_set` (`id_change_set`), - CONSTRAINT `FK_Shop_User_Order_Product_Link_Audit_id_change_set` FOREIGN KEY (`id_change_set`) REFERENCES `shop_user_change_set` (`id_change_set`), - CONSTRAINT `FK_Shop_User_Order_Product_Link_Audit_id_link` FOREIGN KEY (`id_link`) REFERENCES `shop_user_order_product_link` (`id_link`) ON UPDATE RESTRICT -) ENGINE=InnoDB DEFAULT CHARSET=utf8mb4 COLLATE=utf8mb4_general_ci; -/*!40101 SET character_set_client = @saved_cs_client */; - --- --- Dumping data for table `shop_user_order_product_link_audit` --- - -LOCK TABLES `shop_user_order_product_link_audit` WRITE; -/*!40000 ALTER TABLE `shop_user_order_product_link_audit` DISABLE KEYS */; -/*!40000 ALTER TABLE `shop_user_order_product_link_audit` ENABLE KEYS */; -UNLOCK TABLES; - --- --- Table structure for table `shop_user_order_status` --- - -DROP TABLE IF EXISTS `shop_user_order_status`; -/*!40101 SET @saved_cs_client = @@character_set_client */; -/*!50503 SET character_set_client = utf8mb4 */; -CREATE TABLE `shop_user_order_status` ( - `id_status` int NOT NULL AUTO_INCREMENT, - `code` varchar(50) DEFAULT NULL, - `name` varchar(255) DEFAULT NULL, - `name_plural` varchar(256) DEFAULT NULL, - `active` bit(1) NOT NULL DEFAULT b'1', - `display_order` int NOT NULL, - `created_on` datetime DEFAULT NULL, - `created_by` varchar(100) DEFAULT NULL, - `id_change_set` int DEFAULT NULL, - PRIMARY KEY (`id_status`), - KEY `FK_Shop_User_Order_Status_id_change_set` (`id_change_set`), - CONSTRAINT `FK_Shop_User_Order_Status_id_change_set` FOREIGN KEY (`id_change_set`) REFERENCES `shop_user_change_set` (`id_change_set`) -) ENGINE=InnoDB AUTO_INCREMENT=3 DEFAULT CHARSET=utf8mb4 COLLATE=utf8mb4_general_ci; -/*!40101 SET character_set_client = @saved_cs_client */; - --- --- Dumping data for table `shop_user_order_status` --- - -LOCK TABLES `shop_user_order_status` WRITE; -/*!40000 ALTER TABLE `shop_user_order_status` DISABLE KEYS */; -INSERT INTO `shop_user_order_status` VALUES (1,'SUCCESS','Success','Successes',_binary '',1,'2024-04-28 19:03:07','root@localhost',NULL),(2,'FAIL','Failure','Failures',_binary '',2,'2024-04-28 19:03:07','root@localhost',NULL); -/*!40000 ALTER TABLE `shop_user_order_status` ENABLE KEYS */; -UNLOCK TABLES; -/*!50003 SET @saved_cs_client = @@character_set_client */ ; -/*!50003 SET @saved_cs_results = @@character_set_results */ ; -/*!50003 SET @saved_col_connection = @@collation_connection */ ; -/*!50003 SET character_set_client = utf8mb4 */ ; -/*!50003 SET character_set_results = utf8mb4 */ ; -/*!50003 SET collation_connection = utf8mb4_general_ci */ ; -/*!50003 SET @saved_sql_mode = @@sql_mode */ ; -/*!50003 SET sql_mode = 'ONLY_FULL_GROUP_BY,STRICT_TRANS_TABLES,NO_ZERO_IN_DATE,NO_ZERO_DATE,ERROR_FOR_DIVISION_BY_ZERO,NO_ENGINE_SUBSTITUTION' */ ; -DELIMITER ;;; -/*!50003 CREATE*/ /*!50017 DEFINER=`root`@`localhost`*/ /*!50003 TRIGGER `before_insert_Shop_User_Order_Status` BEFORE INSERT ON `shop_user_order_status` FOR EACH ROW BEGIN - SET NEW.created_on := IFNULL(NEW.created_on, NOW()); - SET NEW.created_by := IFNULL(NEW.created_by, IFNULL((SELECT id_user FROM Shop_User WHERE firstname = CURRENT_USER()), -1)); -END */;; -DELIMITER ;; -/*!50003 SET sql_mode = @saved_sql_mode */ ; -/*!50003 SET character_set_client = @saved_cs_client */ ; -/*!50003 SET character_set_results = @saved_cs_results */ ; -/*!50003 SET collation_connection = @saved_col_connection */ ; -/*!50003 SET @saved_cs_client = @@character_set_client */ ; -/*!50003 SET @saved_cs_results = @@character_set_results */ ; -/*!50003 SET @saved_col_connection = @@collation_connection */ ; -/*!50003 SET character_set_client = utf8mb4 */ ; -/*!50003 SET character_set_results = utf8mb4 */ ; -/*!50003 SET collation_connection = utf8mb4_general_ci */ ; -/*!50003 SET @saved_sql_mode = @@sql_mode */ ; -/*!50003 SET sql_mode = 'ONLY_FULL_GROUP_BY,STRICT_TRANS_TABLES,NO_ZERO_IN_DATE,NO_ZERO_DATE,ERROR_FOR_DIVISION_BY_ZERO,NO_ENGINE_SUBSTITUTION' */ ; -DELIMITER ;;; -/*!50003 CREATE*/ /*!50017 DEFINER=`root`@`localhost`*/ /*!50003 TRIGGER `before_update_Shop_User_Order_Status` BEFORE UPDATE ON `shop_user_order_status` FOR EACH ROW BEGIN - IF OLD.id_change_set <=> NEW.id_change_set THEN - SIGNAL SQLSTATE '45000' - SET MESSAGE_TEXT = 'New change Set ID must be provided.'; - END IF; - - INSERT INTO Shop_User_Order_Status_Audit ( - id_Status, - name_field, - value_prev, - value_new, - id_change_set - ) - # Changed code - SELECT NEW.id_Status, 'code', OLD.code, NEW.code, NEW.id_change_set - WHERE NOT OLD.code <=> NEW.code - UNION - # Changed name - SELECT NEW.id_Status, 'name', OLD.name, NEW.name, NEW.id_change_set - WHERE NOT OLD.name <=> NEW.name - UNION - # Changed name_plural - SELECT NEW.id_Status, 'name_plural', OLD.name_plural, NEW.name_plural, NEW.id_change_set - WHERE NOT OLD.name_plural <=> NEW.name_plural - UNION - # Changed active - SELECT NEW.id_Status, 'active', CONVERT(CONVERT(OLD.active, SIGNED), CHAR), CONVERT(CONVERT(NEW.active, SIGNED), CHAR), NEW.id_change_set - WHERE NOT (OLD.active <=> NEW.active) - UNION - # Changed display_order - SELECT NEW.id_Status, 'display_order', CONVERT(OLD.display_order, CHAR), CONVERT(NEW.display_order, CHAR), NEW.id_change_set - WHERE NOT (OLD.display_order <=> NEW.display_order) - ; -END */;; -DELIMITER ;; -/*!50003 SET sql_mode = @saved_sql_mode */ ; -/*!50003 SET character_set_client = @saved_cs_client */ ; -/*!50003 SET character_set_results = @saved_cs_results */ ; -/*!50003 SET collation_connection = @saved_col_connection */ ; - --- --- Table structure for table `shop_user_order_status_audit` --- - -DROP TABLE IF EXISTS `shop_user_order_status_audit`; -/*!40101 SET @saved_cs_client = @@character_set_client */; -/*!50503 SET character_set_client = utf8mb4 */; -CREATE TABLE `shop_user_order_status_audit` ( - `id_audit` int NOT NULL AUTO_INCREMENT, - `id_status` int NOT NULL, - `name_field` varchar(50) DEFAULT NULL, - `value_prev` varchar(500) DEFAULT NULL, - `value_new` varchar(500) DEFAULT NULL, - `id_change_set` int NOT NULL, - PRIMARY KEY (`id_audit`), - KEY `FK_Shop_User_Order_Status_Audit_id_status` (`id_status`), - KEY `FK_Shop_User_Order_Status_Audit_id_change_set` (`id_change_set`), - CONSTRAINT `FK_Shop_User_Order_Status_Audit_id_change_set` FOREIGN KEY (`id_change_set`) REFERENCES `shop_product_change_set` (`id_change_set`), - CONSTRAINT `FK_Shop_User_Order_Status_Audit_id_status` FOREIGN KEY (`id_status`) REFERENCES `shop_user_order_status` (`id_status`) ON UPDATE RESTRICT -) ENGINE=InnoDB DEFAULT CHARSET=utf8mb4 COLLATE=utf8mb4_general_ci; -/*!40101 SET character_set_client = @saved_cs_client */; - --- --- Dumping data for table `shop_user_order_status_audit` --- - -LOCK TABLES `shop_user_order_status_audit` WRITE; -/*!40000 ALTER TABLE `shop_user_order_status_audit` DISABLE KEYS */; -/*!40000 ALTER TABLE `shop_user_order_status_audit` ENABLE KEYS */; -UNLOCK TABLES; - --- --- Table structure for table `shop_user_role_link` --- - -DROP TABLE IF EXISTS `shop_user_role_link`; -/*!40101 SET @saved_cs_client = @@character_set_client */; -/*!50503 SET character_set_client = utf8mb4 */; -CREATE TABLE `shop_user_role_link` ( - `id_link` int NOT NULL AUTO_INCREMENT, - `id_user` varchar(200) NOT NULL, - `id_role` int NOT NULL, - `active` bit(1) NOT NULL DEFAULT b'1', - `created_on` datetime DEFAULT NULL, - `created_by` varchar(100) DEFAULT NULL, - `id_change_set` int DEFAULT NULL, - PRIMARY KEY (`id_link`), - KEY `FK_Shop_User_Role_Link_id_user` (`id_user`), - KEY `FK_Shop_User_Role_Link_id_role` (`id_role`), - KEY `FK_Shop_User_Role_Link_id_change_set` (`id_change_set`), - CONSTRAINT `FK_Shop_User_Role_Link_id_change_set` FOREIGN KEY (`id_change_set`) REFERENCES `shop_user_change_set` (`id_change_set`), - CONSTRAINT `FK_Shop_User_Role_Link_id_role` FOREIGN KEY (`id_role`) REFERENCES `shop_role` (`id_role`), - CONSTRAINT `FK_Shop_User_Role_Link_id_user` FOREIGN KEY (`id_user`) REFERENCES `shop_user` (`id_user`) ON UPDATE RESTRICT -) ENGINE=InnoDB AUTO_INCREMENT=2 DEFAULT CHARSET=utf8mb4 COLLATE=utf8mb4_general_ci; -/*!40101 SET character_set_client = @saved_cs_client */; - --- --- Dumping data for table `shop_user_role_link` --- - -LOCK TABLES `shop_user_role_link` WRITE; -/*!40000 ALTER TABLE `shop_user_role_link` DISABLE KEYS */; -INSERT INTO `shop_user_role_link` VALUES (1,'auth0|6582b95c895d09a70ba10fef',1,_binary '','2024-04-28 19:03:07','root@localhost',NULL); -/*!40000 ALTER TABLE `shop_user_role_link` ENABLE KEYS */; -UNLOCK TABLES; -/*!50003 SET @saved_cs_client = @@character_set_client */ ; -/*!50003 SET @saved_cs_results = @@character_set_results */ ; -/*!50003 SET @saved_col_connection = @@collation_connection */ ; -/*!50003 SET character_set_client = utf8mb4 */ ; -/*!50003 SET character_set_results = utf8mb4 */ ; -/*!50003 SET collation_connection = utf8mb4_general_ci */ ; -/*!50003 SET @saved_sql_mode = @@sql_mode */ ; -/*!50003 SET sql_mode = 'ONLY_FULL_GROUP_BY,STRICT_TRANS_TABLES,NO_ZERO_IN_DATE,NO_ZERO_DATE,ERROR_FOR_DIVISION_BY_ZERO,NO_ENGINE_SUBSTITUTION' */ ; -DELIMITER ;;; -/*!50003 CREATE*/ /*!50017 DEFINER=`root`@`localhost`*/ /*!50003 TRIGGER `before_insert_Shop_User_Role_Link` BEFORE INSERT ON `shop_user_role_link` FOR EACH ROW BEGIN - IF NEW.created_on <=> NULL THEN - SET NEW.created_on := IFNULL(NEW.created_on, NOW()); - END IF; - IF NEW.created_by <=> NULL THEN - SET NEW.created_by := IFNULL(NEW.created_by, IFNULL((SELECT id_user FROM Shop_User WHERE firstname = CURRENT_USER()), -1)); - END IF; -END */;; -DELIMITER ;; -/*!50003 SET sql_mode = @saved_sql_mode */ ; -/*!50003 SET character_set_client = @saved_cs_client */ ; -/*!50003 SET character_set_results = @saved_cs_results */ ; -/*!50003 SET collation_connection = @saved_col_connection */ ; -/*!50003 SET @saved_cs_client = @@character_set_client */ ; -/*!50003 SET @saved_cs_results = @@character_set_results */ ; -/*!50003 SET @saved_col_connection = @@collation_connection */ ; -/*!50003 SET character_set_client = utf8mb4 */ ; -/*!50003 SET character_set_results = utf8mb4 */ ; -/*!50003 SET collation_connection = utf8mb4_general_ci */ ; -/*!50003 SET @saved_sql_mode = @@sql_mode */ ; -/*!50003 SET sql_mode = 'ONLY_FULL_GROUP_BY,STRICT_TRANS_TABLES,NO_ZERO_IN_DATE,NO_ZERO_DATE,ERROR_FOR_DIVISION_BY_ZERO,NO_ENGINE_SUBSTITUTION' */ ; -DELIMITER ;;; -/*!50003 CREATE*/ /*!50017 DEFINER=`root`@`localhost`*/ /*!50003 TRIGGER `before_update_Shop_User_Role_Link` BEFORE UPDATE ON `shop_user_role_link` FOR EACH ROW BEGIN - IF OLD.id_change_set <=> NEW.id_change_set THEN - SIGNAL SQLSTATE '45000' - SET MESSAGE_TEXT = 'New change Set ID must be provided.'; - END IF; - - INSERT INTO Shop_User_Role_Link_Audit ( - id_link, - name_field, - value_prev, - value_new, - id_change_set - ) - # Changed active - SELECT NEW.id_link, 'active', CONVERT(CONVERT(OLD.active, SIGNED), CHAR), CONVERT(CONVERT(NEW.active, SIGNED), CHAR), NEW.id_change_set - WHERE NOT (OLD.active <=> NEW.active) - ; -END */;; -DELIMITER ;; -/*!50003 SET sql_mode = @saved_sql_mode */ ; -/*!50003 SET character_set_client = @saved_cs_client */ ; -/*!50003 SET character_set_results = @saved_cs_results */ ; -/*!50003 SET collation_connection = @saved_col_connection */ ; - --- --- Table structure for table `shop_user_role_link_audit` --- - -DROP TABLE IF EXISTS `shop_user_role_link_audit`; -/*!40101 SET @saved_cs_client = @@character_set_client */; -/*!50503 SET character_set_client = utf8mb4 */; -CREATE TABLE `shop_user_role_link_audit` ( - `id_audit` int NOT NULL AUTO_INCREMENT, - `id_link` int NOT NULL, - `name_field` varchar(50) DEFAULT NULL, - `value_prev` varchar(500) DEFAULT NULL, - `value_new` varchar(500) DEFAULT NULL, - `id_change_set` int NOT NULL, - PRIMARY KEY (`id_audit`), - KEY `FK_Shop_User_Role_Link_Audit_id_link` (`id_link`), - KEY `FK_Shop_User_Role_Link_Audit_id_change_set` (`id_change_set`), - CONSTRAINT `FK_Shop_User_Role_Link_Audit_id_change_set` FOREIGN KEY (`id_change_set`) REFERENCES `shop_user_change_set` (`id_change_set`), - CONSTRAINT `FK_Shop_User_Role_Link_Audit_id_link` FOREIGN KEY (`id_link`) REFERENCES `shop_user_role_link` (`id_link`) ON UPDATE RESTRICT -) ENGINE=InnoDB DEFAULT CHARSET=utf8mb4 COLLATE=utf8mb4_general_ci; -/*!40101 SET character_set_client = @saved_cs_client */; - --- --- Dumping data for table `shop_user_role_link_audit` --- - -LOCK TABLES `shop_user_role_link_audit` WRITE; -/*!40000 ALTER TABLE `shop_user_role_link_audit` DISABLE KEYS */; -/*!40000 ALTER TABLE `shop_user_role_link_audit` ENABLE KEYS */; -UNLOCK TABLES; - --- --- Table structure for table `shop_variation` --- - -DROP TABLE IF EXISTS `shop_variation`; -/*!40101 SET @saved_cs_client = @@character_set_client */; -/*!50503 SET character_set_client = utf8mb4 */; -CREATE TABLE `shop_variation` ( - `id_variation` int NOT NULL AUTO_INCREMENT, - `id_type` int NOT NULL, - `code` varchar(50) DEFAULT NULL, - `name` varchar(255) DEFAULT NULL, - `active` bit(1) NOT NULL DEFAULT b'1', - `display_order` int NOT NULL, - `created_on` datetime DEFAULT NULL, - `created_by` varchar(100) DEFAULT NULL, - `id_change_set` int DEFAULT NULL, - PRIMARY KEY (`id_variation`), - KEY `FK_Shop_Variation_id_type` (`id_type`), - KEY `FK_Shop_Variation_id_change_set` (`id_change_set`), - CONSTRAINT `FK_Shop_Variation_id_change_set` FOREIGN KEY (`id_change_set`) REFERENCES `shop_product_change_set` (`id_change_set`), - CONSTRAINT `FK_Shop_Variation_id_type` FOREIGN KEY (`id_type`) REFERENCES `shop_variation_type` (`id_type`) ON UPDATE RESTRICT -) ENGINE=InnoDB AUTO_INCREMENT=3 DEFAULT CHARSET=utf8mb4 COLLATE=utf8mb4_general_ci; -/*!40101 SET character_set_client = @saved_cs_client */; - --- --- Dumping data for table `shop_variation` --- - -LOCK TABLES `shop_variation` WRITE; -/*!40000 ALTER TABLE `shop_variation` DISABLE KEYS */; -INSERT INTO `shop_variation` VALUES (1,1,'RED','Red',_binary '',1,'2024-04-28 19:03:07','root@localhost',NULL),(2,1,'BLUE','Blue',_binary '',2,'2024-04-28 19:03:07','root@localhost',NULL); -/*!40000 ALTER TABLE `shop_variation` ENABLE KEYS */; -UNLOCK TABLES; -/*!50003 SET @saved_cs_client = @@character_set_client */ ; -/*!50003 SET @saved_cs_results = @@character_set_results */ ; -/*!50003 SET @saved_col_connection = @@collation_connection */ ; -/*!50003 SET character_set_client = utf8mb4 */ ; -/*!50003 SET character_set_results = utf8mb4 */ ; -/*!50003 SET collation_connection = utf8mb4_general_ci */ ; -/*!50003 SET @saved_sql_mode = @@sql_mode */ ; -/*!50003 SET sql_mode = 'ONLY_FULL_GROUP_BY,STRICT_TRANS_TABLES,NO_ZERO_IN_DATE,NO_ZERO_DATE,ERROR_FOR_DIVISION_BY_ZERO,NO_ENGINE_SUBSTITUTION' */ ; -DELIMITER ;;; -/*!50003 CREATE*/ /*!50017 DEFINER=`root`@`localhost`*/ /*!50003 TRIGGER `before_insert_Shop_Variation` BEFORE INSERT ON `shop_variation` FOR EACH ROW BEGIN - SET NEW.created_on := IFNULL(NEW.created_on, NOW()); - SET NEW.created_by := IFNULL(NEW.created_by, IFNULL((SELECT id_user FROM Shop_User WHERE firstname = CURRENT_USER()), -1)); -END */;; -DELIMITER ;; -/*!50003 SET sql_mode = @saved_sql_mode */ ; -/*!50003 SET character_set_client = @saved_cs_client */ ; -/*!50003 SET character_set_results = @saved_cs_results */ ; -/*!50003 SET collation_connection = @saved_col_connection */ ; -/*!50003 SET @saved_cs_client = @@character_set_client */ ; -/*!50003 SET @saved_cs_results = @@character_set_results */ ; -/*!50003 SET @saved_col_connection = @@collation_connection */ ; -/*!50003 SET character_set_client = utf8mb4 */ ; -/*!50003 SET character_set_results = utf8mb4 */ ; -/*!50003 SET collation_connection = utf8mb4_general_ci */ ; -/*!50003 SET @saved_sql_mode = @@sql_mode */ ; -/*!50003 SET sql_mode = 'ONLY_FULL_GROUP_BY,STRICT_TRANS_TABLES,NO_ZERO_IN_DATE,NO_ZERO_DATE,ERROR_FOR_DIVISION_BY_ZERO,NO_ENGINE_SUBSTITUTION' */ ; -DELIMITER ;;; -/*!50003 CREATE*/ /*!50017 DEFINER=`root`@`localhost`*/ /*!50003 TRIGGER `before_update_Shop_Variation` BEFORE UPDATE ON `shop_variation` FOR EACH ROW BEGIN - IF OLD.id_change_set <=> NEW.id_change_set THEN - SIGNAL SQLSTATE '45000' - SET MESSAGE_TEXT = 'New change Set ID must be provided.'; - END IF; - - INSERT INTO Shop_Variation_Audit ( - id_variation, - name_field, - value_prev, - value_new, - id_change_set - ) - # Changed code - SELECT NEW.id_variation, 'code', OLD.code, NEW.code, NEW.id_change_set - WHERE NOT OLD.code <=> NEW.code - UNION - # Changed name - SELECT NEW.id_variation, 'name', OLD.name, NEW.name, NEW.id_change_set - WHERE NOT OLD.name <=> NEW.name - UNION - # Changed active - SELECT NEW.id_variation, 'active', CONVERT(CONVERT(OLD.active, SIGNED), CHAR), CONVERT(CONVERT(NEW.active, SIGNED), CHAR), NEW.id_change_set - WHERE NOT (OLD.active <=> NEW.active) - UNION - # Changed display_order - SELECT NEW.id_variation, 'display_order', CONVERT(OLD.display_order, CHAR), CONVERT(NEW.display_order, CHAR), NEW.id_change_set - WHERE NOT (OLD.display_order <=> NEW.display_order) - ; -END */;; -DELIMITER ;; -/*!50003 SET sql_mode = @saved_sql_mode */ ; -/*!50003 SET character_set_client = @saved_cs_client */ ; -/*!50003 SET character_set_results = @saved_cs_results */ ; -/*!50003 SET collation_connection = @saved_col_connection */ ; - --- --- Table structure for table `shop_variation_audit` --- - -DROP TABLE IF EXISTS `shop_variation_audit`; -/*!40101 SET @saved_cs_client = @@character_set_client */; -/*!50503 SET character_set_client = utf8mb4 */; -CREATE TABLE `shop_variation_audit` ( - `id_audit` int NOT NULL AUTO_INCREMENT, - `id_variation` int NOT NULL, - `name_field` varchar(50) DEFAULT NULL, - `value_prev` varchar(500) DEFAULT NULL, - `value_new` varchar(500) DEFAULT NULL, - `id_change_set` int NOT NULL, - PRIMARY KEY (`id_audit`), - KEY `FK_Shop_Variation_Audit_id_variation` (`id_variation`), - KEY `FK_Shop_Variation_Audit_id_change_set` (`id_change_set`), - CONSTRAINT `FK_Shop_Variation_Audit_id_change_set` FOREIGN KEY (`id_change_set`) REFERENCES `shop_product_change_set` (`id_change_set`), - CONSTRAINT `FK_Shop_Variation_Audit_id_variation` FOREIGN KEY (`id_variation`) REFERENCES `shop_variation` (`id_variation`) ON UPDATE RESTRICT -) ENGINE=InnoDB DEFAULT CHARSET=utf8mb4 COLLATE=utf8mb4_general_ci; -/*!40101 SET character_set_client = @saved_cs_client */; - --- --- Dumping data for table `shop_variation_audit` --- - -LOCK TABLES `shop_variation_audit` WRITE; -/*!40000 ALTER TABLE `shop_variation_audit` DISABLE KEYS */; -/*!40000 ALTER TABLE `shop_variation_audit` ENABLE KEYS */; -UNLOCK TABLES; - --- --- Table structure for table `shop_variation_type` --- - -DROP TABLE IF EXISTS `shop_variation_type`; -/*!40101 SET @saved_cs_client = @@character_set_client */; -/*!50503 SET character_set_client = utf8mb4 */; -CREATE TABLE `shop_variation_type` ( - `id_type` int NOT NULL AUTO_INCREMENT, - `code` varchar(50) DEFAULT NULL, - `name` varchar(255) DEFAULT NULL, - `name_plural` varchar(256) DEFAULT NULL, - `active` bit(1) NOT NULL DEFAULT b'1', - `display_order` int NOT NULL, - `created_on` datetime DEFAULT NULL, - `created_by` varchar(100) DEFAULT NULL, - `id_change_set` int DEFAULT NULL, - PRIMARY KEY (`id_type`), - KEY `FK_Shop_Variation_Type_id_change_set` (`id_change_set`), - CONSTRAINT `FK_Shop_Variation_Type_id_change_set` FOREIGN KEY (`id_change_set`) REFERENCES `shop_product_change_set` (`id_change_set`) -) ENGINE=InnoDB AUTO_INCREMENT=2 DEFAULT CHARSET=utf8mb4 COLLATE=utf8mb4_general_ci; -/*!40101 SET character_set_client = @saved_cs_client */; - --- --- Dumping data for table `shop_variation_type` --- - -LOCK TABLES `shop_variation_type` WRITE; -/*!40000 ALTER TABLE `shop_variation_type` DISABLE KEYS */; -INSERT INTO `shop_variation_type` VALUES (1,'COLOUR','Colour','Colours',_binary '',1,'2024-04-28 19:03:07','root@localhost',NULL); -/*!40000 ALTER TABLE `shop_variation_type` ENABLE KEYS */; -UNLOCK TABLES; -/*!50003 SET @saved_cs_client = @@character_set_client */ ; -/*!50003 SET @saved_cs_results = @@character_set_results */ ; -/*!50003 SET @saved_col_connection = @@collation_connection */ ; -/*!50003 SET character_set_client = utf8mb4 */ ; -/*!50003 SET character_set_results = utf8mb4 */ ; -/*!50003 SET collation_connection = utf8mb4_general_ci */ ; -/*!50003 SET @saved_sql_mode = @@sql_mode */ ; -/*!50003 SET sql_mode = 'ONLY_FULL_GROUP_BY,STRICT_TRANS_TABLES,NO_ZERO_IN_DATE,NO_ZERO_DATE,ERROR_FOR_DIVISION_BY_ZERO,NO_ENGINE_SUBSTITUTION' */ ; -DELIMITER ;;; -/*!50003 CREATE*/ /*!50017 DEFINER=`root`@`localhost`*/ /*!50003 TRIGGER `before_insert_Shop_Variation_Type` BEFORE INSERT ON `shop_variation_type` FOR EACH ROW BEGIN - SET NEW.created_on := IFNULL(NEW.created_on, NOW()); - SET NEW.created_by := IFNULL(NEW.created_by, IFNULL((SELECT id_user FROM Shop_User WHERE firstname = CURRENT_USER()), -1)); -END */;; -DELIMITER ;; -/*!50003 SET sql_mode = @saved_sql_mode */ ; -/*!50003 SET character_set_client = @saved_cs_client */ ; -/*!50003 SET character_set_results = @saved_cs_results */ ; -/*!50003 SET collation_connection = @saved_col_connection */ ; -/*!50003 SET @saved_cs_client = @@character_set_client */ ; -/*!50003 SET @saved_cs_results = @@character_set_results */ ; -/*!50003 SET @saved_col_connection = @@collation_connection */ ; -/*!50003 SET character_set_client = utf8mb4 */ ; -/*!50003 SET character_set_results = utf8mb4 */ ; -/*!50003 SET collation_connection = utf8mb4_general_ci */ ; -/*!50003 SET @saved_sql_mode = @@sql_mode */ ; -/*!50003 SET sql_mode = 'ONLY_FULL_GROUP_BY,STRICT_TRANS_TABLES,NO_ZERO_IN_DATE,NO_ZERO_DATE,ERROR_FOR_DIVISION_BY_ZERO,NO_ENGINE_SUBSTITUTION' */ ; -DELIMITER ;;; -/*!50003 CREATE*/ /*!50017 DEFINER=`root`@`localhost`*/ /*!50003 TRIGGER `before_update_Shop_Variation_Type` BEFORE UPDATE ON `shop_variation_type` FOR EACH ROW BEGIN - IF OLD.id_change_set <=> NEW.id_change_set THEN - SIGNAL SQLSTATE '45000' - SET MESSAGE_TEXT = 'New change Set ID must be provided.'; - END IF; - - INSERT INTO Shop_Variation_Type_Audit ( - id_type, - name_field, - value_prev, - value_new, - id_change_set - ) - # Changed code - SELECT NEW.id_type, 'code', OLD.code, NEW.code, NEW.id_change_set - WHERE NOT OLD.code <=> NEW.code - UNION - # Changed name - SELECT NEW.id_type, 'name', OLD.name, NEW.name, NEW.id_change_set - WHERE NOT OLD.name <=> NEW.name - UNION - # Changed name_plural - SELECT NEW.id_type, 'name_plural', OLD.name_plural, NEW.name_plural, NEW.id_change_set - WHERE NOT OLD.name_plural <=> NEW.name_plural - UNION - # Changed active - SELECT NEW.id_type, 'active', CONVERT(CONVERT(OLD.active, SIGNED), CHAR), CONVERT(CONVERT(NEW.active, SIGNED), CHAR), NEW.id_change_set - WHERE NOT (OLD.active <=> NEW.active) - UNION - # Changed display_order - SELECT NEW.id_type, 'display_order', CONVERT(OLD.display_order, CHAR), CONVERT(NEW.display_order, CHAR), NEW.id_change_set - WHERE NOT (OLD.display_order <=> NEW.display_order) - ; -END */;; -DELIMITER ;; -/*!50003 SET sql_mode = @saved_sql_mode */ ; -/*!50003 SET character_set_client = @saved_cs_client */ ; -/*!50003 SET character_set_results = @saved_cs_results */ ; -/*!50003 SET collation_connection = @saved_col_connection */ ; - --- --- Table structure for table `shop_variation_type_audit` --- - -DROP TABLE IF EXISTS `shop_variation_type_audit`; -/*!40101 SET @saved_cs_client = @@character_set_client */; -/*!50503 SET character_set_client = utf8mb4 */; -CREATE TABLE `shop_variation_type_audit` ( - `id_audit` int NOT NULL AUTO_INCREMENT, - `id_type` int NOT NULL, - `name_field` varchar(50) DEFAULT NULL, - `value_prev` varchar(500) DEFAULT NULL, - `value_new` varchar(500) DEFAULT NULL, - `id_change_set` int NOT NULL, - PRIMARY KEY (`id_audit`), - KEY `FK_Shop_Variation_Type_Audit_id_type` (`id_type`), - KEY `FK_Shop_Variation_Type_Audit_id_change_set` (`id_change_set`), - CONSTRAINT `FK_Shop_Variation_Type_Audit_id_change_set` FOREIGN KEY (`id_change_set`) REFERENCES `shop_product_change_set` (`id_change_set`), - CONSTRAINT `FK_Shop_Variation_Type_Audit_id_type` FOREIGN KEY (`id_type`) REFERENCES `shop_variation_type` (`id_type`) ON UPDATE RESTRICT -) ENGINE=InnoDB DEFAULT CHARSET=utf8mb4 COLLATE=utf8mb4_general_ci; -/*!40101 SET character_set_client = @saved_cs_client */; - --- --- Dumping data for table `shop_variation_type_audit` --- - -LOCK TABLES `shop_variation_type_audit` WRITE; -/*!40000 ALTER TABLE `shop_variation_type_audit` DISABLE KEYS */; -/*!40000 ALTER TABLE `shop_variation_type_audit` ENABLE KEYS */; -UNLOCK TABLES; - --- --- Table structure for table `tmp_msg_error` --- - -DROP TABLE IF EXISTS `tmp_msg_error`; -/*!40101 SET @saved_cs_client = @@character_set_client */; -/*!50503 SET character_set_client = utf8mb4 */; -CREATE TABLE `tmp_msg_error` ( - `display_order` int NOT NULL AUTO_INCREMENT, - `guid` varchar(36) NOT NULL, - `id_type` int NOT NULL, - `msg` varchar(4000) NOT NULL, - PRIMARY KEY (`display_order`), - KEY `FK_tmp_Msg_Error_id_type` (`id_type`), - CONSTRAINT `FK_tmp_Msg_Error_id_type` FOREIGN KEY (`id_type`) REFERENCES `shop_msg_error_type` (`id_type`) -) ENGINE=InnoDB DEFAULT CHARSET=utf8mb4 COLLATE=utf8mb4_general_ci; -/*!40101 SET character_set_client = @saved_cs_client */; - --- --- Dumping data for table `tmp_msg_error` --- - -LOCK TABLES `tmp_msg_error` WRITE; -/*!40000 ALTER TABLE `tmp_msg_error` DISABLE KEYS */; -/*!40000 ALTER TABLE `tmp_msg_error` ENABLE KEYS */; -UNLOCK TABLES; - --- --- Dumping events for database 'partsltd_prod' --- - --- --- Dumping routines for database 'partsltd_prod' --- -/*!50003 DROP PROCEDURE IF EXISTS `p_shop_edit_user` */; -/*!50003 SET @saved_cs_client = @@character_set_client */ ; -/*!50003 SET @saved_cs_results = @@character_set_results */ ; -/*!50003 SET @saved_col_connection = @@collation_connection */ ; -/*!50003 SET character_set_client = utf8mb4 */ ; -/*!50003 SET character_set_results = utf8mb4 */ ; -/*!50003 SET collation_connection = utf8mb4_general_ci */ ; -/*!50003 SET @saved_sql_mode = @@sql_mode */ ; -/*!50003 SET sql_mode = 'ONLY_FULL_GROUP_BY,STRICT_TRANS_TABLES,NO_ZERO_IN_DATE,NO_ZERO_DATE,ERROR_FOR_DIVISION_BY_ZERO,NO_ENGINE_SUBSTITUTION' */ ; -DELIMITER ;;; -CREATE DEFINER=`root`@`localhost` PROCEDURE `p_shop_edit_user`( - IN a_id_user INT, - IN a_name VARCHAR(255), - IN a_email VARCHAR(254), - IN a_email_verified BIT -) -BEGIN - -- Argument redeclaration - -- Variable declaration - DECLARE v_has_filter_user BIT; - -- DECLARE v_now DATETIME; - - - -- Argument validation + default values - IF a_id_user IS NULL THEN - SET a_id_user = ''; - ELSE - SET a_id_user = TRIM(a_id_user); - END IF; - IF a_name IS NULL THEN - SET a_name = ''; - ELSE - SET a_name = TRIM(a_name); - END IF; - IF a_email IS NULL THEN - SET a_email = ''; - ELSE - SET a_email = TRIM(a_email); - END IF; - IF a_email_verified IS NULL THEN - SET a_email_verified = 0; - END IF; - - -- Temporary tables - DROP TABLE IF EXISTS tmp_Msg_Error; - DROP TABLE IF EXISTS tmp_Shop_User; - - CREATE TABLE tmp_Shop_User ( - id_user INT NOT NULL, - CONSTRAINT FK_tmp_Shop_User_id_user - FOREIGN KEY (id_user) - REFERENCES Shop_User(id_user), - active BIT NOT NULL - ); - - CREATE TABLE tmp_Msg_Error ( - display_order INT NOT NULL PRIMARY KEY AUTO_INCREMENT, - id_type INT NOT NULL, - # code VARCHAR(50) NOT NULL, - # CONSTRAINT chk_tmp_Msg_Error_code CHECK (code IN (SELECT code FROM Shop_Msg_Error_Type)), - CONSTRAINT FK_tmp_Msg_Error_id_type - FOREIGN KEY (id_type) - REFERENCES Shop_Msg_Error_Type(id_type), - msg VARCHAR(4000) NOT NULL - ); - - - -- Parse filters - SET v_has_filter_user = CASE WHEN a_id_user = '' THEN 0 ELSE 1 END; - - - -- User - IF v_has_filter_user THEN - INSERT INTO tmp_Shop_User ( - id_user, - active - ) - SELECT id_user, - active - FROM Shop_User - WHERE id_user LIKE CONCAT('%', a_id_user, '%') - AND active - LIMIT 1 - ; - - IF NOT EXISTS (SELECT id_user FROM tmp_Shop_User LIMIT 1) THEN - INSERT INTO Shop_User ( - id_user, - name, - email, - email_verified - ) - VALUES ( - a_id_user, - a_name, - a_email, - a_email_verified - ); - - INSERT INTO tmp_Shop_User ( - id_user, - active - ) - SELECT id_user, - active - FROM Shop_User - WHERE id_user LIKE CONCAT('%', a_id_user, '%') - AND active - LIMIT 1 - ; - END IF; - - SET a_id_user := (SELECT id_user FROM tmp_Shop_User LIMIT 1); - ELSE - INSERT INTO tmp_Msg_Error ( - id_type, - msg - ) - VALUES ( - (SELECT id_type FROM Shop_Msg_Error_Type WHERE code = 'BAD_DATA' LIMIT 1), - 'No user ID provided.' - ) - ; - END IF; - - - /* - IF NOT EXISTS (SELECT msg FROM tmp_Msg_Error LIMIT 1) THEN - END IF; - */ - - - -- Returns - # User - SELECT * - FROM tmp_Shop_User - ; - - # Errors - SELECT * - FROM tmp_Msg_Error - ; - - /* - # Return arguments for test - SELECT a_id_user, - a_name, - a_email, - a_email_verified - ; - */ - - -- Clean up - DROP TABLE IF EXISTS tmp_Msg_Error; - DROP TABLE IF EXISTS tmp_Shop_User; -END ;; -DELIMITER ;; -/*!50003 SET sql_mode = @saved_sql_mode */ ; -/*!50003 SET character_set_client = @saved_cs_client */ ; -/*!50003 SET character_set_results = @saved_cs_results */ ; -/*!50003 SET collation_connection = @saved_col_connection */ ; -/*!50003 DROP PROCEDURE IF EXISTS `p_shop_edit_user_basket` */; -/*!50003 SET @saved_cs_client = @@character_set_client */ ; -/*!50003 SET @saved_cs_results = @@character_set_results */ ; -/*!50003 SET @saved_col_connection = @@collation_connection */ ; -/*!50003 SET character_set_client = utf8mb4 */ ; -/*!50003 SET character_set_results = utf8mb4 */ ; -/*!50003 SET collation_connection = utf8mb4_general_ci */ ; -/*!50003 SET @saved_sql_mode = @@sql_mode */ ; -/*!50003 SET sql_mode = 'ONLY_FULL_GROUP_BY,STRICT_TRANS_TABLES,NO_ZERO_IN_DATE,NO_ZERO_DATE,ERROR_FOR_DIVISION_BY_ZERO,NO_ENGINE_SUBSTITUTION' */ ; -DELIMITER ;;; -CREATE DEFINER=`root`@`localhost` PROCEDURE `p_shop_edit_user_basket`( - IN a_id_user INT, - IN a_ids_permutation_basket VARCHAR(4000), - IN a_quantities_permutation_basket VARCHAR(4000), - IN a_id_permutation_edit INT, - IN a_quantity_permutation_edit INT, - IN a_sum_not_edit BIT, - IN a_id_currency INT, - IN a_id_region_purchase INT -) -BEGIN - -- Argument redeclaration - -- Variable declaration - DECLARE v_has_filter_user BIT; - DECLARE v_has_filter_permutation_basket BIT; - DECLARE v_has_filter_permutation_edit BIT; - DECLARE v_has_filter_region BIT; - DECLARE v_has_filter_currency BIT; - DECLARE v_n_id_permutation_basket INT; - DECLARE v_n_quantity_permutation_basket INT; - DECLARE v_row_number INT; - DECLARE v_guid BINARY(36); - # DECLARE v_id_user VARCHAR(100); - DECLARE v_id_permission_product INT; - DECLARE v_ids_permutation_permission VARCHAR(4000); - DECLARE v_now DATETIME; - # DECLARE v_quantity_new INT; - DECLARE v_change_set_used BIT; - DECLARE v_id_change_set INT; - - SET v_guid = UUID(); - - -- Argument validation + default values - IF a_id_user IS NULL THEN - SET a_id_user = ''; - ELSE - SET a_id_user = TRIM(a_id_user); - END IF; - IF a_ids_permutation_basket IS NULL THEN - SET a_ids_permutation_basket = ''; - ELSE - SET a_ids_permutation_basket = TRIM(a_ids_permutation_basket); - END IF; - IF a_quantities_permutation_basket IS NULL THEN - SET a_quantities_permutation_basket = ''; - ELSE - SET a_quantities_permutation_basket = TRIM(a_quantities_permutation_basket); - END IF; - IF a_sum_not_edit IS NULL THEN - SET a_sum_not_edit = 1; - END IF; - - -- Temporary tables - DROP TABLE IF EXISTS tmp_Msg_Error; - DROP TABLE IF EXISTS tmp_Shop_Basket; - DROP TEMPORARY TABLE IF EXISTS tmp_Shop_Quantity; - DROP TABLE IF EXISTS tmp_Shop_Product; - DROP TABLE IF EXISTS tmp_Shop_User; - - CREATE TABLE tmp_Shop_User ( - id_user INT NOT NULL, - CONSTRAINT FK_tmp_Shop_User_id_user - FOREIGN KEY (id_user) - REFERENCES Shop_User(id_user), - active BIT NOT NULL - ); - - CREATE TABLE tmp_Shop_Product ( - id_product INT NOT NULL, - CONSTRAINT FK_tmp_Shop_Product_id_product - FOREIGN KEY (id_product) - REFERENCES Shop_Product(id_product), - id_permutation INT NOT NULL, - CONSTRAINT FK_tmp_Shop_Product_id_permutation - FOREIGN KEY (id_permutation) - REFERENCES Shop_Product_Permutation(id_permutation), - display_order INT NOT NULL, - active INT NOT NULL DEFAULT 1 - ); - - CREATE TEMPORARY TABLE tmp_Shop_Quantity( - quantity INT NOT NULL, - display_order INT NOT NULL, - active INT NOT NULL DEFAULT 1 - ); - - CREATE TABLE tmp_Shop_Basket ( - id_category INT NOT NULL, - CONSTRAINT FK_tmp_Shop_Basket_id_category - FOREIGN KEY (id_category) - REFERENCES Shop_Product_Category(id_category), - id_product INT NOT NULL, - CONSTRAINT FK_tmp_Shop_Basket_id_product - FOREIGN KEY (id_product) - REFERENCES Shop_Product(id_product), - id_permutation INT NOT NULL, - CONSTRAINT FK_tmp_Shop_Basket_id_permutation - FOREIGN KEY (id_permutation) - REFERENCES Shop_Product_Permutation(id_permutation), - id_region_purchase INT NOT NULL, - CONSTRAINT FK_tmp_Shop_Basket_id_region_purchase - FOREIGN KEY (id_region_purchase) - REFERENCES Shop_Region(id_region), - id_currency INT NOT NULL, - CONSTRAINT FK_tmp_Shop_Basket_id_currency - FOREIGN KEY (id_currency) - REFERENCES Shop_Currency(id_currency), - quantity INT NOT NULL, - active BIT NOT NULL DEFAULT 1 - /* - display_order_category INT NOT NULL, - display_order_product INT NOT NULL - */ - ); - - CREATE TABLE IF NOT EXISTS tmp_Msg_Error ( - display_order INT NOT NULL PRIMARY KEY AUTO_INCREMENT, - guid BINARY(36) NOT NULL, - id_type INT NOT NULL, - # code VARCHAR(50) NOT NULL, - # CONSTRAINT chk_tmp_Msg_Error_code CHECK (code IN (SELECT code FROM Shop_Msg_Error_Type)), - CONSTRAINT FK_tmp_Msg_Error_id_type - FOREIGN KEY (id_type) - REFERENCES Shop_Msg_Error_Type(id_type), - msg VARCHAR(4000) NOT NULL - ); - - - -- Parse filters - SET v_has_filter_user = NOT (a_id_user = ''); - SET v_has_filter_permutation_basket = NOT (a_ids_permutation_basket = ''); - SET v_has_filter_permutation_edit = NOT ISNULL(a_id_permutation_edit); - SET v_has_filter_currency = NOT ISNULL(a_id_currency); - SET v_has_filter_region = NOT ISNULL(a_id_region_purchase); - # SET v_quantity_new = CASE WHEN a_sum_not_edit THEN quantity + a_quantity_product_edit ELSE a_quantity_product_edit END; - /* - SELECT v_has_filter_user, v_has_filter_basket - ; - - */ - - -- Currency - IF NOT v_has_filter_currency THEN - INSERT INTO tmp_Msg_Error ( - id_type, - guid, - msg - ) - VALUES ( - (SELECT id_type FROM Shop_Msg_Error_Type WHERE code = 'BAD_DATA' LIMIT 1), - v_guid, - 'Currency ID not provided.' - ) - ; - END IF; - IF v_has_filter_currency AND NOT EXISTS ( SELECT * FROM Shop_Currency WHERE id_currency = a_id_currency) THEN - INSERT INTO tmp_Msg_Error ( - id_type, - guid, - msg - ) - VALUES ( - (SELECT id_type FROM Shop_Msg_Error_Type WHERE code = 'BAD_DATA' LIMIT 1), - v_guid, - CONCAT('Currency ID not found: ', a_id_currency, '.') - ) - ; - END IF; - - -- Region - IF NOT v_has_filter_region THEN - INSERT INTO tmp_Msg_Error ( - id_type, - guid, - msg - ) - VALUES ( - (SELECT id_type FROM Shop_Msg_Error_Type WHERE code = 'BAD_DATA' LIMIT 1), - v_guid, - 'Region ID not provided.' - ) - ; - END IF; - IF v_has_filter_region AND NOT EXISTS ( SELECT * FROM Shop_Region WHERE id_region = a_id_region_purchase) THEN - INSERT INTO tmp_Msg_Error ( - id_type, - guid, - msg - ) - VALUES ( - (SELECT id_type FROM Shop_Msg_Error_Type WHERE code = 'BAD_DATA' LIMIT 1), - v_guid, - CONCAT('Region ID not found: ', a_id_region_purchase, '.') - ) - ; - END IF; - - -- User - IF v_has_filter_user THEN - INSERT INTO tmp_Shop_User ( - id_user, - active - ) - SELECT id_user, - active - FROM Shop_User - WHERE id_user LIKE CONCAT('%', a_id_user, '%') - AND active - LIMIT 1 - ; - - IF NOT EXISTS (SELECT id_user FROM tmp_Shop_User LIMIT 1) THEN - SET v_has_filter_user = 0; - - INSERT INTO tmp_Msg_Error ( - id_type, - guid, - msg - ) - VALUES ( - (SELECT id_type FROM Shop_Msg_Error_Type WHERE code = 'BAD_DATA' LIMIT 1), - v_guid, - CONCAT('User ID not found: ', a_id_user, '.') - ) - ; - END IF; - - SET a_id_user := (SELECT id_user FROM tmp_Shop_User LIMIT 1); - END IF; - - IF v_has_filter_user AND NOT EXISTS (SELECT msg FROM tmp_Msg_Error WHERE guid = v_guid LIMIT 1) THEN - SET v_change_set_used = 0; - INSERT INTO Shop_User_Change_Set ( - comment - ) - VALUES ( - 'edit basket' - ); - SET v_id_change_set := (SELECT id_change_set FROM Shop_User_Change_Set ORDER BY id_change_set DESC LIMIT 1); - END IF; - - -- Get basket - -- User - IF v_has_filter_user AND NOT EXISTS (SELECT msg FROM tmp_Msg_Error WHERE guid = v_guid LIMIT 1) THEN - INSERT INTO tmp_Shop_Basket ( - id_category, - id_product, - id_permutation, - id_region_purchase, - id_currency, - quantity, - active - /* - display_order_category, - display_order_product - */ - ) - SELECT - C.id_category, - UB.id_product, - UB.id_permutation, - UB.id_region_purchase, - UB.id_currency, - UB.quantity, - UB.active - /* - C.display_order, - P.display_order - */ - FROM Shop_User_Basket UB - /* - INNER JOIN tmp_Shop_User t_U - ON UB.id_user = t_U.id_user - */ - INNER JOIN Shop_Product_Permutation PP - ON UB.id_product = PP.id_product - AND PP.active - INNER JOIN Shop_Product P - ON PP.id_product = P.id_product - AND P.active - INNER JOIN Shop_Product_Category C - ON P.id_category = C.id_category - AND C.active - WHERE UB.id_user = a_id_user - ; - END IF; - - -- Currency - IF EXISTS (SELECT * FROM tmp_Shop_Basket WHERE active LIMIT 1) - AND NOT EXISTS (SELECT msg FROM tmp_Msg_Error WHERE guid = v_guid LIMIT 1) THEN - IF EXISTS (SELECT * FROM tmp_Shop_Basket WHERE active AND id_currency != a_id_currency) THEN - INSERT INTO tmp_Msg_Error ( - id_type, - guid, - msg - ) - VALUES ( - (SELECT id_type FROM Shop_Msg_Error_Type WHERE code = 'BAD_DATA' LIMIT 1), - v_guid, - CONCAT( - 'Currency ID does not match currency of other items in basket. Basket currency: ', - (SELECT code FROM Shop_Currency WHERE id_currency = ( - SELECT - id_currency - FROM tmp_Shop_Basket - WHERE active - AND id_currency != a_id_currency - LIMIT 1 - )), - ', new currency: ', - (SELECT code FROM Shop_Currency WHERE id_currency = a_id_currency), - '.' - ) - ) - ; - END IF; - END IF; - - -- Region - IF EXISTS (SELECT * FROM tmp_Shop_Basket WHERE active LIMIT 1) - AND NOT EXISTS (SELECT msg FROM tmp_Msg_Error WHERE guid = v_guid LIMIT 1) THEN - IF EXISTS ( - SELECT * - FROM tmp_Shop_Basket - WHERE - active - AND id_region_purchase != a_id_region_purchase - ) THEN - INSERT INTO tmp_Msg_Error ( - id_type, - guid, - msg - ) - VALUES ( - (SELECT id_type FROM Shop_Msg_Error_Type WHERE code = 'BAD_DATA' LIMIT 1), - v_guid, - CONCAT('Purchase region ID does not match region of other items in basket. Basket currency: ', - (SELECT code FROM Shop_Region WHERE id_region = ( - SELECT - id_region_purchase - FROM tmp_Shop_Basket - WHERE active - AND id_region != a_id_region_purchase - LIMIT 1 - )), - ', new currency: ', - (SELECT code FROM Shop_Region WHERE id_region = a_id_region_purchase), - '.' - ) - ) - ; - END IF; - END IF; - - -- String product id, permutation id, quantity list - IF NOT EXISTS (SELECT * FROM tmp_Shop_Basket WHERE active LIMIT 1) AND NOT EXISTS (SELECT msg FROM tmp_Msg_Error WHERE guid = v_guid LIMIT 1) THEN -- NOT v_has_filter_user AND - # Get product ids - CALL p_split(a_ids_permutation_basket, ','); - INSERT INTO tmp_Shop_Product ( - id_product, id_permutation, display_order - ) - SELECT PP.id_product, ST.substring, ST.display_order - FROM Split_Temp ST - INNER JOIN Shop_Product_Permutation PP - ON ST.substring = PP.id_permutation - -- AND PP.active - ; - /* - SELECT substring as id_product, display_order - FROM Split_Temp - ; - */ - DROP TABLE Split_Temp; - - # Get product quantities - CALL p_split(a_quantities_permutation_basket, ','); - INSERT INTO tmp_Shop_Quantity ( - quantity, display_order - ) - SELECT substring, display_order - FROM Split_Temp - ; - /* - SELECT substring AS quantity_product, display_order - FROM Split_Temp - ; - */ - DROP TABLE Split_Temp; - - # Compare number of product ids to number of quantities - SET v_n_id_permutation_basket := (SELECT display_order FROM tmp_Shop_Product ORDER BY display_order DESC LIMIT 1); - SET v_n_quantity_permutation_basket := (SELECT display_order FROM tmp_Shop_Quantity ORDER BY display_order DESC LIMIT 1); - IF NOT v_n_id_permutation_basket = v_n_quantity_permutation_basket THEN - INSERT INTO tmp_Msg_Error ( - id_type, - guid, - msg - ) - VALUES ( - (SELECT id_type FROM Shop_Msg_Error_Type WHERE code = 'BAD_DATA' LIMIT 1), - v_guid, - CONCAT('Number of permutations (', v_n_id_permutation_basket, ') does not equal number of quantities (', v_n_quantity_permutation_basket, ') for basket.') - ) - ; - ELSE - INSERT INTO tmp_Shop_Basket ( - id_category, - id_product, - id_permutation, - id_region_purchase, - id_currency, - quantity - ) - SELECT - C.id_category, - P.id_product, - t_P.id_permutation, - a_id_region_purchase, - a_id_currency, - t_Q.quantity - FROM tmp_Shop_Product t_P - INNER JOIN tmp_Shop_Quantity t_Q - ON t_P.display_order = t_Q.display_order - INNER JOIN Shop_Product_Permutation PP - ON t_P.id_permutation = PP.id_permutation - AND PP.active - INNER JOIN Shop_Product P - ON PP.id_product = P.id_product - AND P.active - INNER JOIN Shop_Product_Category C - ON P.id_category = C.id_category - AND C.active - -- RIGHT JOIN tmp_Shop_Basket t_UB ON ISNULL(t_UB.id_product) - -- WHERE t_P.id_product NOT IN (SELECT id_product FROM tmp_Shop_Basket) - ; - - /* - IF EXISTS( - SELECT * - FROM Shop_Product P - INNER JOIN Shop_Product_Category C - ON P.id_category = C.id_category - INNER JOIN tmp_Shop_Basket t_B - ON P.id_product = t_B.id_product - WHERE C.active = 0 OR P.active = 0 LIMIT 1 - ) THEN - INSERT INTO tmp_Msg_Error ( - id_type, - guid, - msg - ) - VALUES ( - (SELECT id_type FROM Shop_Msg_Error_Type WHERE code = 'BAD_DATA' LIMIT 1), - v_guid, - CONCAT('No valid product IDs in list: ', a_ids_permutation_basket, '.') - ) - ; - END IF; - */ - END IF; - END IF; - - /* - select v_has_filter_edit; - select * from tmp_Shop_Basket; - select * from tmp_Msg_Error; - */ - - - # Edit basket product - IF v_has_filter_permutation_edit AND NOT EXISTS (SELECT msg FROM tmp_Msg_Error WHERE guid = v_guid LIMIT 1) THEN - IF EXISTS ( - SELECT * - FROM Shop_Product_Permutation PP - INNER JOIN Shop_Product P - ON PP.id_product = P.id_product - INNER JOIN Shop_Product_Category C - ON P.id_category = C.id_category - WHERE - ( - C.active = 0 - OR P.active = 0 - OR PP.active = 0 - ) - AND PP.id_permutation = a_id_permutation_edit - LIMIT 1 - ) THEN - INSERT INTO tmp_Msg_Error ( - id_type, - guid, - msg - ) - VALUES ( - (SELECT id_type FROM Shop_Msg_Error_Type WHERE code = 'BAD_DATA' LIMIT 1), - v_guid, - CONCAT('Invalid product ID to edit: ', a_id_product_edit, '.') - ) - ; - END IF; - END IF; - IF v_has_filter_permutation_edit AND NOT EXISTS (SELECT msg FROM tmp_Msg_Error WHERE guid = v_guid LIMIT 1) THEN - IF EXISTS ( - SELECT * - FROM tmp_Shop_Basket - WHERE - id_permutation = a_id_permutation_edit - ) THEN - UPDATE tmp_Shop_Basket - SET quantity = CASE WHEN a_sum_not_edit = 1 THEN IFNULL(quantity, 0) + a_quantity_permutation_edit ELSE a_quantity_permutation_edit END, - active = CASE WHEN CASE WHEN a_sum_not_edit = 1 THEN IFNULL(quantity, 0) + a_quantity_permutation_edit ELSE a_quantity_permutation_edit END = 0 THEN 0 ELSE 1 END - WHERE id_permutation = a_id_permutation_edit - ; - - IF EXISTS ( - SELECT * - FROM tmp_Shop_Basket t_B - WHERE t_B.quantity < 0 - ) THEN - INSERT INTO tmp_Msg_Error ( - id_type, - guid, - msg - ) - VALUES ( - (SELECT id_type FROM Shop_Msg_Error_Type WHERE code = 'BAD_DATA' LIMIT 1), - v_guid, - 'Invalid basket quantity.' - ) - ; - END IF; - - IF v_has_filter_user AND NOT EXISTS (SELECT msg FROM tmp_Msg_Error WHERE guid = v_guid LIMIT 1) THEN - SET v_change_set_used = 1; - - UPDATE Shop_User_Basket UB - INNER JOIN tmp_Shop_Basket t_UB - ON UB.id_permutation = a_id_permutation_edit - SET UB.quantity = t_UB.quantity, - UB.active = t_UB.active, - UB.id_change_set_user = v_id_change_set - WHERE UB.id_permutation = a_id_permutation_edit - AND id_user = a_id_user - ; - END IF; - ELSE - IF a_quantity_permutation_edit < 0 THEN - INSERT INTO tmp_Msg_Error ( - id_type, - guid, - msg - ) - VALUES ( - (SELECT id_type FROM Shop_Msg_Error_Type WHERE code = 'BAD_DATA' LIMIT 1), - v_guid, - 'Invalid basket quantity.' - ) - ; - ELSE - INSERT INTO tmp_Shop_Basket ( - id_category, - id_product, - id_permutation, - id_region_purchase, - id_currency, - quantity, - active - ) - SELECT - P.id_category, - P.id_product, - PP.id_permutation, - a_id_region_purchase, - a_id_currency, - a_quantity_permutation_edit, - CASE WHEN a_quantity_permutation_edit > 0 THEN 1 ELSE 0 END - FROM Shop_Product_Permutation PP - INNER JOIN Shop_Product P - ON PP.id_product = P.id_product - WHERE id_permutation = a_id_permutation_edit - ; - IF v_has_filter_user THEN - IF EXISTS ( - SELECT * - FROM Shop_User_Basket UB - WHERE - UB.id_permutation = a_id_permutation_edit - ) THEN - SET v_change_set_used = 1; - - UPDATE Shop_User_Basket - INNER JOIN tmp_Shop_Basket t_UB ON UB.id_permutation = t_UB.id_permutation - SET UB.quantity = t_UB.quantity, - UB.active = t_UB.active, - UB.id_change_set_user = v_id_change_set - WHERE UB.id_permutation = a_id_permutation_edit - AND id_user = a_id_user - ; - ELSE - INSERT INTO Shop_User_Basket ( - id_user, - id_product, - id_permutation, - id_region_purchase, - id_currency, - quantity, - active - ) - SELECT a_id_user, - t_UB.id_product, - t_UB.id_permutation, - t_UB.id_region_purchase, - t_UB.id_currency, - t_UB.quantity, - t_UB.active - FROM tmp_Shop_Basket t_UB - WHERE id_permutation = a_id_permutation_edit - ; - END IF; - END IF; - END IF; - END IF; - END IF; - - - -- Checks - /* - SELECT * FROM tmp_Shop_Basket; - SELECT - GROUP_CONCAT(t_UB.id_product SEPARATOR ',') AS basket_product_ids - FROM tmp_Shop_Basket t_UB - -- WHERE ISNULL(t_UB.id_permutation) - ; - SELECT - GROUP_CONCAT(t_UB.id_permutation SEPARATOR ',') AS basket_permutation_ids - FROM tmp_Shop_Basket t_UB - WHERE NOT ISNULL(t_UB.id_permutation) - ; - */ - -- Returns - CALL p_shop_get_many_product ( - a_id_user, # a_id_user - 1, # a_get_all_categories - '', # a_ids_category - 0, # a_get_inactive_categories - 0, # a_get_all_products - ( - SELECT - GROUP_CONCAT(t_B.id_product SEPARATOR ',') - FROM tmp_Shop_Basket t_B - WHERE active = 1 - ), # a_ids_product - 0, # a_get_inactive_products - 0, # a_get_first_product_only - 0, # a_get_all_product_permutations - ( - SELECT - GROUP_CONCAT(t_B.id_permutation SEPARATOR ',') - FROM tmp_Shop_Basket t_B - WHERE NOT ISNULL(t_B.id_permutation) - AND active = 1 - ), # a_ids_permutation - 0, # a_get_inactive_permutations - 0, # a_get_all_images - '', # a_ids_image - 0, # a_get_inactive_images - 1, # a_get_first_image_only - 0, # a_get_all_delivery_region - a_id_region_purchase, # a_ids_delivery_region - 0, # a_get_inactive_delivery_region - 0, # a_get_all_currency - a_id_currency, # a_ids_currency - 0, # a_get_inactive_currency - 1, # a_get_all_discount - '', # a_ids_discount - 0 # a_get_inactive_discount - ); - - # Basket - SELECT t_UB.id_category, - t_UB.id_product, - t_UB.id_permutation, - P.name, - PCL.price_local_VAT_incl, - PCL.price_local_VAT_excl, - PCL.id_currency, - t_UB.quantity - FROM tmp_Shop_Basket t_UB - INNER JOIN Shop_Product_Permutation PP - ON t_UB.id_permutation = PP.id_permutation - INNER JOIN Shop_Product P - ON PP.id_product = P.id_product - INNER JOIN Shop_Product_Category C - ON P.id_category = C.id_category - INNER JOIN Shop_Product_Currency_Link PCL - ON PP.id_permutation = PCL.id_permutation - AND PCL.id_region_purchase = a_id_region_purchase - AND PCL.id_currency = a_id_currency - WHERE t_UB.active = 1 - ORDER BY C.display_order, P.display_order - ; - - # Errors - /* Completed by product get many */ - SELECT - t_ME.display_order, - t_ME.guid, - t_ME.id_type, - t_ME.msg, - MET.code, - MET.name, - MET.description - FROM tmp_Msg_Error t_ME - INNER JOIN Shop_Msg_Error_Type MET - ON t_ME.id_type = MET.id_type - WHERE GUID = v_guid - ; - - /* - # Return arguments for test - SELECT - a_ids_category, - a_get_inactive_categories, - a_ids_product, - a_get_inactive_products, - a_get_first_product_only, - a_get_all_products, - a_ids_image, - a_get_inactive_images, - a_get_first_image_only, - a_get_all_images - ; - */ - - -- Clean up - IF NOT v_change_set_used THEN - DELETE FROM Shop_User_Change_Set - WHERE id_change_set = v_id_change_set - ; - END IF; - - # DROP TABLE IF EXISTS tmp_Msg_Error; - DELETE FROM tmp_Msg_Error WHERE guid = v_guid; - IF NOT EXISTS (SELECT * FROM tmp_Msg_Error) THEN - DROP TABLE tmp_Msg_Error; - END IF; - DROP TABLE IF EXISTS tmp_Shop_Basket; - DROP TEMPORARY TABLE IF EXISTS tmp_Shop_Quantity; - DROP TABLE IF EXISTS tmp_Shop_Product; - DROP TABLE IF EXISTS tmp_Shop_User; -END ;; -DELIMITER ;; -/*!50003 SET sql_mode = @saved_sql_mode */ ; -/*!50003 SET character_set_client = @saved_cs_client */ ; -/*!50003 SET character_set_results = @saved_cs_results */ ; -/*!50003 SET collation_connection = @saved_col_connection */ ; -/*!50003 DROP PROCEDURE IF EXISTS `p_shop_get_many_currency` */; -/*!50003 SET @saved_cs_client = @@character_set_client */ ; -/*!50003 SET @saved_cs_results = @@character_set_results */ ; -/*!50003 SET @saved_col_connection = @@collation_connection */ ; -/*!50003 SET character_set_client = utf8mb4 */ ; -/*!50003 SET character_set_results = utf8mb4 */ ; -/*!50003 SET collation_connection = utf8mb4_general_ci */ ; -/*!50003 SET @saved_sql_mode = @@sql_mode */ ; -/*!50003 SET sql_mode = 'ONLY_FULL_GROUP_BY,STRICT_TRANS_TABLES,NO_ZERO_IN_DATE,NO_ZERO_DATE,ERROR_FOR_DIVISION_BY_ZERO,NO_ENGINE_SUBSTITUTION' */ ; -DELIMITER ;;; -CREATE DEFINER=`root`@`localhost` PROCEDURE `p_shop_get_many_currency`( - IN a_get_inactive_currency BIT -) -BEGIN - IF a_get_inactive_currency IS NULL THEN - SET a_get_inactive_currency = 0; - END IF; - - SELECT - C.id_currency, - C.code, - C.name, - C.factor_from_GBP, - C.active, - C.display_order - FROM Shop_Currency C - WHERE a_get_inactive_currency - OR C.active - ORDER BY C.display_order - ; -END ;; -DELIMITER ;; -/*!50003 SET sql_mode = @saved_sql_mode */ ; -/*!50003 SET character_set_client = @saved_cs_client */ ; -/*!50003 SET character_set_results = @saved_cs_results */ ; -/*!50003 SET collation_connection = @saved_col_connection */ ; -/*!50003 DROP PROCEDURE IF EXISTS `p_shop_get_many_product` */; -/*!50003 SET @saved_cs_client = @@character_set_client */ ; -/*!50003 SET @saved_cs_results = @@character_set_results */ ; -/*!50003 SET @saved_col_connection = @@collation_connection */ ; -/*!50003 SET character_set_client = utf8mb4 */ ; -/*!50003 SET character_set_results = utf8mb4 */ ; -/*!50003 SET collation_connection = utf8mb4_general_ci */ ; -/*!50003 SET @saved_sql_mode = @@sql_mode */ ; -/*!50003 SET sql_mode = 'ONLY_FULL_GROUP_BY,STRICT_TRANS_TABLES,NO_ZERO_IN_DATE,NO_ZERO_DATE,ERROR_FOR_DIVISION_BY_ZERO,NO_ENGINE_SUBSTITUTION' */ ; -DELIMITER ;;; -CREATE DEFINER=`root`@`localhost` PROCEDURE `p_shop_get_many_product`( - IN a_id_user INT, - IN a_get_all_category BIT, - IN a_ids_category VARCHAR(500), - IN a_get_inactive_category BIT, - IN a_get_all_product BIT, - IN a_ids_product VARCHAR(500), - IN a_get_inactive_product BIT, - IN a_get_first_product_only BIT, - IN a_get_all_product_permutation BIT, - IN a_ids_permutation VARCHAR(4000), - IN a_get_inactive_permutation BIT, - IN a_get_all_image BIT, - IN a_ids_image VARCHAR(4000), - IN a_get_inactive_image BIT, - IN a_get_first_image_only BIT, - IN a_get_all_delivery_region BIT, - IN a_ids_delivery_region VARCHAR(4000), - IN a_get_inactive_delivery_region BIT, - IN a_get_all_currency BIT, - IN a_ids_currency VARCHAR(4000), - IN a_get_inactive_currency BIT, - IN a_get_all_discount BIT, - IN a_ids_discount VARCHAR(4000), - IN a_get_inactive_discount BIT -) -BEGIN - -- Argument redeclaration - -- Variable declaration - DECLARE v_has_filter_category BIT; - DECLARE v_has_filter_product BIT; - DECLARE v_has_filter_permutation BIT; - DECLARE v_has_filter_image BIT; - DECLARE v_has_filter_delivery_region BIT; - DECLARE v_has_filter_currency BIT; - DECLARE v_has_filter_discount BIT; - DECLARE v_guid BINARY(36); - # DECLARE v_id_user VARCHAR(100); - DECLARE v_ids_permutation_unavailable VARCHAR(4000); - DECLARE v_id_permission_product INT; - DECLARE v_ids_product_permission VARCHAR(4000); - DECLARE v_ids_permutation_permission VARCHAR(4000); - DECLARE v_id_access_level_view INT; - DECLARE v_now DATETIME; - DECLARE v_id_minimum INT; - - SET v_guid := UUID(); - SET v_id_access_level_view := (SELECT id_access_level FROM Shop_Access_Level WHERE code = 'VIEW'); - - - -- Argument validation + default values - IF a_id_user IS NULL THEN - SET a_id_user = ''; - ELSE - SET a_id_user = TRIM(a_id_user); - END IF; - IF a_get_all_category IS NULL THEN - SET a_get_all_category = 0; - END IF; - IF a_ids_category IS NULL THEN - SET a_ids_category = ''; - ELSE - SET a_ids_category = REPLACE(TRIM(a_ids_category), '|', ','); - END IF; - IF a_get_inactive_category IS NULL THEN - SET a_get_inactive_category = 0; - END IF; - IF a_ids_product IS NULL THEN - SET a_ids_product = ''; - ELSE - SET a_ids_product = REPLACE(TRIM(a_ids_product), '|', ','); - END IF; - IF a_get_inactive_product IS NULL THEN - SET a_get_inactive_product = 0; - END IF; - IF a_get_first_product_only IS NULL THEN - SET a_get_first_product_only = 1; - END IF; - IF a_get_all_product IS NULL THEN - SET a_get_all_product = 0; - END IF; - IF a_ids_permutation IS NULL THEN - SET a_ids_permutation = ''; - ELSE - SET a_ids_permutation = REPLACE(TRIM(a_ids_permutation), '|', ','); - END IF; - IF a_get_inactive_permutation IS NULL THEN - SET a_get_inactive_permutation = 0; - END IF; - IF a_get_all_image IS NULL THEN - SET a_get_all_image = 1; - END IF; - IF a_ids_image IS NULL THEN - SET a_ids_image = ''; - ELSE - SET a_ids_image = REPLACE(TRIM(a_ids_image), '|', ','); - END IF; - IF a_get_inactive_image IS NULL THEN - SET a_get_inactive_image = 0; - END IF; - IF a_get_first_image_only IS NULL THEN - SET a_get_first_image_only = 0; - END IF; - IF a_get_inactive_image IS NULL THEN - SET a_get_inactive_image = 0; - END IF; - IF a_get_all_delivery_region IS NULL THEN - SET a_get_all_delivery_region = 1; - END IF; - IF a_ids_delivery_region IS NULL THEN - SET a_ids_delivery_region = ''; - ELSE - SET a_ids_delivery_region = REPLACE(TRIM(a_ids_delivery_region), '|', ','); - END IF; - IF a_get_inactive_delivery_region IS NULL THEN - SET a_get_inactive_delivery_region = 0; - END IF; - IF a_get_all_currency IS NULL THEN - SET a_get_all_currency = 1; - END IF; - IF a_ids_currency IS NULL THEN - SET a_ids_currency = ''; - ELSE - SET a_ids_currency = REPLACE(TRIM(a_ids_currency), '|', ','); - END IF; - IF a_get_inactive_currency IS NULL THEN - SET a_get_inactive_currency = 0; - END IF; - IF a_get_all_discount IS NULL THEN - SET a_get_all_discount = 1; - END IF; - IF a_ids_discount IS NULL THEN - SET a_ids_discount = ''; - ELSE - SET a_ids_discount = REPLACE(TRIM(a_ids_discount), '|', ','); - END IF; - IF a_get_inactive_discount IS NULL THEN - SET a_get_inactive_discount = 0; - END IF; - - /* - SELECT a_id_user, a_get_all_category, a_ids_category, a_get_inactive_category, a_get_all_product, - a_ids_product, a_get_inactive_product, a_get_first_product_only, a_get_all_product_permutation, a_ids_permutation, - a_get_inactive_permutation, a_get_all_image, a_ids_image, a_get_inactive_image, a_get_first_image_only, - a_get_all_delivery_region, a_ids_delivery_region, a_get_inactive_delivery_region, a_get_all_currency, a_ids_currency, - a_get_inactive_currency, a_get_all_discount, a_ids_discount, a_get_inactive_discount - ; - */ - - -- Temporary tables - DROP TABLE IF EXISTS tmp_Discount; - DROP TABLE IF EXISTS tmp_Currency; - DROP TABLE IF EXISTS tmp_Delivery_Region; - DROP TABLE IF EXISTS tmp_Shop_Image; - DROP TABLE IF EXISTS tmp_Shop_Variation; - DROP TABLE IF EXISTS tmp_Shop_Product; - DROP TABLE IF EXISTS tmp_Shop_Product_Category; - - CREATE TABLE tmp_Shop_Product_Category ( - id_category INT NOT NULL, - CONSTRAINT FK_tmp_Shop_Product_Category_id_category - FOREIGN KEY (id_category) - REFERENCES Shop_Product_Category(id_category), - active BIT NOT NULL, - display_order INT NOT NULL, - can_view BIT, - can_edit BIT, - can_admin BIT - ); - - CREATE TABLE tmp_Shop_Product ( - id_category INT NOT NULL, - CONSTRAINT FK_tmp_Shop_Product_id_category - FOREIGN KEY (id_category) - REFERENCES Shop_Product_Category(id_category), - id_product INT NOT NULL, - CONSTRAINT FK_tmp_Shop_Product_id_product - FOREIGN KEY (id_product) - REFERENCES Shop_Product(id_product), - -- product_has_variations BIT NOT NULL, - id_permutation INT NULL, - CONSTRAINT FK_tmp_Shop_Product_id_permutation - FOREIGN KEY (id_permutation) - REFERENCES Shop_Product_Permutation(id_permutation), - active_category BIT NOT NULL, - active_product BIT NOT NULL, - active_permutation BIT NULL, - display_order_category INT NOT NULL, - display_order_product INT NOT NULL, - display_order_permutation INT NULL, - rank_permutation INT NOT NULL, # _in_category - name VARCHAR(255) NOT NULL, - description VARCHAR(4000) NOT NULL, - /* - price_GBP_full FLOAT NOT NULL, - price_GBP_min FLOAT NOT NULL, - */ - latency_manufacture INT NOT NULL, - quantity_min FLOAT NOT NULL, - quantity_max FLOAT NOT NULL, - quantity_step FLOAT NOT NULL, - quantity_stock FLOAT NOT NULL, - is_subscription BIT NOT NULL, - id_unit_measurement_interval_recurrence INT, - CONSTRAINT FK_tmp_Shop_Product_id_unit_measurement_interval_recurrence - FOREIGN KEY (id_unit_measurement_interval_recurrence) - REFERENCES Shop_Interval_Recurrence(id_interval), - count_interval_recurrence INT, - id_stripe_product VARCHAR(100), - product_has_variations INT NOT NULL, - can_view BIT, - can_edit BIT, - can_admin BIT - ); - - /* - CREATE TEMPORARY TABLE tmp_Shop_Variation ( - id_variation INT NOT NULL, - id_product INT NOT NULL, - display_order INT NOT NULL - ); - */ - - CREATE TABLE tmp_Shop_Image ( - id_image INT NOT NULL, - CONSTRAINT FK_tmp_Shop_Image_id_image - FOREIGN KEY (id_image) - REFERENCES Shop_Image(id_image), - id_product INT NOT NULL, - CONSTRAINT FK_tmp_Shop_Image_id_product - FOREIGN KEY (id_product) - REFERENCES Shop_Product(id_product), - id_permutation INT NULL, - CONSTRAINT FK_tmp_Shop_Image_id_permutation - FOREIGN KEY (id_permutation) - REFERENCES Shop_Product_Permutation(id_permutation), - active BIT NOT NULL, - display_order INT NOT NULL, - rank_in_product_permutation INT NOT NULL - ); - - CREATE TABLE tmp_Delivery_Region ( - id_region INT NOT NULL, - CONSTRAINT FK_tmp_Delivery_Region_id_region - FOREIGN KEY (id_region) - REFERENCES Shop_Region(id_region), - active BIT NOT NULL, - display_order INT NOT NULL, - requires_delivery_option BIT NOT NULL DEFAULT 0 - ); - - CREATE TABLE tmp_Currency ( - id_currency INT NOT NULL, - CONSTRAINT FK_tmp_Shop_Currency_id_currency - FOREIGN KEY (id_currency) - REFERENCES Shop_Currency(id_currency), - active BIT NOT NULL, - display_order INT NOT NULL - ); - - CREATE TABLE tmp_Discount ( - id_discount INT NOT NULL, - CONSTRAINT FK_tmp_Discount_id_discount - FOREIGN KEY (id_discount) - REFERENCES Shop_Discount(id_discount), - active BIT NOT NULL, - display_order INT NOT NULL - ); - - CREATE TABLE IF NOT EXISTS tmp_Msg_Error ( # IF NOT EXISTS - display_order INT NOT NULL PRIMARY KEY AUTO_INCREMENT, - guid BINARY(36) NOT NULL, - # code VARCHAR(50) NOT NULL, - # CONSTRAINT chk_tmp_Msg_Error_code CHECK (code IN (SELECT code FROM Shop_Msg_Error_Type)), - id_type INT NOT NULL, - CONSTRAINT FK_tmp_Msg_Error_id_type - FOREIGN KEY (id_type) - REFERENCES Shop_Msg_Error_Type(id_type), - msg VARCHAR(4000) NOT NULL - ); - - - -- Parse filters - SET v_has_filter_category = CASE WHEN a_ids_category = '' THEN 0 ELSE 1 END; - SET v_has_filter_product = CASE WHEN a_ids_product = '' THEN 0 ELSE 1 END; - SET v_has_filter_permutation = CASE WHEN a_ids_permutation = '' THEN 0 ELSE 1 END; - SET v_has_filter_image = CASE WHEN a_ids_image = '' THEN 0 ELSE 1 END; - SET v_has_filter_delivery_region = CASE WHEN a_ids_delivery_region = '' THEN 0 ELSE 1 END; - SET v_has_filter_currency = CASE WHEN a_ids_currency = '' THEN 0 ELSE 1 END; - SET v_has_filter_discount = CASE WHEN a_ids_discount = '' THEN 0 ELSE 1 END; - - -- select v_has_filter_product, v_has_filter_permutation; - - INSERT INTO tmp_Shop_Product ( - id_category, - id_product, - id_permutation, - active_category, - active_product, - active_permutation, - display_order_category, - display_order_product, - display_order_permutation, - rank_permutation, - name, - description, - /* - price_GBP_VAT_incl, - price_GBP_VAT_excl, - price_GBP_min, - */ - latency_manufacture, - quantity_min, - quantity_max, - quantity_step, - quantity_stock, - is_subscription, - id_unit_measurement_interval_recurrence, - count_interval_recurrence, - id_stripe_product, - product_has_variations - ) - SELECT - P.id_category, - P.id_product, - -- P.has_variations AS product_has_variations, - PP.id_permutation, - C.active AS active_category, - P.active AS active_product, - PP.active AS active_permutation, - C.display_order AS display_order_category, - P.display_order AS display_order_product, - PP.display_order AS display_order_permutation, - RANK() OVER (ORDER BY C.display_order, P.display_order, PP.display_order) AS rank_permutation, #PARTITION BY P.id_category # _in_category - P.name, - PP.description, - /* - PP.price_GBP_VAT_incl, - PP.price_GBP_VAT_excl, - PP.price_GBP_min, - */ - PP.latency_manufacture, - PP.quantity_min, - PP.quantity_max, - PP.quantity_step, - PP.quantity_stock, - PP.is_subscription, - PP.id_unit_measurement_interval_recurrence, - PP.count_interval_recurrence, - PP.id_stripe_product, - P.has_variations - FROM Shop_Product P - INNER JOIN Shop_Product_Permutation PP - ON P.id_product = PP.id_product - INNER JOIN Shop_Product_Category C - ON P.id_category = C.id_category - WHERE - # permutations - ( - ( - a_get_all_product_permutation - OR v_has_filter_permutation AND FIND_IN_SET(PP.id_permutation, a_ids_permutation) > 0 - ) - AND (a_get_inactive_permutation OR PP.active) - ) - # categories - AND ( - ( - a_get_all_category - OR v_has_filter_category AND FIND_IN_SET(P.id_category, a_ids_category) > 0 - ) - AND (a_get_inactive_category OR C.active) - ) - # products - AND ( - ( - a_get_all_product - OR v_has_filter_product AND FIND_IN_SET(P.id_product, a_ids_product) > 0 - ) - AND (a_get_inactive_product OR P.active) - ) - ; - - -- select * from tmp_Shop_Product; - - IF a_get_first_product_only THEN - DELETE FROM tmp_Shop_Product t_P - WHERE t_P.rank_permutation > 1 - ; - END IF; - - INSERT INTO tmp_Shop_Product_Category ( - id_category, - active, - display_order - ) - SELECT DISTINCT C.id_category, - C.active, - C.display_order - FROM tmp_Shop_Product t_P - INNER JOIN Shop_Product_Category C - ON t_P.id_category = C.id_category - ORDER BY C.display_order - ; - - /* - INSERT INTO tmp_Shop_Variation ( - id_variation, id_product # , display_order - ) - SELECT P.id_variation, P.id_product # , P.display_order - FROM Shop_Variation V - INNER JOIN tmp_Shop_Product t_P - ON V.id_product = t_P.id_product - WHERE V.active; - */ - - # Product Images - INSERT INTO tmp_Shop_Image ( - id_product, - id_permutation, - id_image, - active, - display_order, - rank_in_product_permutation - ) - SELECT id_product, - id_permutation, - id_image, - active, - ROW_NUMBER() OVER (ORDER BY display_order_product_temp, display_order_image), - RANK() OVER (PARTITION BY id_product, id_permutation ORDER BY display_order_product_temp, display_order_image) - FROM ( - SELECT t_P.id_product, - I.id_permutation, - I.id_image, - I.active, - I.display_order AS display_order_image, - t_P.rank_permutation AS display_order_product_temp - FROM Shop_Image I - INNER JOIN tmp_Shop_Product t_P - ON I.id_product = t_P.id_product - AND NOT t_P.product_has_variations - UNION - SELECT t_P.id_product, - I.id_permutation, - I.id_image, - I.active, - I.display_order AS display_order_image, - t_P.rank_permutation AS display_order_product_temp - FROM Shop_Image I - INNER JOIN tmp_Shop_Product t_P - ON I.id_permutation = t_P.id_permutation - AND t_P.product_has_variations - ) IPP - WHERE (a_get_all_image OR a_get_first_image_only OR FIND_IN_SET(id_image, a_ids_image) > 0) - AND (a_get_inactive_image OR IPP.active) - ; - - IF a_get_first_image_only THEN - DELETE FROM tmp_Shop_Image - WHERE rank_in_product_permutation > 1 - ; - END IF; - - /* - IF v_has_filter_image THEN - DELETE FROM tmp_Shop_Product - WHERE id_product NOT IN (SELECT DISTINCT id_product FROM tmp_Shop_Image); - DELETE FROM tmp_Shop_Product_Category - WHERE id_category NOT IN (SELECT DISTINCT id_category FROM tmp_Shop_Product); - END IF; - */ - - # Delivery Regions - INSERT INTO tmp_Delivery_Region ( - id_region, - active, - display_order, - requires_delivery_option - ) - WITH RECURSIVE Recursive_CTE_Delivery_Region AS ( - SELECT - DR.id_region AS id_region_parent, - NULL AS id_region_child, - CASE WHEN FIND_IN_SET(DR.id_region, a_ids_delivery_region) > 0 THEN 1 ELSE 0 END AS requires_delivery_option - FROM Shop_Product_Currency_Region_Link PCRL - INNER JOIN Shop_Currency C ON PCRL.id_currency = C.id_currency - INNER JOIN tmp_Shop_Product t_P - ON PCRL.id_product <=> t_P.id_product - AND PCRL.id_permutation <=> t_P.id_permutation - INNER JOIN Shop_Region DR ON PCRL.id_region_purchase = DR.id_region - WHERE - ( - a_get_all_delivery_region - OR FIND_IN_SET(DR.id_region, a_ids_delivery_region) > 0 - ) - AND ( - a_get_inactive_delivery_region - OR DR.active = 1 - ) - UNION - SELECT - DRB.id_region_parent, - DRB.id_region_child, - 0 AS requires_delivery_option - FROM Shop_Region_Branch DRB - INNER JOIN Recursive_CTE_Delivery_Region r_DR - ON DRB.id_region_parent = r_DR.id_region_child - AND ( - a_get_inactive_delivery_region - OR DRB.active = 1 - ) - ) - SELECT - DR.id_region, - DR.active, - DR.display_order, - requires_delivery_option - FROM Shop_Region DR - INNER JOIN Recursive_CTE_Delivery_Region r_DR - ON DR.id_region = r_DR.id_region_parent - OR DR.id_region = r_DR.id_region_child - ; - /* - select * from tmp_delivery_region; - SELECT * - FROM tmp_Shop_Product t_P - WHERE - /*( - a_get_all_category - OR a_get_all_product - OR a_get_all_product_permutation - )* - FIND_IN_SET(t_P.id_category, a_ids_category) > 0 - OR FIND_IN_SET(t_P.id_product, a_ids_product) > 0 - OR FIND_IN_SET(t_P.id_permutation, a_ids_permutation) > 0 - ; - */ - - IF v_has_filter_delivery_region THEN - SET v_ids_permutation_unavailable = ( - SELECT GROUP_CONCAT(t_P.id_permutation SEPARATOR ', ') - FROM ( - SELECT * - FROM tmp_Shop_Product t_P - WHERE - /*( - a_get_all_category - OR a_get_all_produc - OR a_get_all_product_permutation - )*/ - FIND_IN_SET(t_P.id_category, a_ids_category) > 0 - OR FIND_IN_SET(t_P.id_product, a_ids_product) > 0 - OR FIND_IN_SET(t_P.id_permutation, a_ids_permutation) > 0 - ) t_P - LEFT JOIN ( - SELECT * - FROM Shop_Product_Currency_Region_Link PCRL - WHERE - ( - a_get_all_delivery_region - OR FIND_IN_SET(PCRL.id_region_purchase, a_ids_delivery_region) > 0 - ) - ) PCRL - ON t_P.id_product <=> PCRL.id_product - AND t_P.id_permutation <=> PCRL.id_permutation - LEFT JOIN tmp_Delivery_Region t_DR - ON PCRL.id_region_purchase = t_DR.id_region - AND t_DR.requires_delivery_option = 1 - WHERE - ISNULL(t_DR.id_region) - ); - IF NOT ISNULL(v_ids_permutation_unavailable) THEN - INSERT INTO tmp_Msg_Error ( - guid, - id_type, - msg - ) - VALUES ( - v_guid, - (SELECT id_type FROM Shop_Msg_Error_Type WHERE code = 'PRODUCT_AVAILABILITY' LIMIT 1), - CONCAT('Error: The following permutation IDs are not available in this region: ', v_ids_permutation_unavailable) - ); - END IF; - /* - DELETE FROM tmp_Shop_Product t_P - WHERE t_P.id_permutation NOT IN ( - SELECT - id_permutation - FROM Shop_Product_Currency_Region_Link PCL - INNER JOIN tmp_Delivery_Region t_DR - ON PCRL.id_region_purchase = t_DR.id_region - ); - */ - END IF; - - -- select * from tmp_Shop_Product; - - # Currencies - IF NOT EXISTS (SELECT * FROM tmp_Msg_Error WHERE guid = v_guid) THEN - INSERT INTO tmp_Currency ( - id_currency, - active, - display_order - ) - SELECT - C.id_currency, - C.active, - C.display_order - FROM Shop_Product_Currency_Region_Link PCRL - INNER JOIN Shop_Currency C ON PCRL.id_currency = C.id_currency - INNER JOIN tmp_Shop_Product t_P - ON PCRL.id_product <=> t_P.id_product - AND PCRL.id_permutation <=> t_P.id_permutation - INNER JOIN tmp_Delivery_Region t_DR ON PCRL.id_region_purchase = t_DR.id_region - WHERE - ( - a_get_all_currency - OR FIND_IN_SET(C.id_currency, a_ids_currency) > 0 - ) - AND ( - a_get_inactive_currency - OR ( - C.active - AND PCRL.active - ) - ) - ; - - -- select * from tmp_Currency; - - IF v_has_filter_currency THEN - SET v_ids_permutation_unavailable = ( - SELECT GROUP_CONCAT(t_P.id_permutation SEPARATOR ', ') - FROM ( - SELECT * - FROM tmp_Shop_Product t_P - WHERE - /*( - a_get_all_category - OR a_get_all_product - OR a_get_all_product_permutation - )*/ - FIND_IN_SET(t_P.id_category, a_ids_category) > 0 - OR FIND_IN_SET(t_P.id_product, a_ids_product) > 0 - OR FIND_IN_SET(t_P.id_permutation, a_ids_permutation) > 0 - ) t_P - INNER JOIN ( - SELECT * - FROM Shop_Product_Currency_Region_Link PCRL - WHERE - ( - a_get_all_currency - OR FIND_IN_SET(PCRL.id_currency, a_ids_currency) > 0 - ) - ) PCRL - ON t_P.id_permutation = PCRL.id_permutation - LEFT JOIN tmp_Currency t_C - ON PCRL.id_currency = t_C.id_currency - WHERE ISNULL(t_C.id_currency) - ); - IF NOT ISNULL(v_ids_permutation_unavailable) THEN - INSERT INTO tmp_Msg_Error ( - guid, - id_type, - msg - ) - VALUES ( - v_guid, - (SELECT id_type FROM Shop_Msg_Error_Type WHERE code = 'PRODUCT_AVAILABILITY' LIMIT 1), - CONCAT('Error: The following permutation IDs are not available in this currency: ', v_ids_permutation_unavailable) - ); - END IF; - /* - DELETE FROM tmp_Shop_Product t_P - WHERE t_P.id_permutation NOT IN ( - SELECT - id_permutation - FROM Shop_Product_Currency_Region_Link PCL - INNER JOIN tmp_Currency t_C - ON PCRL.id_currency = t_C.id_currency - ); - */ - END IF; - END IF; - - # Discounts - IF NOT EXISTS (SELECT * FROM tmp_Msg_Error WHERE guid = v_guid) THEN - INSERT INTO tmp_Discount ( - id_discount, - active, - display_order - ) - SELECT - D.id_discount, - D.active, - D.display_order - FROM Shop_Discount D - INNER JOIN tmp_Shop_Product t_P - ON D.id_product = t_P.id_product - AND D.id_permutation <=> t_P.id_permutation - WHERE - ( - a_get_all_discount - OR FIND_IN_SET(D.id_discount, a_ids_discount) > 0 - ) - AND ( - a_get_inactive_discount - OR D.active - ) - ; - END IF; - # select 'pre-permission results'; - # select * from tmp_Shop_Product; - - -- Permissions - IF EXISTS (SELECT * FROM tmp_Shop_Product_Category LIMIT 1) THEN - # SET v_id_user := (SELECT id_user FROM Shop_User WHERE name = CURRENT_USER()); - SET v_id_permission_product := (SELECT id_permission FROM Shop_Permission WHERE code = 'STORE_PRODUCT' LIMIT 1); - -- SET v_ids_product_permission := (SELECT GROUP_CONCAT(id_product SEPARATOR ',') FROM tmp_Shop_Product); - SET v_ids_permutation_permission := (SELECT GROUP_CONCAT(id_permutation SEPARATOR ',') FROM tmp_Shop_Product WHERE NOT ISNULL(id_permutation)); - - -- SELECT v_guid, a_id_user, false, v_id_permission_product, v_id_access_level_view, v_ids_permutation_permission; - -- select * from Shop_User_Eval_Temp; - - CALL p_shop_user_eval(v_guid, a_id_user, false, v_id_permission_product, v_id_access_level_view, v_ids_permutation_permission); - - -- select * from Shop_User_Eval_Temp; - - UPDATE tmp_Shop_Product t_P - INNER JOIN Shop_User_Eval_Temp UE_T - ON t_P.id_permutation = UE_T.id_permutation - AND UE_T.GUID = v_guid - SET t_P.can_view = UE_T.can_view, - t_P.can_edit = UE_T.can_edit, - t_P.can_admin = UE_T.can_admin; - - DELETE FROM tmp_Shop_Product t_P - WHERE - FIND_IN_SET(t_P.id_permutation, (SELECT GROUP_CONCAT(UET.id_permutation SEPARATOR ',') FROM Shop_User_Eval_Temp UET)) = 0 # id_product NOT LIKE CONCAT('%', (SELECT GROUP_CONCAT(id_product SEPARATOR '|') FROM Shop_User_Eval_Temp), '%'); - OR ( - ISNULL(t_P.can_view) - AND ( - NOT v_has_filter_category - OR FIND_IN_SET(t_P.id_category, a_ids_category) = 0 - ) - AND ( - NOT v_has_filter_product - OR FIND_IN_SET(t_P.id_product, a_ids_product) = 0 - ) - AND ( - NOT v_has_filter_permutation - OR FIND_IN_SET(t_P.id_permutation, a_ids_permutation) = 0 - ) - ) - ; - - # CALL p_shop_user_eval_clear_temp(v_guid); - # DROP TABLE IF EXISTS Shop_User_Eval_Temp; - DELETE FROM Shop_User_Eval_Temp - WHERE GUID = v_guid - ; - END IF; - - - -- select * from tmp_Shop_Product; - - -- Returns - SET v_now := NOW(); - - # Categories - SELECT - DISTINCT t_C.id_category, - C.name, - C.description, - C.display_order - FROM tmp_Shop_Product_Category t_C - INNER JOIN Shop_Product_Category C - ON t_C.id_category = C.id_category - INNER JOIN tmp_Shop_Product t_P - ON t_C.id_category = t_P.id_category - ORDER BY C.display_order - ; - - # Products - SELECT - t_P.id_product, - t_P.id_permutation, - t_P.name, - t_P.description, - P.has_variations, - P.id_category, - t_P.latency_manufacture, - t_P.quantity_min, - t_P.quantity_max, - t_P.quantity_step, - t_P.quantity_stock, - t_P.id_stripe_product, - t_P.is_subscription, - RI.name AS name_interval_recurrence, - RI.name_plural AS name_plural_interval_recurrence, - t_P.count_interval_recurrence, - t_P.display_order_category, - t_P.display_order_product, - t_P.display_order_permutation, - IFNULL(t_P.can_view, 0), - IFNULL(t_P.can_edit, 0), - IFNULL(t_P.can_admin, 0) - FROM tmp_Shop_Product t_P - INNER JOIN Shop_Product P - ON t_P.id_product = P.id_product - LEFT JOIN Shop_Interval_Recurrence RI - ON t_P.id_unit_measurement_interval_recurrence = RI.id_interval - ORDER BY t_P.rank_permutation - ; - - # Variations - SELECT - V.id_variation, - t_P.id_product, - t_P.id_permutation, - t_P.id_category, - VT.code AS code_variation_type, - VT.name AS name_variation_type, - V.code AS code_variation, - V.name AS name_variation, - RANK() OVER (ORDER BY t_P.rank_permutation, PPVL.display_order) AS display_order - FROM Shop_Variation V - INNER JOIN Shop_Variation_Type VT - ON V.id_type = VT.id_type - INNER JOIN Shop_Product_Permutation_Variation_Link PPVL ON V.id_variation = PPVL.id_variation - INNER JOIN tmp_Shop_Product t_P ON PPVL.id_permutation <=> t_P.id_permutation - WHERE V.active - AND PPVL.active - ; - - /* - # Permutation variations output - SELECT t_P.id_permutation, - t_P.id_product, - t_P.id_category, - id_variation - FROM Shop_Product_Permutation_Variation_Link PPVL - INNER JOIN tmp_Shop_Product t_P - ON t_P.id_permutation = PPVL.id_permutation - ORDER BY t_P.display_order - ; - */ - -- select * from Shop_Product_Currency_Region_Link; - -- select * from shop_currency; - /* - select * from tmp_Currency; - select * from tmp_delivery_region; - select * from tmp_shop_product; - */ - - # Product Price - SELECT - PCRL.id_link AS id_price, - t_P.id_permutation, - t_P.id_product, - t_P.id_category, - t_C.id_currency, - C.code AS code_currency, - C.name AS name_currency, - C.symbol AS symbol_currency, - t_DR.id_region, - PCRL.price_local_VAT_incl, - PCRL.price_local_VAT_excl, - ROW_NUMBER() OVER(ORDER BY t_P.rank_permutation, C.display_order) AS display_order - FROM Shop_Product_Currency_Region_Link PCRL - INNER JOIN tmp_Shop_Product t_P - ON PCRL.id_product <=> t_P.id_product - AND PCRL.id_permutation <=> t_P.id_permutation - -- INNER JOIN Shop_Product P ON PCRL.id_product = P.id_product - INNER JOIN tmp_Currency t_C ON PCRL.id_currency = t_C.id_currency - INNER JOIN Shop_Currency C ON t_C.id_currency = C.id_currency - INNER JOIN tmp_Delivery_Region t_DR ON PCRL.id_region_purchase = t_DR.id_region - WHERE ( - a_get_inactive_product - AND a_get_inactive_permutation - AND a_get_inactive_currency - AND a_get_inactive_delivery_region - OR PCRL.active - ) - ORDER BY t_P.rank_permutation - ; - - /* - # Currency - SELECT - DISTINCT C.id_currency, - C.code, - C.name, - C.factor_from_GBP, - t_C.display_order - FROM Shop_Currency C - INNER JOIN tmp_Currency t_C ON C.id_currency = t_C.id_currency - GROUP BY C.id_currency, t_C.display_order - ORDER BY t_C.display_order - ; - */ - - # Images - SELECT - t_I.id_image, - t_I.id_product, - t_I.id_permutation, - t_P.id_category, - I.url, - I.active, - I.display_order - FROM tmp_Shop_Image t_I - INNER JOIN Shop_Image I - ON t_I.id_image = I.id_image - INNER JOIN tmp_Shop_Product t_P - ON t_I.id_product = t_P.id_product - AND t_I.id_permutation <=> t_P.id_permutation - ORDER BY t_P.rank_permutation, I.display_order - ; - - # Delivery options - SELECT - _DO.id_option, - PDOL.id_product, - PDOL.id_permutation, - t_P.id_category, - _DO.code, - _DO.name, - _DO.latency_delivery_min, - _DO.latency_delivery_max, - _DO.quantity_min, - _DO.quantity_max, - GROUP_CONCAT(DR.code SEPARATOR ',') AS codes_region, - GROUP_CONCAT(DR.name SEPARATOR ',') AS names_region, - PDOL.price_local, - PDOL.display_order - FROM Shop_Delivery_Option _DO - INNER JOIN Shop_Product_Delivery_Option_Link PDOL - ON _DO.id_option = PDOL.id_delivery_option - AND ( - a_get_inactive_delivery_region - OR PDOL.active - ) - INNER JOIN tmp_Shop_Product t_P - ON PDOL.id_product = t_P.id_product - AND PDOL.id_permutation <=> t_P.id_permutation - INNER JOIN tmp_Delivery_Region t_DR ON PDOL.id_region = t_DR.id_region - INNER JOIN Shop_Region DR ON t_DR.id_region = DR.id_region - WHERE ( - a_get_inactive_delivery_region - OR _DO.active - ) - GROUP BY t_P.id_category, t_P.id_product, PDOL.id_permutation, t_P.rank_permutation, DR.id_region, _DO.id_option, PDOL.id_link - ORDER BY t_P.rank_permutation, PDOL.display_order - ; - - # Discounts - SELECT - D.id_discount, - P.id_category, - D.id_product, - D.id_permutation, - DR.id_region, - C.id_currency, - D.code AS code_discount, - D.name AS name_discount, - D.multiplier, - D.subtractor, - D.apply_multiplier_first, - D.quantity_min, - D.quantity_max, - D.date_start, - D.date_end, - GROUP_CONCAT(DR.code) AS codes_region, - GROUP_CONCAT(DR.name) AS names_region, - GROUP_CONCAT(C.code) AS codes_currency, - GROUP_CONCAT(C.name) AS names_currency, - ROW_NUMBER() OVER(ORDER BY D.display_order) AS display_order - FROM tmp_Discount t_D - INNER JOIN Shop_Discount D ON t_D.id_discount = D.id_discount - INNER JOIN Shop_Product P ON D.id_product = P.id_product - INNER JOIN tmp_Shop_Product t_P - ON D.id_product = t_P.id_product - -- AND D.id_permutation <=> t_P.id_permutation - INNER JOIN Shop_Discount_Region_Currency_Link DRCL - ON D.id_discount = DRCL.id_discount - INNER JOIN tmp_Delivery_Region t_DR ON DRCL.id_region = t_DR.id_region - INNER JOIN Shop_Region DR ON t_DR.id_region = DR.id_region - INNER JOIN tmp_Currency t_C ON DRCL.id_currency = t_C.id_currency - INNER JOIN Shop_Currency C ON t_C.id_currency = C.id_currency - GROUP BY D.id_discount, DR.id_region, C.id_currency - ORDER BY D.display_order, DR.display_order, C.display_order - ; - - /* - # Delivery Regions - SELECT - t_DR.id_region, - t_P.id_category, - t_P.id_product, - t_P.id_permutation, - DR.code, - DR.name - FROM tmp_Delivery_Region t_DR - INNER JOIN Shop_Delivery_Region DR ON t_DR.id_region = DR.id_region - INNER JOIN Shop_Product_Region_Currency_Link PDRL - ON DR.id_region = PDRL.id_region - AND ( - a_get_inactive_delivery_region - OR PDRL.active - ) - INNER JOIN tmp_Shop_Product t_P - ON PDRL.id_product = t_P.id_product - AND PDRL.id_permutation <=> t_P.id_permutation - INNER JOIN tmp_Currency t_C ON PDRL.id_currency = t_C.id_currency - ORDER BY t_DR.display_order - ; - */ - - # Errors - SELECT - t_ME.display_order, - t_ME.guid, - t_ME.id_type, - t_ME.msg, - MET.code, - MET.name, - MET.description - FROM tmp_Msg_Error t_ME - INNER JOIN Shop_Msg_Error_Type MET - ON t_ME.id_type = MET.id_type - WHERE guid = v_guid - ; - - /* - # Return arguments for test - SELECT - a_ids_category, - a_get_inactive_category, - a_ids_product, - a_get_inactive_product, - a_get_first_product_only, - a_get_all_product, - a_ids_image, - a_get_inactive_image, - a_get_first_image_only, - a_get_all_image - ; - */ - - # select 'other outputs'; - # select * from tmp_Shop_Product; - - -- Clean up - DROP TABLE IF EXISTS tmp_Discount; - DROP TABLE IF EXISTS tmp_Currency; - DROP TABLE IF EXISTS tmp_Delivery_Region; - DROP TABLE IF EXISTS tmp_Shop_Image; - DROP TABLE IF EXISTS tmp_Shop_Variation; - DROP TABLE IF EXISTS tmp_Shop_Product; - DROP TABLE IF EXISTS tmp_Shop_Product_Category; -END ;; -DELIMITER ;; -/*!50003 SET sql_mode = @saved_sql_mode */ ; -/*!50003 SET character_set_client = @saved_cs_client */ ; -/*!50003 SET character_set_results = @saved_cs_results */ ; -/*!50003 SET collation_connection = @saved_col_connection */ ; -/*!50003 DROP PROCEDURE IF EXISTS `p_shop_get_many_region` */; -/*!50003 SET @saved_cs_client = @@character_set_client */ ; -/*!50003 SET @saved_cs_results = @@character_set_results */ ; -/*!50003 SET @saved_col_connection = @@collation_connection */ ; -/*!50003 SET character_set_client = utf8mb4 */ ; -/*!50003 SET character_set_results = utf8mb4 */ ; -/*!50003 SET collation_connection = utf8mb4_general_ci */ ; -/*!50003 SET @saved_sql_mode = @@sql_mode */ ; -/*!50003 SET sql_mode = 'ONLY_FULL_GROUP_BY,STRICT_TRANS_TABLES,NO_ZERO_IN_DATE,NO_ZERO_DATE,ERROR_FOR_DIVISION_BY_ZERO,NO_ENGINE_SUBSTITUTION' */ ; -DELIMITER ;;; -CREATE DEFINER=`root`@`localhost` PROCEDURE `p_shop_get_many_region`( - IN a_get_inactive_region BIT -) -BEGIN - IF a_get_inactive_region IS NULL THEN - SET a_get_inactive_region = 0; - END IF; - - SELECT - R.id_region, - R.code, - R.name, - R.active, - R.display_order - FROM Shop_Region R - WHERE a_get_inactive_region - OR R.active - ORDER BY R.display_order - ; -END ;; -DELIMITER ;; -/*!50003 SET sql_mode = @saved_sql_mode */ ; -/*!50003 SET character_set_client = @saved_cs_client */ ; -/*!50003 SET character_set_results = @saved_cs_results */ ; -/*!50003 SET collation_connection = @saved_col_connection */ ; -/*!50003 DROP PROCEDURE IF EXISTS `p_shop_get_many_stripe_price_new` */; -/*!50003 SET @saved_cs_client = @@character_set_client */ ; -/*!50003 SET @saved_cs_results = @@character_set_results */ ; -/*!50003 SET @saved_col_connection = @@collation_connection */ ; -/*!50003 SET character_set_client = utf8mb4 */ ; -/*!50003 SET character_set_results = utf8mb4 */ ; -/*!50003 SET collation_connection = utf8mb4_general_ci */ ; -/*!50003 SET @saved_sql_mode = @@sql_mode */ ; -/*!50003 SET sql_mode = 'ONLY_FULL_GROUP_BY,STRICT_TRANS_TABLES,NO_ZERO_IN_DATE,NO_ZERO_DATE,ERROR_FOR_DIVISION_BY_ZERO,NO_ENGINE_SUBSTITUTION' */ ; -DELIMITER ;;; -CREATE DEFINER=`root`@`localhost` PROCEDURE `p_shop_get_many_stripe_price_new`( - IN a_id_user INT -) -BEGIN - DECLARE v_has_filter_user BIT; - DECLARE v_code_error_data VARCHAR(200); - DECLARE v_code_error_permission VARCHAR(200); - DECLARE v_guid BINARY(36); - - SET v_code_error_data := (SELECT code FROM Shop_Msg_Error_Type WHERE id_type = 1); - SET v_code_error_permission := (SELECT code FROM Shop_Msg_Error_Type WHERE id_type = 2); - SET v_guid = UUID(); - - - - IF a_id_user IS NULL THEN - SET a_id_user = ''; - ELSE - SET a_id_user = TRIM(a_id_user); - END IF; - - - - -- Temporary tables - DROP TABLE IF EXISTS tmp_Shop_Product_Currency_Link; - DROP TABLE IF EXISTS tmp_Shop_User; - - CREATE TABLE tmp_Shop_User( - id_user INT NOT NULL PRIMARY KEY, - CONSTRAINT FK_tmp_Shop_User_id_user - FOREIGN KEY (id_user) - REFERENCES Shop_User(id_user), - active BIT NOT NULL - ); - - CREATE TABLE tmp_Shop_Product_Currency_Link ( - id_link INT NOT NULL PRIMARY KEY, - CONSTRAINT FK_tmp_Shop_Product_Currency_Link_id_link - FOREIGN KEY (id_link) - REFERENCES Shop_Product_Currency_Link(id_link), - id_product INT NOT NULL, - CONSTRAINT FK_tmp_Shop_Product_Currency_Link_id_product - FOREIGN KEY (id_product) - REFERENCES Shop_Product(id_product), - id_permutation INT NULL, - CONSTRAINT FK_tmp_Shop_Product_Currency_Link_id_permutation - FOREIGN KEY (id_permutation) - REFERENCES Shop_Product_Permutation(id_permutation), - id_currency INT NOT NULL, - CONSTRAINT FK_tmp_Shop_Product_Currency_Link_id_currency - FOREIGN KEY (id_currency) - REFERENCES Shop_Currency(id_currency), - active BIT NOT NULL - ); - - CREATE TABLE IF NOT EXISTS tmp_Msg_Error ( # IF NOT EXISTS - display_order INT NOT NULL PRIMARY KEY AUTO_INCREMENT, - guid BINARY(36) NOT NULL, - code VARCHAR(50) NOT NULL, - # CONSTRAINT chk_tmp_Msg_Error_code CHECK (code IN (SELECT code FROM Shop_Msg_Error_Type)), - /* - id_type INT NOT NULL, - CONSTRAINT FK_tmp_Msg_Error_id_type - FOREIGN KEY (id_type) - REFERENCES Shop_Msg_Error_Type(id_type), - */ - msg VARCHAR(4000) NOT NULL - ); - - - - -- Parse filters - SET v_has_filter_user = CASE WHEN a_id_user = '' THEN 0 ELSE 1 END; - - - - -- User permissions - IF v_has_filter_user THEN - INSERT INTO tmp_Shop_User ( - id_user, - active - ) - SELECT id_user, - active - FROM Shop_User - WHERE id_user LIKE CONCAT('%', a_id_user, '%') - AND active - LIMIT 1 - ; - - SET v_has_filter_user = EXISTS (SELECT id_user FROM tmp_Shop_User LIMIT 1); - SET a_id_user := (SELECT id_user FROM tmp_Shop_User LIMIT 1); - END IF; - IF NOT v_has_filter_user THEN - INSERT INTO tmp_Msg_Error ( - guid, - code, - msg - ) - VALUES ( - v_guid, - v_code_error_data, - 'Valid user ID not provided.' - ) - ; - END IF; - - -- Get products - IF NOT EXISTS (SELECT * FROM tmp_Msg_Error WHERE guid = v_guid LIMIT 1) THEN - INSERT INTO tmp_Shop_Product_Currency_Link ( - id_link, - id_product, - id_permutation, - id_currency, - active - ) - SELECT id_link, - id_product, - id_permutation, - id_currency, - active - FROM Shop_Product_Currency_Link - WHERE ISNULL(id_stripe_price) - AND active - ; - END IF; - - -- Permissions - IF NOT EXISTS (SELECT * FROM tmp_Msg_Error WHERE guid = v_guid LIMIT 1) THEN - # SELECT * FROM tmp_Msg_Error LIMIT 1; - CALL p_shop_user_eval ( - v_guid, # a_guid - a_id_user, # a_id_user - 0, # a_get_inactive_users - CONVERT((SELECT id_permission FROM Shop_Permission WHERE 'STORE_ADMIN' = code), CHAR), # a_ids_permission - (SELECT id_access_level FROM Shop_Access_Level WHERE code = 'ADMIN' AND active), # a_ids_access_level - (SELECT GROUP_CONCAT(DISTINCT id_product SEPARATOR ',') FROM tmp_Shop_Product_Currency_Link), # (SELECT DISTINCT id_product FROM tmp_Shop_Product_Currency_Link) calc_PCL) # a_ids_product - (SELECT GROUP_CONCAT(DISTINCT id_permutation SEPARATOR ',') FROM tmp_Shop_Product_Currency_Link) # a_ids_permutation - ); - # SELECT * FROM tmp_Msg_Error LIMIT 1; - - IF EXISTS (SELECT can_admin FROM Shop_User_Eval_Temp WHERE guid = v_guid AND NOT can_admin LIMIT 1) THEN - INSERT INTO tmp_Msg_Error ( - guid, - code, - msg - ) - VALUES ( - v_guid, - v_code_error_permission, - 'User ID does not have permission to get all new stripe prices.' - ) - ; - END IF; - - DELETE FROM Shop_User_Eval_Temp - WHERE guid = v_guid - ; - END IF; - - - - -- Returns - IF EXISTS (SELECT * FROM tmp_Msg_Error WHERE guid = v_guid LIMIT 1) THEN - DELETE FROM tmp_Shop_Product_Currency_Link; - END IF; - /* - SELECT * - FROM tmp_Shop_User - ; - */ - - - SELECT t_PCL.id_product, - t_PCL.id_permutation, - P.price_GBP_full * C.factor_from_GBP AS unit_price, - C.code AS code_currency, - P.id_stripe_product, - P.is_subscription, - LOWER(RI.code) AS name_recurring_interval, - P.count_interval_recurrence - FROM tmp_Shop_Product_Currency_Link t_PCL - INNER JOIN Shop_Product P - ON t_PCL.id_product = P.id_product - AND P.active - INNER JOIN Shop_Interval_Recurrence RI - ON P.id_unit_measurement_interval_recurrence = RI.id_interval - AND RI.active - INNER JOIN Shop_Currency C - ON t_PCL.id_currency = C.id_currency - AND C.active - WHERE t_PCL.active - ; - - - # Errors - SELECT * - FROM tmp_Msg_Error - WHERE guid = v_guid - ; - - - /* - # Return arguments for test - SELECT - a_id_user - ; - */ - - -- Clean up - DROP TABLE IF EXISTS tmp_Shop_User; - DROP TABLE IF EXISTS tmp_Shop_Product_Currency_Link; -END ;; -DELIMITER ;; -/*!50003 SET sql_mode = @saved_sql_mode */ ; -/*!50003 SET character_set_client = @saved_cs_client */ ; -/*!50003 SET character_set_results = @saved_cs_results */ ; -/*!50003 SET collation_connection = @saved_col_connection */ ; -/*!50003 DROP PROCEDURE IF EXISTS `p_shop_get_many_stripe_product_new` */; -/*!50003 SET @saved_cs_client = @@character_set_client */ ; -/*!50003 SET @saved_cs_results = @@character_set_results */ ; -/*!50003 SET @saved_col_connection = @@collation_connection */ ; -/*!50003 SET character_set_client = utf8mb4 */ ; -/*!50003 SET character_set_results = utf8mb4 */ ; -/*!50003 SET collation_connection = utf8mb4_general_ci */ ; -/*!50003 SET @saved_sql_mode = @@sql_mode */ ; -/*!50003 SET sql_mode = 'ONLY_FULL_GROUP_BY,STRICT_TRANS_TABLES,NO_ZERO_IN_DATE,NO_ZERO_DATE,ERROR_FOR_DIVISION_BY_ZERO,NO_ENGINE_SUBSTITUTION' */ ; -DELIMITER ;;; -CREATE DEFINER=`root`@`localhost` PROCEDURE `p_shop_get_many_stripe_product_new`( - IN a_id_user INT -) -BEGIN - DECLARE v_has_filter_user BIT; - DECLARE v_code_error_data VARCHAR(200); - DECLARE v_code_error_permission VARCHAR(200); - DECLARE v_guid BINARY(36); - - SET v_code_error_data := (SELECT code FROM Shop_Msg_Error_Type WHERE id_type = 1); - SET v_code_error_permission := (SELECT code FROM Shop_Msg_Error_Type WHERE id_type = 2); - SET v_guid = UUID(); - - - IF a_id_user IS NULL THEN - SET a_id_user = ''; - ELSE - SET a_id_user = TRIM(a_id_user); - END IF; - - - - -- Temporary tables - DROP TABLE IF EXISTS tmp_Shop_Product; - DROP TABLE IF EXISTS tmp_Shop_User; - - CREATE TABLE tmp_Shop_User( - id_user INT NOT NULL PRIMARY KEY, - CONSTRAINT FK_tmp_Shop_User_id_user - FOREIGN KEY (id_user) - REFERENCES Shop_User(id_user), - active BIT NOT NULL - ); - - CREATE TABLE tmp_Shop_Product ( - id_product INT NOT NULL, - CONSTRAINT FK_tmp_Shop_Product_id_product - FOREIGN KEY (id_product) - REFERENCES Shop_Product(id_product), - id_permutation INT NULL, - CONSTRAINT FK_tmp_Shop_Product_id_permutation - FOREIGN KEY (id_permutation) - REFERENCES Shop_Product_Permutation(id_permutation), - active BIT NOT NULL, - display_order_product INT NOT NULL, - display_order_permutation INT NOT NULL, - name VARCHAR(200) NOT NULL, - description VARCHAR(4000) NOT NULL - ); - - CREATE TABLE IF NOT EXISTS tmp_Msg_Error ( # IF NOT EXISTS - display_order INT NOT NULL PRIMARY KEY AUTO_INCREMENT, - guid BINARY(36) NOT NULL, - code VARCHAR(50) NOT NULL, - # CONSTRAINT chk_tmp_Msg_Error_code CHECK (code IN (SELECT code FROM Shop_Msg_Error_Type)), - /* - id_type INT NOT NULL, - CONSTRAINT FK_tmp_Msg_Error_id_type - FOREIGN KEY (id_type) - REFERENCES Shop_Msg_Error_Type(id_type), - */ - msg VARCHAR(4000) NOT NULL - ); - - - - -- Parse filters - SET v_has_filter_user = CASE WHEN a_id_user = '' THEN 0 ELSE 1 END; - - - - -- User - IF v_has_filter_user THEN - INSERT INTO tmp_Shop_User ( - id_user, - active - ) - SELECT id_user, - active - FROM Shop_User - WHERE id_user LIKE CONCAT('%', a_id_user, '%') - AND active - LIMIT 1 - ; - - SET v_has_filter_user = EXISTS (SELECT id_user FROM tmp_Shop_User LIMIT 1); - SET a_id_user := (SELECT id_user FROM tmp_Shop_User LIMIT 1); - END IF; - - IF NOT v_has_filter_user THEN - INSERT INTO tmp_Msg_Error ( - guid, - code, - msg - ) - VALUES ( - v_guid, - v_code_error_data, - 'User ID not valid.' - ) - ; - END IF; - - -- Get products - IF NOT EXISTS (SELECT * FROM tmp_Msg_Error WHERE guid = v_guid LIMIT 1) THEN - INSERT INTO tmp_Shop_Product ( - id_product, - id_permutation, - active, - display_order_product, - display_order_permutation, - name, - description - ) - SELECT id_product, - id_permutation, - active, - display_order_product, - display_order_permutation, - name, - description - FROM ( - SELECT id_product, - NULL AS id_permutation, - active, - display_order AS display_order_product, - NULL AS display_order_permutation, - name, - description, - id_stripe_product - FROM Shop_Product P - UNION - SELECT t_PPPV.id_product, - id_permutation, - t_PPPV.active, - display_order_product, - display_order_permutation, - CONCAT(P.name, ': ', names_variation) AS name, - CONCAT(P.description, ' With variations: ', type_name_pairs_variation) AS description, - t_PPPV.id_stripe_product - FROM ( - SELECT P.id_product, - PP.id_permutation, - PP.active, - P.display_order AS display_order_product, - PP.display_order AS display_order_permutation, - GROUP_CONCAT(V.name SEPARATOR ' ') AS names_variation, - GROUP_CONCAT(CONCAT(VT.name, ': ', V.name) SEPARATOR ', ') AS type_name_pairs_variation, - PP.id_stripe_product - FROM Shop_Product_Permutation PP - INNER JOIN Shop_Product P - ON PP.id_product = P.id_product - AND P.active - INNER JOIN Shop_Product_Permutation_Variation_Link PPVL - ON PP.id_permutation = PPVL.id_permutation - AND PPVL.active - INNER JOIN Shop_Variation V - ON PPVL.id_variation = V.id_variation - AND V.active - INNER JOIN Shop_Variation_Type VT - ON V.id_type = VT.id_type - AND VT.active - GROUP BY id_product, id_permutation -- , VT.id_type, V.id_variation - ) t_PPPV - INNER JOIN Shop_Product P - ON t_PPPV.id_product = P.id_product - ) t_PPP - WHERE ISNULL(id_stripe_product) - AND active - ; - END IF; - - -- Permissions - IF NOT EXISTS (SELECT * FROM tmp_Msg_Error WHERE guid = v_guid LIMIT 1) THEN - CALL p_shop_user_eval ( - v_guid, # a_guid - a_id_user, # a_id_user - 0, # a_get_inactive_users - CONVERT((SELECT id_permission FROM Shop_Permission WHERE 'STORE_ADMIN' = code), CHAR), # a_ids_permission - (SELECT id_access_level FROM Shop_Access_Level WHERE code = 'ADMIN' AND active), # a_ids_access_level - (SELECT GROUP_CONCAT(id_product SEPARATOR ',') From tmp_Shop_Product), # a_ids_product - (SELECT GROUP_CONCAT(id_permutation SEPARATOR ',') From tmp_Shop_Product) # a_ids_permutation -- WHERE NOT ISNULL(id_permutation) - ); - - IF EXISTS (SELECT can_admin FROM Shop_User_Eval_Temp WHERE guid = v_guid AND NOT can_admin) THEN - INSERT INTO tmp_Msg_Error ( - guid, - code, - msg - ) - VALUES ( - v_guid, - v_code_error_permission, - 'User ID does not have permission to get all new stripe products.' - ) - ; - END IF; - - DELETE FROM Shop_User_Eval_Temp - WHERE guid = v_guid - ; - END IF; - - - - - -- Returns - /* - SELECT * - FROM tmp_Shop_User - ; - */ - - IF EXISTS (SELECT * FROM tmp_Msg_Error WHERE guid = v_guid LIMIT 1) THEN - DELETE FROM tmp_Shop_Product; - END IF; - - SELECT id_product, - id_permutation, - name, - description - FROM tmp_Shop_Product - ORDER BY display_order_product, display_order_permutation - ; - SELECT PP.id_permutation, - V.id_variation, - V.name AS name_variation, - VT.id_type AS id_type_variation, - VT.name as name_variation_type - FROM tmp_Shop_Product t_P - INNER JOIN Shop_Product_Permutation PP - ON t_P.id_permutation = PP.id_permutation - INNER JOIN Shop_Product_Permutation_Variation_Link PPVL - ON PP.id_permutation = PPVL.id_permutation - AND PPVL.active - INNER JOIN Shop_Variation V - ON PPVL.id_variation = V.id_variation - AND V.active - INNER JOIN Shop_Variation_Type VT - ON V.id_type = VT.id_type - AND VT.active - ; - - - # Errors - SELECT * - FROM tmp_Msg_Error - WHERE guid = v_guid - ; - - - /* - # Return arguments for test - SELECT - a_id_user - ; - */ - - -- Clean up - DROP TABLE IF EXISTS tmp_Shop_Product; - DROP TABLE IF EXISTS tmp_Shop_User; -END ;; -DELIMITER ;; -/*!50003 SET sql_mode = @saved_sql_mode */ ; -/*!50003 SET character_set_client = @saved_cs_client */ ; -/*!50003 SET character_set_results = @saved_cs_results */ ; -/*!50003 SET collation_connection = @saved_col_connection */ ; -/*!50003 DROP PROCEDURE IF EXISTS `p_shop_get_many_user_order` */; -/*!50003 SET @saved_cs_client = @@character_set_client */ ; -/*!50003 SET @saved_cs_results = @@character_set_results */ ; -/*!50003 SET @saved_col_connection = @@collation_connection */ ; -/*!50003 SET character_set_client = utf8mb4 */ ; -/*!50003 SET character_set_results = utf8mb4 */ ; -/*!50003 SET collation_connection = utf8mb4_general_ci */ ; -/*!50003 SET @saved_sql_mode = @@sql_mode */ ; -/*!50003 SET sql_mode = 'ONLY_FULL_GROUP_BY,STRICT_TRANS_TABLES,NO_ZERO_IN_DATE,NO_ZERO_DATE,ERROR_FOR_DIVISION_BY_ZERO,NO_ENGINE_SUBSTITUTION' */ ; -DELIMITER ;;; -CREATE DEFINER=`root`@`localhost` PROCEDURE `p_shop_get_many_user_order`( - IN a_id_user INT, - IN a_ids_order VARCHAR(4000), - IN a_n_order_max INT, - IN a_id_checkout_session VARCHAR(200) -) -BEGIN - -- Argument redeclaration - -- Variable declaration - DECLARE v_has_filter_user BIT; - DECLARE v_has_filter_order BIT; - DECLARE v_has_filter_session BIT; - DECLARE v_code_error_data VARCHAR(200); - DECLARE v_code_error_permission VARCHAR(200); - DECLARE v_guid BINARY(36); - - SET v_code_error_data := (SELECT code FROM Shop_Msg_Error_Type WHERE id_type = 1); - SET v_code_error_permission := (SELECT code FROM Shop_Msg_Error_Type WHERE id_type = 2); - SET v_guid = UUID(); - - -- Argument validation + default values - IF a_id_user IS NULL THEN - SET a_id_user = ''; - ELSE - SET a_id_user = TRIM(a_id_user); - END IF; - IF a_ids_order IS NULL THEN - SET a_ids_order = ''; - ELSE - SET a_ids_order = TRIM(a_ids_order); - END IF; - IF a_n_order_max IS NULL THEN - SET a_n_order_max = 1; - END IF; - IF a_id_checkout_session IS NULL THEN - SET a_id_checkout_session = ''; - ELSE - SET a_id_checkout_session = TRIM(a_id_checkout_session); - END IF; - - - - -- Temporary tables - DROP TABLE IF EXISTS tmp_Shop_User; - DROP TABLE IF EXISTS tmp_Shop_Order; - - CREATE TABLE tmp_Shop_User( - id_user INT NOT NULL PRIMARY KEY, - CONSTRAINT FK_tmp_Shop_User_id_user - FOREIGN KEY (id_user) - REFERENCES Shop_User(id_user), - active BIT NOT NULL - ); - - CREATE TABLE tmp_Shop_Order ( - id_order INT NOT NULL PRIMARY KEY, - CONSTRAINT FK_tmp_Shop_Order_id_order - FOREIGN KEY (id_order) - REFERENCES Shop_User_Order(id_order), - active BIT NOT NULL - ); - - CREATE TABLE IF NOT EXISTS tmp_Msg_Error ( - display_order INT NOT NULL PRIMARY KEY AUTO_INCREMENT, - guid BINARY(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), - msg VARCHAR(4000) NOT NULL - ); - - - -- Parse filters - SET v_has_filter_user = CASE WHEN a_id_user = '' THEN 0 ELSE 1 END; - SET a_ids_order = REPLACE(a_ids_order, '|', ','); - SET v_has_filter_order = CASE WHEN a_ids_order = '' THEN 0 ELSE 1 END; - SET v_has_filter_session = CASE WHEN a_id_checkout_session = '' THEN 0 ELSE 1 END; - - -- User - IF NOT EXISTS (SELECT * FROM tmp_Msg_Error LIMIT 1) THEN - IF v_has_filter_user THEN - INSERT INTO tmp_Shop_User ( - id_user, - active - ) - SELECT id_user, - active - FROM Shop_User - WHERE id_user LIKE CONCAT('%', a_id_user, '%') - AND active - LIMIT 1 - ; - - SET v_has_filter_user = EXISTS (SELECT id_user FROM tmp_Shop_User LIMIT 1); - SET a_id_user := (SELECT id_user FROM tmp_Shop_User LIMIT 1); - END IF; - END IF; - IF NOT v_has_filter_user THEN - INSERT INTO tmp_Msg_Error ( - guid, - code, - msg - ) - VALUES ( - v_guid, - v_code_error_data, - 'User ID not valid.' - ) - ; - END IF; - - -- Permissions - IF NOT EXISTS (SELECT * FROM tmp_Msg_Error WHERE guid = v_guid LIMIT 1) THEN - CALL p_shop_user_eval ( - v_guid, # a_guid - a_id_user, # a_id_user - 0, # a_get_inactive_users - CONVERT((SELECT id_permission FROM Shop_Permission WHERE 'STORE_USER' = code), CHAR), # a_ids_permission - (SELECT id_access_level FROM Shop_Access_Level WHERE code = 'VIEW' AND active), # a_ids_access_level - '', # a_ids_product - '' # a_ids_permutation - ); - - IF NOT (SELECT can_edit FROM Shop_User_Eval_Temp WHERE guid = v_guid) THEN - INSERT INTO tmp_Msg_Error ( - guid, - code, - msg - ) - VALUES ( - v_guid, - v_code_error_permission, - 'User ID does not have permission to access orders.' - ) - ; - END IF; - - DELETE FROM Shop_User_Eval_Temp - WHERE guid = v_guid - ; - END IF; - - -- Invalid Orders - IF NOT EXISTS (SELECT * FROM tmp_Msg_Error WHERE guid = v_guid LIMIT 1) THEN - # Invalid Order IDs - IF EXISTS (SELECT * FROM Shop_User_Order WHERE NOT (id_user = a_id_user) AND v_has_filter_order AND FIND_IN_SET(id_order, a_ids_order) > 0) THEN # id_order LIKE CONCAT('%', a_ids_order, '%') LIMIT 1) THEN - INSERT INTO tmp_Msg_Error ( - guid, - code, - msg - ) - VALUES ( - v_guid, - v_code_error_data, - CONCAT('You do not have access to the following order IDs: ', (SELECT GROUP_CONCAT(id_order SEPARATOR ', ') FROM Shop_User_Order WHERE NOT (id_user = a_id_user) AND FIND_IN_SET(id_order, a_ids_order) > 0)) # id_order LIKE CONCAT('%', a_ids_order, '%'))) # AND v_has_filter_order # filtered by parent condition - ) - ; - END IF; - # Invalid Checkout Session IDs - IF EXISTS (SELECT * FROM Shop_User_Order WHERE NOT (id_user = a_id_user) AND v_has_filter_session AND id_checkout_session = a_id_checkout_session) THEN - INSERT INTO tmp_Msg_Error ( - guid, - code, - msg - ) - VALUES ( - v_guid, - v_code_error_data, - CONCAT('You do not have access to the following checkout session IDs: ', (SELECT GROUP_CONCAT(id_order SEPARATOR ', ') FROM Shop_User_Order WHERE NOT (id_user = a_id_user) AND id_checkout_session = a_id_checkout_session)) # AND v_has_filter_order # filtered by parent condition - ) - ; - END IF; - END IF; - - -- Valid Orders - IF NOT EXISTS (SELECT * FROM tmp_Msg_Error WHERE guid = v_guid LIMIT 1) THEN - - INSERT INTO tmp_Shop_Order ( - id_order, - active - ) - SELECT UO.id_order, - UO.active - FROM Shop_User_Order UO - INNER JOIN tmp_Shop_User t_U - ON UO.id_user = t_U.id_user - AND t_U.active - WHERE ((NOT v_has_filter_order OR FIND_IN_SET(UO.id_order, a_ids_order) > 0) # UO.id_order LIKE CONCAT('%', a_ids_order, '%')) - OR (NOT v_has_filter_session OR UO.id_checkout_session = a_id_checkout_session)) - AND UO.active - ; - END IF; - - - - -- Returns - /* - SELECT * - FROM tmp_Shop_User - ; - */ - - SELECT t_O.id_order, - UOPL.id_product, - UOPL.id_permutation, - UOPL.quantity - FROM tmp_Shop_Order t_O - INNER JOIN Shop_User_Order UO - ON t_O.id_order = UO.id_order - INNER JOIN Shop_User_Order_Product_Link UOPL - ON UO.id_order = UOPL.id_order - WHERE t_O.active - ; - - - # Errors - SELECT * - FROM tmp_Msg_Error - WHERE guid = v_guid - ; - - - /* - # Return arguments for test - SELECT - a_id_user, - a_ids_order, - a_n_order_max, - a_id_checkout_session - ; - */ - - -- Clean up - DROP TABLE IF EXISTS tmp_Shop_User; - DROP TABLE IF EXISTS tmp_Shop_Order; -END ;; -DELIMITER ;; -/*!50003 SET sql_mode = @saved_sql_mode */ ; -/*!50003 SET character_set_client = @saved_cs_client */ ; -/*!50003 SET character_set_results = @saved_cs_results */ ; -/*!50003 SET collation_connection = @saved_col_connection */ ; -/*!50003 DROP PROCEDURE IF EXISTS `p_shop_user_eval` */; -/*!50003 SET @saved_cs_client = @@character_set_client */ ; -/*!50003 SET @saved_cs_results = @@character_set_results */ ; -/*!50003 SET @saved_col_connection = @@collation_connection */ ; -/*!50003 SET character_set_client = utf8mb4 */ ; -/*!50003 SET character_set_results = utf8mb4 */ ; -/*!50003 SET collation_connection = utf8mb4_general_ci */ ; -/*!50003 SET @saved_sql_mode = @@sql_mode */ ; -/*!50003 SET sql_mode = 'ONLY_FULL_GROUP_BY,STRICT_TRANS_TABLES,NO_ZERO_IN_DATE,NO_ZERO_DATE,ERROR_FOR_DIVISION_BY_ZERO,NO_ENGINE_SUBSTITUTION' */ ; -DELIMITER ;;; -CREATE DEFINER=`root`@`localhost` PROCEDURE `p_shop_user_eval`( - IN a_guid BINARY(36), - IN a_id_user INT, - IN a_get_inactive_users BIT, - IN a_ids_permission VARCHAR(500), - IN a_ids_access_level VARCHAR(100), - IN a_ids_permutation VARCHAR(4000) -) -BEGIN - -- Variable declaration - DECLARE v_has_filter_permission BIT; - DECLARE v_has_filter_user BIT; - DECLARE v_has_filter_access_level BIT; - DECLARE v_has_filter_permutation BIT; - DECLARE v_id_permission_product INT; - DECLARE v_id_permission INT; - -- DECLARE v_ids_product VARCHAR(500); - DECLARE v_id_access_level_view INT; - # DECLARE v_id_access_level_product_required INT; - DECLARE v_priority_access_level_view INT; - DECLARE v_priority_access_level_edit INT; - DECLARE v_priority_access_level_admin INT; - DECLARE v_id_access_level INT; - DECLARE v_priority_access_level INT; - DECLARE v_now DATETIME; - DECLARE v_ids_row_delete VARCHAR(500); - DECLARE v_code_error_data VARCHAR(200); - DECLARE v_id_error_data INT; - DECLARE v_code_error_permission VARCHAR(200); - - SET v_id_error_data = 1; - SET v_code_error_data := (SELECT code FROM Shop_Msg_Error_Type WHERE id_type = v_id_error_data); - - SET v_code_error_permission := (SELECT code FROM Shop_Msg_Error_Type WHERE id_type = 2); - - -- Clear previous proc results - # DROP TABLE IF EXISTS tmp_User_Role_Link; - # DROP TEMPORARY TABLE IF EXISTS tmp_User_Role_Link; - DROP TABLE IF EXISTS tmp_Shop_Product_p_Shop_User_Eval; - # DROP TABLE IF EXISTS Shop_User_Eval_Temp; - - - -- Parse arguments + get default values - /* - IF a_guid IS NULL THEN - SET a_guid = UUID(); - END IF; - */ - IF a_id_user IS NULL THEN - SET a_id_user = ''; - ELSE - SET a_id_user = TRIM(a_id_user); - END IF; - IF a_get_inactive_users IS NULL THEN - SET a_get_inactive_users = 0; - END IF; - /* - IF a_get_user_permissions IS NULL THEN - SET a_get_user_permissions = 0; - END IF; - */ - IF a_ids_permission IS NULL THEN - SET a_ids_permission = ''; - ELSE - SET a_ids_permission = TRIM(a_ids_permission); - END IF; - IF a_ids_access_level IS NULL THEN - SET a_ids_access_level = ''; - ELSE - SET a_ids_access_level = TRIM(a_ids_access_level); - END IF; - IF a_ids_permutation IS NULL THEN - SET a_ids_permutation = ''; - ELSE - SET a_ids_permutation = TRIM(a_ids_permutation); - END IF; - - -- Permanent Table - CREATE TABLE IF NOT EXISTS Shop_User_Eval_Temp ( - id_row INT PRIMARY KEY AUTO_INCREMENT NOT NULL, - guid BINARY(36) NOT NULL, - id_user INT, - id_permission_required INT NOT NULL, - CONSTRAINT FK_Shop_User_Eval_Temp_id_permission_required - FOREIGN KEY (id_permission_required) - REFERENCES Shop_Permission (id_permission), - /* - id_access_level_required INT NOT NULL, - CONSTRAINT FK_Shop_User_Eval_Temp_id_access_level_required - FOREIGN KEY (id_access_level_required) - REFERENCES Shop_Access_Level (id_access_level), - */ - priority_access_level_required INT NOT NULL, - /* - CONSTRAINT FK_Shop_User_Eval_Temp_priority_access_level_required - FOREIGN KEY (priority_access_level_required) - REFERENCES Shop_Access_Level (priority), - */ - id_product INT NULL, - CONSTRAINT FK_Shop_User_Eval_Temp_id_product - FOREIGN KEY (id_product) - REFERENCES partsltd_prod.Shop_Product (id_product), - id_permutation INT NULL, - CONSTRAINT FK_Shop_User_Eval_Temp_id_permutation - FOREIGN KEY (id_permutation) - REFERENCES partsltd_prod.Shop_Product_Permutation (id_permutation), - is_super_user BIT NULL, - priority_access_level_user INT NULL, - /* - CONSTRAINT FK_Shop_User_Eval_Temp_priority_access_level_minimum - FOREIGN KEY (priority_access_level_minimum) - REFERENCES Shop_Access_Level (priority) - */ - can_view BIT, - can_edit BIT, - can_admin BIT -- DEFAULT 0 - ); - - CREATE TABLE IF NOT EXISTS tmp_Shop_Product_p_Shop_User_Eval ( - id_row INT PRIMARY KEY AUTO_INCREMENT NOT NULL, - id_product INT NOT NULL, - CONSTRAINT FK_tmp_Shop_Product_p_Shop_User_Eval_id_product FOREIGN KEY (id_product) - REFERENCES partsltd_prod.Shop_Product (id_product), - id_permutation INT NOT NULL, - CONSTRAINT FK_tmp_Shop_Product_p_Shop_User_Eval_id_permutation FOREIGN KEY (id_permutation) - REFERENCES partsltd_prod.Shop_Product_Permutation (id_permutation), - id_access_level_required INT NOT NULL, - CONSTRAINT FK_tmp_Shop_Product_p_Shop_User_Eval_id_access_level_required FOREIGN KEY (id_access_level_required) - REFERENCES Shop_Access_Level (id_access_level), - guid BINARY(36) NOT NULL, - rank_permutation INT NOT NULL - ); - - CREATE TABLE IF NOT EXISTS tmp_Msg_Error ( - display_order INT NOT NULL PRIMARY KEY AUTO_INCREMENT, - guid BINARY(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), - msg VARCHAR(4000) NOT NULL - ); - - # select * from Shop_Msg_Error_Type; - - -- Parse filters - IF a_guid IS NULL OR EXISTS (SELECT * FROM Shop_User_Eval_Temp WHERE a_guid = guid) THEN - INSERT INTO tmp_Msg_Error ( - guid, - code, - msg - ) - VALUES ( - a_guid, - v_code_error_data, - 'Invalid guid argument.' - ) - ; - END IF; - SET v_has_filter_user = CASE WHEN a_id_user = '' THEN 0 ELSE 1 END; - SET a_ids_permission = REPLACE(a_ids_permission, '|', ','); - SET v_has_filter_permission = CASE WHEN a_ids_permission = '' THEN 0 ELSE 1 END; - SET a_ids_access_level = REPLACE(a_ids_access_level, '|', ','); - SET v_has_filter_access_level = CASE WHEN a_ids_access_level = '' THEN 0 ELSE 1 END; - SET a_ids_permutation = REPLACE(a_ids_permutation, '|', ','); - SET v_has_filter_permutation = CASE WHEN a_ids_permutation = '' THEN 0 ELSE 1 END; - SET v_id_access_level_view = (SELECT id_access_level FROM Shop_Access_Level WHERE code = 'VIEW' LIMIT 1); - SET v_priority_access_level_view = (SELECT priority FROM Shop_Access_Level WHERE id_access_level = v_id_access_level_view); - SET v_priority_access_level_edit = (SELECT priority FROM Shop_Access_Level WHERE code = 'EDIT' LIMIT 1); - SET v_priority_access_level_admin = (SELECT priority FROM Shop_Access_Level WHERE code = 'ADMIN' LIMIT 1); - - /* - select v_priority_access_level_view, - v_priority_access_level_edit, - v_priority_access_level_admin - ; - */ - - IF NOT EXISTS (SELECT * FROM tmp_Msg_Error WHERE GUID = a_guid) THEN - IF v_has_filter_access_level THEN - CALL p_split(a_ids_access_level, ','); - SET v_id_access_level := ( - SELECT AL.id_access_level - FROM Split_Temp ST - INNER JOIN Shop_Access_Level AL - ON CONVERT(ST.substring, DECIMAL(10,0)) = AL.id_access_level - AND AL.active - ORDER BY AL.priority ASC - LIMIT 1 - ); - DROP TABLE Split_Temp; - IF 0 = v_id_access_level OR v_id_access_level <=> NULL THEN - # SET v_has_filter_access_level = 0; - INSERT INTO tmp_Msg_Error ( - guid, - code, - msg - ) - VALUES ( - a_guid, - v_code_error_data, - 'Access level ID not found.' - ) - ; - END IF; - /* - END IF; - IF NOT v_has_filter_access_level THEN - */ - ELSE - SET v_id_access_level = v_id_access_level_view; - END IF; - END IF; - IF NOT EXISTS (SELECT * FROM tmp_Msg_Error WHERE GUID = a_guid) THEN - IF v_has_filter_permutation THEN - INSERT INTO tmp_Shop_Product_p_Shop_User_Eval ( - id_product, - id_permutation, - id_access_level_required, - guid, - rank_permutation - ) - SELECT - PP.id_product, - PP.id_permutation, - PP.id_access_level_required, - a_guid, - RANK() OVER (ORDER BY PP.id_product, PP.id_permutation, AL.priority) AS rank_permutation - FROM Shop_Product_Permutation PP - INNER JOIN Shop_Access_Level AL - ON PP.id_access_level_required = AL.id_access_level - AND AL.active - WHERE FIND_IN_SET(PP.id_permutation, a_ids_permutation) > 0 - # AND P.active # not worried as we want users to be able to see their order history - ; - /* - DELETE FROM tmp_Shop_Product_p_Shop_User_Eval - WHERE rank_permutation > 1 - ; - */ - SET v_has_filter_permutation = EXISTS (SELECT * FROM tmp_Shop_Product_p_Shop_User_Eval WHERE a_guid = guid); - END IF; - - IF v_has_filter_permission THEN - # Invalid permission IDs - IF EXISTS (SELECT id_permission FROM Shop_Permission WHERE FIND_IN_SET(id_permission, a_ids_permission) > 0 AND NOT active) THEN - INSERT INTO tmp_Msg_Error ( - guid, - code, - msg - ) - VALUES ( - a_guid, - v_code_error_data, - CONCAT('The following permissions are no longer active: ', (SELECT GROUP_CONCAT(name SEPARATOR ', ') FROM Shop_Permission WHERE FIND_IN_SET(id_permission, a_ids_permission) > 0 AND NOT active)) - ) - ; - END IF; - END IF; - END IF; - - IF NOT EXISTS (SELECT * FROM tmp_Msg_Error WHERE GUID = a_guid) THEN - IF v_has_filter_user THEN - SET a_id_user := (SELECT id_user FROM Shop_User WHERE id_user LIKE a_id_user AND active); - SET v_has_filter_user = NOT (a_id_user <=> NULL); - IF NOT v_has_filter_user THEN - INSERT INTO tmp_Msg_Error ( - guid, - code, - msg - ) - VALUES ( - a_guid, - v_code_error_data, - 'User ID not found.' - ) - ; - END IF; - END IF; - END IF; - - -- Get users - IF NOT EXISTS (SELECT * FROM tmp_Msg_Error WHERE GUID = a_guid) THEN - INSERT INTO Shop_User_Eval_Temp ( - guid, - id_user, - id_permission_required, - priority_access_level_required - /* - priority_access_level_user, - is_super_user, - can_view, - can_edit, - can_admin - */ - ) - SELECT a_guid, - a_id_user, - P.id_permission, - AL.priority - FROM partsltd_prod.Shop_Permission P - INNER JOIN Shop_Access_Level AL - ON P.id_access_level_required = AL.id_access_level - AND AL.active - WHERE FIND_IN_SET(P.id_permission, a_ids_permission) > 0 - ; - - IF v_has_filter_permutation THEN - SET v_ids_row_delete := (SELECT GROUP_CONCAT(id_row SEPARATOR ',') FROM Shop_User_Eval_Temp WHERE a_guid = guid); - - INSERT INTO Shop_User_Eval_Temp ( - guid, - id_user, - id_permission_required, - id_product, - id_permutation, - priority_access_level_required - ) - SELECT UE_T.guid, - UE_T.id_user, - UE_T.id_permission_required, - t_P.id_product, - t_P.id_permutation, - CASE WHEN UE_T.priority_access_level_required < AL.priority THEN UE_T.priority_access_level_required ELSE AL.priority END -- UE_T.priority_access_level_required - FROM tmp_Shop_Product_p_Shop_User_Eval t_P - INNER JOIN Shop_Access_Level AL - ON t_P.id_access_leveL_required = AL.id_access_level - AND AL.active - CROSS JOIN Shop_User_Eval_Temp UE_T - ON a_id_user = UE_T.id_user - WHERE a_guid = t_P.guid - ; - - DELETE FROM Shop_User_Eval_Temp - WHERE FIND_IN_SET(id_row, v_ids_row_delete) > 0 - ; - END IF; - - /* - INSERT INTO Shop_User_Eval_Temp ( - guid, - id_user, - id_permission_required, - # id_access_level_required, - priority_access_level_required, - priority_access_level_user, - is_super_user - /* - can_view, - can_edit, - can_admin - * - ) - SELECT a_guid, - U.id_user, - P.id_permission, - AL.priority, - /* - v_id_permission, - v_id_access_level, - * - MIN(AL.priority), - U.is_super_user - /* - CASE WHEN U.is_super_user THEN 1 ELSE CASE WHEN priority_access_level_minimum <= v_priority_access_level_view THEN 1 ELSE 0 END END, - CASE WHEN U.is_super_user THEN 1 ELSE CASE WHEN priority_access_level_minimum <= v_priority_access_level_edit THEN 1 ELSE 0 END END, - CASE WHEN U.is_super_user THEN 1 ELSE CASE WHEN priority_access_level_minimum <= v_priority_access_level_admin THEN 1 ELSE 0 END END - * - FROM partsltd_prod.Shop_User U - INNER JOIN Shop_User_Role_Link URL - ON U.id_user = URL.id_user - AND URL.active - INNER JOIN Shop_Role_Permission_Link RPL - ON URL.id_role = RPL.id_role - AND RPL.active - INNER JOIN Shop_Permission P - ON RPL.id_permission = P.id_permission - AND P.active - INNER JOIN Shop_Access_Level AL - ON RPL.id_access_level = AL.id_access_level - AND AL.active - WHERE U.id_user = a_id_user - AND (a_get_inactive_users OR U.active) - AND FIND_IN_SET(P.id_permission, a_ids_permission) > 0 - # AND v_id_permission = P.id_permission - # AND v_id_access_level = AL.id_access_leveld - GROUP BY U.id_user, P.id_permission # , is_super_user - ; - */ - - IF v_has_filter_user THEN - UPDATE Shop_User_Eval_Temp UE_T - INNER JOIN Shop_User U - ON UE_T.id_user = U.id_user - AND U.active - INNER JOIN Shop_User_Role_Link URL - ON U.id_user = URL.id_user - AND URL.active - INNER JOIN Shop_Role_Permission_Link RPL - ON URL.id_role = RPL.id_role - AND RPL.active - INNER JOIN Shop_Access_Level AL - ON RPL.id_access_level = AL.id_access_level - AND AL.active - SET UE_T.priority_access_level_user = AL.priority, - UE_T.is_super_user = U.is_super_user, - UE_T.can_view = CASE WHEN U.is_super_user THEN 1 ELSE CASE WHEN ISNULL(AL.priority) THEN 1 ELSE CASE WHEN AL.priority <= v_priority_access_level_view AND AL.priority <= UE_T.priority_access_level_required THEN 1 ELSE 0 END END END, - UE_T.can_edit = CASE WHEN U.is_super_user THEN 1 ELSE CASE WHEN NOT ISNULL(AL.priority) AND AL.priority <= v_priority_access_level_edit AND AL.priority <= UE_T.priority_access_level_required THEN 1 ELSE 0 END END, - UE_T.can_admin = CASE WHEN U.is_super_user THEN 1 ELSE CASE WHEN NOT ISNULL(AL.priority) AND AL.priority <= v_priority_access_level_admin AND AL.priority <= UE_T.priority_access_level_required THEN 1 ELSE 0 END END - WHERE UE_T.guid = a_guid - AND UE_T.id_user = a_id_user - AND RPL.id_permission = UE_T.id_permission_required - # GROUP BY UE_T.id_user - ; - ELSE - UPDATE Shop_User_Eval_Temp UE_T - SET UE_T.priority_access_level_user = v_priority_access_level_view, - UE_T.is_super_user = 0, - UE_T.can_view = (v_priority_access_level_view <= UE_T.priority_access_level_required), - UE_T.can_edit = 0, - UE_T.can_admin = 0 - WHERE UE_T.guid = a_guid - AND UE_T.id_user = a_id_user - # GROUP BY UE_T.id_user - ; - END IF; - END IF; - - -- Clean up - DROP TABLE IF EXISTS tmp_Shop_Product_p_Shop_User_Eval; - # DROP TEMPORARY TABLE IF EXISTS tmp_User_Role_Link; - # DROP TABLE IF EXISTS tmp_Msg_Error; -END ;; -DELIMITER ;; -/*!50003 SET sql_mode = @saved_sql_mode */ ; -/*!50003 SET character_set_client = @saved_cs_client */ ; -/*!50003 SET character_set_results = @saved_cs_results */ ; -/*!50003 SET collation_connection = @saved_col_connection */ ; -/*!40103 SET TIME_ZONE=@OLD_TIME_ZONE */; - -/*!40101 SET SQL_MODE=@OLD_SQL_MODE */; -/*!40014 SET FOREIGN_KEY_CHECKS=@OLD_FOREIGN_KEY_CHECKS */; -/*!40014 SET UNIQUE_CHECKS=@OLD_UNIQUE_CHECKS */; -/*!40101 SET CHARACTER_SET_CLIENT=@OLD_CHARACTER_SET_CLIENT */; -/*!40101 SET CHARACTER_SET_RESULTS=@OLD_CHARACTER_SET_RESULTS */; -/*!40101 SET COLLATION_CONNECTION=@OLD_COLLATION_CONNECTION */; -/*!40111 SET SQL_NOTES=@OLD_SQL_NOTES */; - --- Dump completed on 2024-04-28 19:04:05 diff --git a/static/PostgreSQL/000_combine.sql b/static/PostgreSQL/000_combine.sql deleted file mode 100644 index 02960719..00000000 --- a/static/PostgreSQL/000_combine.sql +++ /dev/null @@ -1,15113 +0,0 @@ - -/* Clear Store DataBase */ - - - --- Drop dependencies -DROP TABLE IF EXISTS Shop_Calc_User_Temp; -DROP TABLE IF EXISTS tmp_Msg_Error; -DROP TABLE IF EXISTS tmp_Currency; -DROP TABLE IF EXISTS tmp_Delivery_Region; -DROP TABLE IF EXISTS tmp_Region; -DROP TABLE IF EXISTS tmp_Shop_User; -DROP TABLE IF EXISTS tmp_Shop_Order; -DROP TABLE IF EXISTS tmp_Shop_Product; -DROP TABLE IF EXISTS tmp_Shop_Product_p_shop_calc_user; -DROP TABLE IF EXISTS tmp_Shop_Image; -DROP TABLE IF EXISTS tmp_Shop_Variation; -DROP TABLE IF EXISTS tmp_Shop_Discount; -DROP TABLE IF EXISTS tmp_Discount; -DROP TABLE IF EXISTS tmp_Shop_Product_Category; -DROP TABLE IF EXISTS tmp_Shop_Product_Currency_Region_Link; -DROP TABLE IF EXISTS tmp_Shop_Product_Currency_Link; -DROP TABLE IF EXISTS tmp_User_Role_Link; -DROP TABLE IF EXISTS tmp_Shop_Basket; -DROP TABLE IF EXISTS tmp_Shop_Supplier_Purchase_Order_Product_Link; -DROP TABLE IF EXISTS tmp_Shop_Supplier_Purchase_Order; -DROP TABLE IF EXISTS tmp_Shop_Supplier; -DROP TABLE IF EXISTS tmp_Shop_Manufacturing_Purchase_Order_Product_Link; -DROP TABLE IF EXISTS tmp_Shop_Manufacturing_Purchase_Order; -DROP TABLE IF EXISTS tmp_Shop_Customer; - - - --- Delete old tables -DROP TABLE IF EXISTS Shop_Customer_Sales_Order_Product_Link_Temp; -DROP TABLE IF EXISTS Shop_Customer_Sales_Order_Product_Link_Audit; -DROP TABLE IF EXISTS Shop_Customer_Sales_Order_Product_Link; - -DROP TABLE IF EXISTS Shop_Customer_Sales_Order_Audit; -DROP TABLE IF EXISTS Shop_Customer_Sales_Order; - -DROP TABLE IF EXISTS Shop_Customer_Audit; -DROP TABLE IF EXISTS Shop_Customer; - -DROP TABLE IF EXISTS Shop_Manufacturing_Purchase_Order_Product_Link_Temp; -DROP TABLE IF EXISTS Shop_Manufacturing_Purchase_Order_Product_Link_Audit; -DROP TABLE IF EXISTS Shop_Manufacturing_Purchase_Order_Product_Link; - -DROP TABLE IF EXISTS Shop_Manufacturing_Purchase_Order_Audit; -DROP TABLE IF EXISTS Shop_Manufacturing_Purchase_Order; - -DROP TABLE IF EXISTS Shop_Supplier_Purchase_Order_Product_Link_Temp; -DROP TABLE IF EXISTS Shop_Supplier_Purchase_Order_Product_Link_Audit; -DROP TABLE IF EXISTS Shop_Supplier_Purchase_Order_Product_Link; - -DROP TABLE IF EXISTS Shop_Supplier_Purchase_Order_Audit; -DROP TABLE IF EXISTS Shop_Supplier_Purchase_Order; - -DROP TABLE IF EXISTS Shop_Unit_Measurement_Conversion_Audit; -DROP TABLE IF EXISTS Shop_Unit_Measurement_Conversion; - -DROP TABLE IF EXISTS Shop_Unit_Measurement_Audit; -DROP TABLE IF EXISTS Shop_Unit_Measurement; - -DROP TABLE IF EXISTS Shop_Supplier_Audit; -DROP TABLE IF EXISTS Shop_Supplier; - -DROP TABLE IF EXISTS Shop_User_Order_Product_Link_Audit; -DROP TABLE IF EXISTS Shop_User_Order_Product_Link; - -DROP TABLE IF EXISTS Shop_User_Order_Audit; -DROP TABLE IF EXISTS Shop_User_Order; - -DROP TABLE IF EXISTS Shop_User_Order_Status_Audit; -DROP TABLE IF EXISTS Shop_User_Order_Status; - -DROP TABLE IF EXISTS Shop_User_Basket_Audit; -DROP TABLE IF EXISTS Shop_User_Basket; - -DROP TABLE IF EXISTS Shop_Address_Audit; -DROP TABLE IF EXISTS Shop_Address; - -DROP TABLE IF EXISTS Shop_User_Role_Link_Audit; -DROP TABLE IF EXISTS Shop_User_Role_Link; - -DROP TABLE IF EXISTS Shop_User_Audit; -DROP TABLE IF EXISTS Shop_User; - -DROP TABLE IF EXISTS Shop_Role_Permission_Link_Audit; -DROP TABLE IF EXISTS Shop_Role_Permission_Link; - -DROP TABLE IF EXISTS Shop_Role_Audit; -DROP TABLE IF EXISTS Shop_Role; - -DROP TABLE IF EXISTS Shop_Permission_Audit; -DROP TABLE IF EXISTS Shop_Permission; - -DROP TABLE IF EXISTS Shop_Permission_Group_Audit; -DROP TABLE IF EXISTS Shop_Permission_Group; - - -DROP TABLE IF EXISTS Shop_Discount_Region_Currency_Link_Audit; -DROP TABLE IF EXISTS Shop_Discount_Region_Currency_Link; - -DROP TABLE IF EXISTS Shop_Discount_Audit; -DROP TABLE IF EXISTS Shop_Discount; - -DROP TABLE IF EXISTS Shop_Product_Permutation_Delivery_Option_Link_Audit; -DROP TABLE IF EXISTS Shop_Product_Permutation_Delivery_Option_Link; - -DROP TABLE IF EXISTS Shop_Delivery_Option_Audit; -DROP TABLE IF EXISTS Shop_Delivery_Option; - -DROP TABLE IF EXISTS Shop_Image_Audit; -DROP TABLE IF EXISTS Shop_Image; - -DROP TABLE IF EXISTS Shop_Image_Type_Audit; -DROP TABLE IF EXISTS Shop_Image_Type; - -DROP TABLE IF EXISTS Shop_Product_Currency_Region_Link_Audit; -DROP TABLE IF EXISTS Shop_Product_Currency_Region_Link; -DROP TABLE IF EXISTS Shop_Product_Currency_Link_Audit; -DROP TABLE IF EXISTS Shop_Product_Currency_Link; - -DROP TABLE IF EXISTS Shop_Product_Variation_Link_Audit; -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_Product_Permutation_Audit; -DROP TABLE IF EXISTS Shop_Product_Permutation; - -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_Variation_Type_Audit; -DROP TABLE IF EXISTS Shop_Variation_Type; - -DROP TABLE IF EXISTS Shop_Product_Audit; -DROP TABLE IF EXISTS Shop_Product; - -DROP TABLE IF EXISTS Shop_Tax_Or_Surcharge_Audit; -DROP TABLE IF EXISTS Shop_Tax_Or_Surcharge; - -DROP TABLE IF EXISTS Shop_Currency_Audit; -DROP TABLE IF EXISTS Shop_Currency; - -DROP TABLE IF EXISTS Shop_Delivery_Region_Branch_Audit; -DROP TABLE IF EXISTS Shop_Delivery_Region_Branch; -DROP TABLE IF EXISTS Shop_Region_Branch_Audit; -DROP TABLE IF EXISTS Shop_Region_Branch; - -DROP TABLE IF EXISTS Shop_Delivery_Region_Audit; -DROP TABLE IF EXISTS Shop_Delivery_Region; -DROP TABLE IF EXISTS Shop_Region_Audit; -DROP TABLE IF EXISTS Shop_Region; - -DROP TABLE IF EXISTS Shop_Interval_Recurrence_Audit; -DROP TABLE IF EXISTS Shop_Interval_Recurrence; - -DROP TABLE IF EXISTS Shop_Product_Category_Audit; -DROP TABLE IF EXISTS Shop_Product_Category; - -DROP TABLE IF EXISTS Shop_General_Audit; -DROP TABLE IF EXISTS Shop_General; - -DROP TABLE IF EXISTS File_Type_Audit; -DROP TABLE IF EXISTS File_Type; - -DROP TABLE IF EXISTS Msg_Error_Type; - -DROP TABLE IF EXISTS Shop_Access_Level_Audit; -DROP TABLE IF EXISTS Shop_Access_Level; - -DROP TABLE IF EXISTS Shop_Sales_And_Purchasing_Change_Set; -DROP TABLE IF EXISTS Shop_User_Change_Set; - -DROP TABLE IF EXISTS Shop_Msg_Error_Type; - -DROP TABLE IF EXISTS Shop_Product_Change_Set; - -DO $$ -BEGIN - RAISE NOTICE 'TABLE DELETION COMPLETE'; -END $$; - - -DROP FUNCTION IF EXISTS fn_shop_user_eval; -DROP FUNCTION IF EXISTS p_shop_calc_user; -DROP PROCEDURE IF EXISTS fn_shop_user_eval; -DROP PROCEDURE IF EXISTS p_shop_calc_user; - -DROP FUNCTION IF EXISTS fn_shop_save_product; -DROP FUNCTION IF EXISTS p_shop_save_product; -DROP PROCEDURE IF EXISTS fn_shop_save_product; -DROP PROCEDURE IF EXISTS p_shop_save_product; - -DROP FUNCTION IF EXISTS fn_shop_save_supplier; -DROP FUNCTION IF EXISTS p_shop_save_supplier; -DROP PROCEDURE IF EXISTS fn_shop_save_supplier; -DROP PROCEDURE IF EXISTS p_shop_save_supplier; - -DROP FUNCTION IF EXISTS fn_shop_save_supplier_purchase_order; -DROP FUNCTION IF EXISTS p_shop_save_supplier_purchase_order; -DROP PROCEDURE IF EXISTS fn_shop_save_supplier_purchase_order; -DROP PROCEDURE IF EXISTS p_shop_save_supplier_purchase_order; - -DROP FUNCTION IF EXISTS fn_shop_save_manufacturing_purchase_order; -DROP FUNCTION IF EXISTS p_shop_save_manufacturing_purchase_order; -DROP PROCEDURE IF EXISTS fn_shop_save_manufacturing_purchase_order; -DROP PROCEDURE IF EXISTS p_shop_save_manufacturing_purchase_order; - -DROP FUNCTION IF EXISTS fn_shop_save_customer; -DROP FUNCTION IF EXISTS p_shop_save_customer; -DROP PROCEDURE IF EXISTS fn_shop_save_customer; -DROP PROCEDURE IF EXISTS p_shop_save_customer; - -DROP FUNCTION IF EXISTS fn_shop_save_customer_sales_order; -DROP FUNCTION IF EXISTS p_shop_save_customer_sales_order; -DROP PROCEDURE IF EXISTS fn_shop_save_customer_sales_order; -DROP PROCEDURE IF EXISTS p_shop_save_customer_sales_order; - -DROP FUNCTION IF EXISTS fn_shop_save_user; -DROP FUNCTION IF EXISTS p_shop_save_user; -DROP PROCEDURE IF EXISTS fn_shop_save_user; -DROP PROCEDURE IF EXISTS p_shop_save_user; - -DROP FUNCTION IF EXISTS fn_shop_save_user_basket; -DROP FUNCTION IF EXISTS p_shop_save_user_basket; -DROP PROCEDURE IF EXISTS fn_shop_save_user_basket; -DROP PROCEDURE IF EXISTS p_shop_save_user_basket; - -DROP FUNCTION IF EXISTS fn_shop_get_many_product; -DROP FUNCTION IF EXISTS p_shop_get_many_product; -DROP PROCEDURE IF EXISTS fn_shop_get_many_product; -DROP PROCEDURE IF EXISTS p_shop_get_many_product; - -DROP FUNCTION IF EXISTS fn_shop_get_many_role_permission; -DROP FUNCTION IF EXISTS p_shop_get_many_role_permission; -DROP PROCEDURE IF EXISTS fn_shop_get_many_role_permission; -DROP PROCEDURE IF EXISTS p_shop_get_many_role_permission; - -DROP FUNCTION IF EXISTS fn_shop_get_many_currency; -DROP FUNCTION IF EXISTS p_shop_get_many_currency; -DROP PROCEDURE IF EXISTS fn_shop_get_many_currency; -DROP PROCEDURE IF EXISTS p_shop_get_many_currency; - -DROP FUNCTION IF EXISTS fn_shop_get_many_region; -DROP FUNCTION IF EXISTS p_shop_get_many_region; -DROP PROCEDURE IF EXISTS fn_shop_get_many_region; -DROP PROCEDURE IF EXISTS p_shop_get_many_region; - -DROP FUNCTION IF EXISTS fn_shop_get_many_user_order; -DROP FUNCTION IF EXISTS p_shop_get_many_user_order; -DROP PROCEDURE IF EXISTS fn_shop_get_many_user_order; -DROP PROCEDURE IF EXISTS p_shop_get_many_user_order; - -DROP FUNCTION IF EXISTS fn_shop_get_many_stripe_product_new; -DROP FUNCTION IF EXISTS p_shop_get_many_stripe_product_new; -DROP PROCEDURE IF EXISTS fn_shop_get_many_stripe_product_new; -DROP PROCEDURE IF EXISTS p_shop_get_many_stripe_product_new; - -DROP FUNCTION IF EXISTS fn_shop_get_many_stripe_price_new; -DROP FUNCTION IF EXISTS p_shop_get_many_stripe_price_new; -DROP PROCEDURE IF EXISTS fn_shop_get_many_stripe_price_new; -DROP PROCEDURE IF EXISTS p_shop_get_many_stripe_price_new; - -DROP FUNCTION IF EXISTS fn_shop_get_many_supplier; -DROP FUNCTION IF EXISTS p_shop_get_many_supplier; -DROP PROCEDURE IF EXISTS fn_shop_get_many_supplier; -DROP PROCEDURE IF EXISTS p_shop_get_many_supplier; - -DROP FUNCTION IF EXISTS fn_shop_get_many_supplier_purchase_order; -DROP FUNCTION IF EXISTS p_shop_get_many_supplier_purchase_order; -DROP PROCEDURE IF EXISTS fn_shop_get_many_supplier_purchase_order; -DROP PROCEDURE IF EXISTS p_shop_get_many_supplier_purchase_order; - -DROP FUNCTION IF EXISTS fn_shop_get_many_manufacturing_purchase_order; -DROP FUNCTION IF EXISTS p_shop_get_many_manufacturing_purchase_order; -DROP PROCEDURE IF EXISTS fn_shop_get_many_manufacturing_purchase_order; -DROP PROCEDURE IF EXISTS p_shop_get_many_manufacturing_purchase_order; - -DROP FUNCTION IF EXISTS fn_shop_get_many_customer; -DROP FUNCTION IF EXISTS p_shop_get_many_customer; -DROP PROCEDURE IF EXISTS fn_shop_get_many_customer; -DROP PROCEDURE IF EXISTS p_shop_get_many_customer; - -DROP FUNCTION IF EXISTS fn_shop_get_many_customer_sales_order; -DROP FUNCTION IF EXISTS p_shop_get_many_customer_sales_order; -DROP PROCEDURE IF EXISTS fn_shop_get_many_customer_sales_order; -DROP PROCEDURE IF EXISTS p_shop_get_many_customer_sales_order; --- Product Change Sets - - - -SELECT CONCAT('WARNING: Table ', TABLE_NAME, ' already exists.') AS msg_warning FROM INFORMATION_SCHEMA.TABLES WHERE TABLE_NAME = 'Shop_Product_Change_Set'; - -CREATE TABLE Shop_Product_Change_Set ( - id_change_set INTEGER NOT NULL PRIMARY KEY GENERATED ALWAYS AS IDENTITY, - comment VARCHAR(4000), - updated_last_on TIMESTAMP, - updated_last_by VARCHAR(100) -); --- User Change Sets - - - -SELECT CONCAT('WARNING: Table ', TABLE_NAME, ' already exists.') AS msg_warning FROM INFORMATION_SCHEMA.TABLES WHERE TABLE_NAME = 'Shop_User_Change_Set'; - -CREATE TABLE IF NOT EXISTS Shop_User_Change_Set ( - id_change_set INTEGER NOT NULL PRIMARY KEY GENERATED ALWAYS AS IDENTITY, - comment VARCHAR(4000), - updated_last_on TIMESTAMP, - updated_last_by VARCHAR(100) -); --- Access Levels - - - -SELECT CONCAT('WARNING: Table ', TABLE_NAME, ' already exists.') AS msg_warning FROM INFORMATION_SCHEMA.TABLES WHERE TABLE_NAME = 'Shop_Access_Level'; - -CREATE TABLE IF NOT EXISTS Shop_Access_Level ( - id_access_level INTEGER NOT NULL PRIMARY KEY GENERATED ALWAYS AS IDENTITY, - code VARCHAR(50), - name VARCHAR(255), - priority INTEGER NOT NULL, - active BOOLEAN NOT NULL DEFAULT TRUE, - display_order INTEGER NOT NULL, - created_on TIMESTAMP, - created_by INT, - id_change_set INTEGER, - CONSTRAINT FK_Shop_Access_Level_id_change_set - FOREIGN KEY (id_change_set) - REFERENCES Shop_User_Change_Set(id_change_set) -); --- Sales And Purchasing Change Sets - - - -SELECT CONCAT('WARNING: Table ', TABLE_NAME, ' already exists.') AS msg_warning FROM INFORMATION_SCHEMA.TABLES WHERE TABLE_NAME = 'Shop_Sales_And_Purchasing_Change_Set'; - -CREATE TABLE Shop_Sales_And_Purchasing_Change_Set ( - id_change_set INTEGER NOT NULL PRIMARY KEY GENERATED ALWAYS AS IDENTITY, - comment VARCHAR(4000), - updated_last_on TIMESTAMP, - updated_last_by VARCHAR(100) -); --- Access Level Audits - - - -SELECT CONCAT('WARNING: Table ', TABLE_NAME, ' already exists.') AS msg_warning FROM INFORMATION_SCHEMA.TABLES WHERE TABLE_NAME = 'Shop_Access_Level_Audit'; - -CREATE TABLE IF NOT EXISTS Shop_Access_Level_Audit ( - id_audit INTEGER NOT NULL PRIMARY KEY GENERATED ALWAYS AS IDENTITY, - id_access_level INTEGER NOT NULL, - CONSTRAINT FK_Shop_Access_Level_Audit_id_access_level - FOREIGN KEY (id_access_level) - REFERENCES Shop_Access_Level(id_access_level) - ON UPDATE RESTRICT, - name_field VARCHAR(50), - value_prev VARCHAR(255), - value_new VARCHAR(255), - id_change_set INTEGER NOT NULL, - CONSTRAINT FK_Shop_Access_Level_Audit_id_change_set - FOREIGN KEY (id_change_set) - REFERENCES Shop_User_Change_Set(id_change_set) -); --- Error Message Type - - - -SELECT CONCAT('WARNING: Table ', TABLE_NAME, ' already exists.') AS msg_warning FROM INFORMATION_SCHEMA.TABLES WHERE TABLE_NAME = 'Shop_Msg_Error_Type'; - -CREATE TABLE IF NOT EXISTS Shop_Msg_Error_Type ( - id_type INTEGER NOT NULL PRIMARY KEY GENERATED ALWAYS AS IDENTITY, - code VARCHAR(50) NOT NULL, - name VARCHAR(200) NOT NULL, - description VARCHAR(1000) -); - --- File Types - - - -SELECT CONCAT('WARNING: Table ', TABLE_NAME, ' already exists.') AS msg_warning FROM INFORMATION_SCHEMA.TABLES WHERE TABLE_NAME = 'File_Type'; - -CREATE TABLE IF NOT EXISTS File_Type ( - id_type INTEGER NOT NULL PRIMARY KEY GENERATED ALWAYS AS IDENTITY, - code VARCHAR(50), - name VARCHAR(100), - extension VARCHAR(50), - created_on TIMESTAMP, - created_by INT, - updated_last_on TIMESTAMP, - updated_last_by VARCHAR(100) -); - --- File Type Audit - - - -SELECT CONCAT('WARNING: Table ', TABLE_NAME, ' already exists.') AS msg_warning FROM INFORMATION_SCHEMA.TABLES WHERE TABLE_NAME = 'File_Type_Audit'; - -CREATE TABLE IF NOT EXISTS File_Type_Audit ( - id_audit INTEGER NOT NULL PRIMARY KEY GENERATED ALWAYS AS IDENTITY, - id_type INTEGER NOT NULL, - CONSTRAINT FK_File_Type_Audit_id_type - FOREIGN KEY (id_type) - REFERENCES File_Type(id_type) - ON UPDATE RESTRICT, - name_field VARCHAR(50), - value_prev VARCHAR(100), - value_new VARCHAR(100), - created_on TIMESTAMP, - created_by INT, - updated_last_on TIMESTAMP, - updated_last_by VARCHAR(100) -); --- Generic / shared properties - - - -SELECT CONCAT('WARNING: Table ', TABLE_NAME, ' already exists.') AS msg_warning FROM INFORMATION_SCHEMA.TABLES WHERE TABLE_NAME = 'Shop_General'; - -CREATE TABLE IF NOT EXISTS Shop_General ( - id_general INTEGER NOT NULL PRIMARY KEY GENERATED ALWAYS AS IDENTITY, - quantity_max REAL, - created_on TIMESTAMP, - created_by INT, - id_change_set INTEGER, - CONSTRAINT CHK_Shop_General_id_change_set - FOREIGN KEY (id_change_set) - REFERENCES Shop_Product_Change_Set(id_change_set) -); --- Shop General Audits - - - -SELECT CONCAT('WARNING: Table ', TABLE_NAME, ' already exists.') AS msg_warning FROM INFORMATION_SCHEMA.TABLES WHERE TABLE_NAME = 'Shop_General_Audit'; - -CREATE TABLE IF NOT EXISTS Shop_General_Audit ( - id_audit INTEGER NOT NULL PRIMARY KEY GENERATED ALWAYS AS IDENTITY, - id_general INTEGER NOT NULL, - CONSTRAINT FK_Shop_General_Audit_id_general - FOREIGN KEY (id_general) - REFERENCES Shop_General(id_general) - ON UPDATE RESTRICT, - name_field VARCHAR(50), - value_prev VARCHAR(100), - value_new VARCHAR(100), - id_change_set INTEGER NOT NULL, - CONSTRAINT FK_Shop_General_Audit_id_change_set - FOREIGN KEY (id_change_set) - REFERENCES Shop_Product_Change_Set(id_change_set) -); --- Categories - - - -SELECT CONCAT('WARNING: Table ', TABLE_NAME, ' already exists.') AS msg_warning FROM INFORMATION_SCHEMA.TABLES WHERE TABLE_NAME = 'Shop_Product_Category'; - -CREATE TABLE IF NOT EXISTS Shop_Product_Category ( - id_category INTEGER NOT NULL PRIMARY KEY GENERATED ALWAYS AS IDENTITY, - code VARCHAR(50), - name VARCHAR(255), - description VARCHAR(4000), - active BOOLEAN NOT NULL DEFAULT TRUE, - display_order INTEGER NOT NULL, - created_on TIMESTAMP, - created_by INT, - id_change_set INTEGER, - CONSTRAINT FK_Shop_Product_Category_id_change_set - FOREIGN KEY (id_change_set) - REFERENCES Shop_Product_Change_Set(id_change_set) -); - --- Category Audits - - - -SELECT CONCAT('WARNING: Table ', TABLE_NAME, ' already exists.') AS msg_warning FROM INFORMATION_SCHEMA.TABLES WHERE TABLE_NAME = 'Shop_Product_Category_Audit'; - -CREATE TABLE IF NOT EXISTS Shop_Product_Category_Audit ( - id_audit INTEGER NOT NULL PRIMARY KEY GENERATED ALWAYS AS IDENTITY, - id_category INTEGER NOT NULL, - CONSTRAINT FK_Shop_Product_Category_Audit_id_category - FOREIGN KEY (id_category) - REFERENCES Shop_Product_Category(id_category) - ON UPDATE RESTRICT, - name_field VARCHAR(50), - value_prev VARCHAR(4000), - value_new VARCHAR(4000), - id_change_set INTEGER NOT NULL, - CONSTRAINT FK_Shop_Product_Category_Audit_id_change_set - FOREIGN KEY (id_change_set) - REFERENCES Shop_Product_Change_Set(id_change_set) -); - --- Recurrence Interval - - - -SELECT CONCAT('WARNING: Table ', TABLE_NAME, ' already exists.') AS msg_warning FROM INFORMATION_SCHEMA.TABLES WHERE TABLE_NAME = 'Shop_Interval_Recurrence'; - -CREATE TABLE IF NOT EXISTS Shop_Interval_Recurrence ( - id_interval INTEGER NOT NULL PRIMARY KEY GENERATED ALWAYS AS IDENTITY, - code VARCHAR(50), - name VARCHAR(255), - name_plural VARCHAR(256), - active BOOLEAN NOT NULL DEFAULT TRUE, - created_on TIMESTAMP, - created_by INT, - id_change_set INTEGER, - CONSTRAINT FK_Shop_Interval_Recurrence_id_change_set - FOREIGN KEY (id_change_set) - REFERENCES Shop_Product_Change_Set(id_change_set) -); - --- Recurrence Interval Audits - - - -SELECT CONCAT('WARNING: Table ', TABLE_NAME, ' already exists.') AS msg_warning FROM INFORMATION_SCHEMA.TABLES WHERE TABLE_NAME = 'Shop_Interval_Recurrence_Audit'; - -CREATE TABLE IF NOT EXISTS Shop_Interval_Recurrence_Audit ( - id_audit INTEGER NOT NULL PRIMARY KEY GENERATED ALWAYS AS IDENTITY, - id_interval INTEGER NOT NULL, - CONSTRAINT FK_Shop_Interval_Recurrence_Audit_id_interval - FOREIGN KEY (id_interval) - REFERENCES Shop_Interval_Recurrence(id_interval) - ON UPDATE RESTRICT, - name_field VARCHAR(50), - value_prev VARCHAR(256), - value_new VARCHAR(256), - id_change_set INTEGER NOT NULL, - CONSTRAINT FK_Shop_Interval_Recurrence_Audit_id_change_set - FOREIGN KEY (id_change_set) - REFERENCES Shop_Product_Change_Set(id_change_set) -); - --- Regions - - - -SELECT CONCAT('WARNING: Table ', TABLE_NAME, ' already exists.') AS msg_warning FROM INFORMATION_SCHEMA.TABLES WHERE TABLE_NAME = 'Shop_Region'; - -CREATE TABLE IF NOT EXISTS Shop_Region ( - id_region INTEGER NOT NULL PRIMARY KEY GENERATED ALWAYS AS IDENTITY, - code VARCHAR(50) NOT NULL, - name VARCHAR(200) NOT NULL, - active BOOLEAN NOT NULL DEFAULT TRUE, - display_order INTEGER NOT NULL, - created_on TIMESTAMP, - created_by INT, - id_change_set INTEGER, - CONSTRAINT FK_Shop_Region_id_change_set - FOREIGN KEY (id_change_set) - REFERENCES Shop_Product_Change_Set(id_change_set) -); --- Region Audits - - - -SELECT CONCAT('WARNING: Table ', TABLE_NAME, ' already exists.') AS msg_warning FROM INFORMATION_SCHEMA.TABLES WHERE TABLE_NAME = 'Shop_Region_Audit'; - -CREATE TABLE IF NOT EXISTS Shop_Region_Audit ( - id_audit INTEGER NOT NULL PRIMARY KEY GENERATED ALWAYS AS IDENTITY, - id_region INTEGER NOT NULL, - CONSTRAINT FK_Shop_Region_Audit_id_region - FOREIGN KEY (id_region) - REFERENCES Shop_Region(id_region) - ON UPDATE RESTRICT, - name_field VARCHAR(64) NOT NULL, - value_prev VARCHAR(200), - value_new VARCHAR(200), - id_change_set INTEGER NOT NULL, - CONSTRAINT FK_Shop_Region_Audit_id_change_set - FOREIGN KEY (id_change_set) - REFERENCES Shop_Product_Change_Set(id_change_set) -); --- Region Branchs - - - -SELECT CONCAT('WARNING: Table ', TABLE_NAME, ' already exists.') AS msg_warning FROM INFORMATION_SCHEMA.TABLES WHERE TABLE_NAME = 'Shop_Region_Branch'; - -CREATE TABLE IF NOT EXISTS Shop_Region_Branch ( - id_branch INTEGER NOT NULL PRIMARY KEY GENERATED ALWAYS AS IDENTITY, - id_region_parent INTEGER NOT NULL, - CONSTRAINT FK_Shop_Region_Branch_id_region_parent - FOREIGN KEY (id_region_parent) - REFERENCES Shop_Region(id_region) - ON UPDATE RESTRICT, - id_region_child INTEGER NOT NULL, - CONSTRAINT FK_Shop_Region_Branch_id_region_child - FOREIGN KEY (id_region_child) - REFERENCES Shop_Region(id_region) - ON UPDATE RESTRICT, - -- depth INTEGER NOT NULL, - active BOOLEAN NOT NULL DEFAULT TRUE, - display_order INTEGER NOT NULL, - created_on TIMESTAMP, - created_by INT, - id_change_set INTEGER, - CONSTRAINT FK_Shop_Region_Branch_id_change_set - FOREIGN KEY (id_change_set) - REFERENCES Shop_Product_Change_Set(id_change_set) -); --- Region Audits - - - -SELECT CONCAT('WARNING: Table ', TABLE_NAME, ' already exists.') AS msg_warning FROM INFORMATION_SCHEMA.TABLES WHERE TABLE_NAME = 'Shop_Region_Branch_Audit'; - -CREATE TABLE IF NOT EXISTS Shop_Region_Branch_Audit ( - id_audit INTEGER NOT NULL PRIMARY KEY GENERATED ALWAYS AS IDENTITY, - id_branch INTEGER NOT NULL, - CONSTRAINT FK_Shop_Region_Branch_Audit_id_branch - FOREIGN KEY (id_branch) - REFERENCES Shop_Region_Branch(id_branch) - ON UPDATE RESTRICT, - name_field VARCHAR(64) NOT NULL, - value_prev VARCHAR(10), - value_new VARCHAR(10), - id_change_set INTEGER NOT NULL, - CONSTRAINT FK_Shop_Region_Branch_Audit_id_change_set - FOREIGN KEY (id_change_set) - REFERENCES Shop_Product_Change_Set(id_change_set) -); --- Currencies - - - -SELECT CONCAT('WARNING: Table ', TABLE_NAME, ' already exists.') AS msg_warning FROM INFORMATION_SCHEMA.TABLES WHERE TABLE_NAME = 'Shop_Currency'; - -CREATE TABLE IF NOT EXISTS Shop_Currency ( - id_currency INTEGER NOT NULL PRIMARY KEY GENERATED ALWAYS AS IDENTITY, - code VARCHAR(50) NOT NULL, - name VARCHAR(255) NOT NULL, - symbol VARCHAR(1) NOT NULL, - factor_from_GBP REAL NOT NULL, - active BOOLEAN NOT NULL DEFAULT TRUE, - display_order INTEGER NOT NULL, - created_on TIMESTAMP, - created_by INT, - id_change_set INTEGER, - CONSTRAINT FK_Shop_Currency_id_change_set - FOREIGN KEY (id_change_set) - REFERENCES Shop_Product_Change_Set(id_change_set) - ON UPDATE RESTRICT -); --- Currency Audits - - - -SELECT CONCAT('WARNING: Table ', TABLE_NAME, ' already exists.') AS msg_warning FROM INFORMATION_SCHEMA.TABLES WHERE TABLE_NAME = 'Shop_Currency_Audit'; - -CREATE TABLE IF NOT EXISTS Shop_Currency_Audit ( - id_audit INTEGER NOT NULL PRIMARY KEY GENERATED ALWAYS AS IDENTITY, - id_currency INTEGER NOT NULL, - CONSTRAINT FK_Shop_Currency_Audit_id_currency - FOREIGN KEY (id_currency) - REFERENCES Shop_Currency(id_currency) - ON UPDATE RESTRICT, - name_field VARCHAR(50), - value_prev VARCHAR(255), - value_new VARCHAR(255), - id_change_set INTEGER NOT NULL, - CONSTRAINT FK_Shop_Currency_Audit_id_change_set - FOREIGN KEY (id_change_set) - REFERENCES Shop_User_Change_Set(id_change_set) - ON UPDATE RESTRICT -); --- Taxes and Surcharges - - - -SELECT CONCAT('WARNING: Table ', TABLE_NAME, ' already exists.') AS msg_warning FROM INFORMATION_SCHEMA.TABLES WHERE TABLE_NAME = 'Shop_Tax_Or_Surcharge'; - -CREATE TABLE Shop_Tax_Or_Surcharge ( - id_tax INTEGER NOT NULL PRIMARY KEY GENERATED ALWAYS AS IDENTITY, - code VARCHAR(50) NOT NULL, - name VARCHAR(200) NOT NULL, - id_region_buyer INTEGER NOT NULL, - CONSTRAINT FK_Shop_Tax_Or_Surcharge_id_region_buyer - FOREIGN KEY (id_region_buyer) - REFERENCES Shop_Region(id_region), - id_region_seller INTEGER NOT NULL, - CONSTRAINT FK_Shop_Tax_Or_Surcharge_id_region_seller - FOREIGN KEY (id_region_seller) - REFERENCES Shop_Region(id_region), - id_currency INTEGER, - CONSTRAINT FK_Shop_Tax_Or_Surcharge_id_currency - FOREIGN KEY (id_currency) - REFERENCES Shop_Currency(id_currency) - ON UPDATE RESTRICT, - fixed_fee REAL NOT NULL DEFAULT 0, - multiplier REAL NOT NULL DEFAULT 1 CHECK (multiplier > 0), - apply_fixed_fee_before_multiplier BOOLEAN NOT NULL DEFAULT TRUE, - quantity_min REAL NOT NULL DEFAULT 0, - quantity_max REAL NOT NULL, - active BOOLEAN NOT NULL DEFAULT TRUE, - display_order INTEGER NOT NULL, - created_on TIMESTAMP, - created_by INT, - id_change_set INTEGER, - CONSTRAINT FK_Shop_Tax_Or_Surcharge_id_change_set - FOREIGN KEY (id_change_set) - REFERENCES Shop_Product_Change_Set(id_change_set) -); - --- Tax Or Surcharge Audits - - - -SELECT CONCAT('WARNING: Table ', TABLE_NAME, ' already exists.') AS msg_warning FROM INFORMATION_SCHEMA.TABLES WHERE TABLE_NAME = 'Shop_Tax_Or_Surcharge_Audit'; - -CREATE TABLE IF NOT EXISTS Shop_Tax_Or_Surcharge_Audit ( - id_audit INTEGER NOT NULL PRIMARY KEY GENERATED ALWAYS AS IDENTITY, - id_tax INTEGER NOT NULL, - CONSTRAINT FK_Shop_Tax_Or_Surcharge_Audit_id_discount - FOREIGN KEY (id_tax) - REFERENCES Shop_Tax_Or_Surcharge(id_tax) - ON UPDATE RESTRICT, - name_field VARCHAR(50), - value_prev VARCHAR(200), - value_new VARCHAR(200), - id_change_set INTEGER NOT NULL, - CONSTRAINT FK_Shop_Tax_Or_Surcharge_Audit_id_change_set - FOREIGN KEY (id_change_set) - REFERENCES Shop_Product_Change_Set(id_change_set) - ON UPDATE RESTRICT -); --- Products - - - -SELECT CONCAT('WARNING: Table ', TABLE_NAME, ' already exists.') AS msg_warning FROM INFORMATION_SCHEMA.TABLES WHERE TABLE_NAME = 'Shop_Product'; - -CREATE TABLE IF NOT EXISTS Shop_Product ( - id_product INTEGER NOT NULL PRIMARY KEY GENERATED ALWAYS AS IDENTITY, - name VARCHAR(255) NOT NULL, - -- description VARCHAR(4000), - id_category INTEGER NOT NULL, - has_variations BOOLEAN NOT NULL, - /* - price_GBP_full REAL, - price_GBP_min REAL, - -- ratio_discount_overall REAL NOT NULL DEFAULT 0, - CONSTRAINT FK_Shop_Product_id_category - FOREIGN KEY (id_category) - REFERENCES Shop_Product_Category(id_category) - ON UPDATE RESTRICT, - latency_manuf INTEGER, - quantity_min REAL, - quantity_max REAL, - quantity_step REAL, - quantity_stock REAL, - is_subscription BOOLEAN, - id_unit_measurement_interval_recurrence INTEGER, - CONSTRAINT FK_Shop_Product_id_unit_measurement_interval_recurrence - FOREIGN KEY (id_unit_measurement_interval_recurrence) - REFERENCES Shop_Interval_Recurrence(id_interval), - count_interval_recurrence INTEGER, - */ - id_access_level_required INTEGER NOT NULL, - CONSTRAINT FK_Shop_Product_id_access_level_required - FOREIGN KEY (id_access_level_required) - REFERENCES Shop_Access_Level(id_access_level), - -- id_stripe_product VARCHAR(100), - -- id_stripe_price VARCHAR(100) NOT NULL, - active BOOLEAN NOT NULL DEFAULT TRUE, - display_order INTEGER NOT NULL, - created_on TIMESTAMP, - created_by INT, - id_change_set INTEGER, - CONSTRAINT FK_Shop_Product_id_change_set - FOREIGN KEY (id_change_set) - REFERENCES Shop_Product_Change_Set(id_change_set) -); - --- Products - - - -SELECT CONCAT('WARNING: Table ', TABLE_NAME, ' already exists.') AS msg_warning FROM INFORMATION_SCHEMA.TABLES WHERE TABLE_NAME = 'Shop_Product_Audit'; - -CREATE TABLE IF NOT EXISTS Shop_Product_Audit ( - id_audit INTEGER NOT NULL PRIMARY KEY GENERATED ALWAYS AS IDENTITY, - id_product INTEGER NOT NULL, - CONSTRAINT FK_Shop_Product_Audit_id_product - FOREIGN KEY (id_product) - REFERENCES Shop_Product(id_product) - ON UPDATE RESTRICT, - name_field VARCHAR(50), - value_prev VARCHAR(255), - value_new VARCHAR(255), - id_change_set INTEGER NOT NULL, - CONSTRAINT FK_Shop_Product_Audit_id_change_set - FOREIGN KEY (id_change_set) - REFERENCES Shop_Product_Change_Set(id_change_set) -); --- Variation Types - - - -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 INTEGER NOT NULL PRIMARY KEY GENERATED ALWAYS AS IDENTITY, - code VARCHAR(50), - name VARCHAR(255), - name_plural VARCHAR(256), - active BOOLEAN NOT NULL DEFAULT TRUE, - display_order INTEGER NOT NULL, - created_on TIMESTAMP, - created_by INT, - id_change_set INTEGER, - CONSTRAINT FK_Shop_Variation_Type_id_change_set - FOREIGN KEY (id_change_set) - REFERENCES Shop_Product_Change_Set(id_change_set) -); --- Variation Type Audits - - - -SELECT CONCAT('WARNING: Table ', TABLE_NAME, ' already exists.') AS msg_warning FROM INFORMATION_SCHEMA.TABLES WHERE TABLE_NAME = 'Shop_Variation_Type_Audit'; - -CREATE TABLE IF NOT EXISTS Shop_Variation_Type_Audit ( - id_audit INTEGER NOT NULL PRIMARY KEY GENERATED ALWAYS AS IDENTITY, - id_type INTEGER NOT NULL, - CONSTRAINT FK_Shop_Variation_Type_Audit_id_type - FOREIGN KEY (id_type) - REFERENCES Shop_Variation_Type(id_type) - ON UPDATE RESTRICT, - name_field VARCHAR(50), - value_prev VARCHAR(256), - value_new VARCHAR(256), - id_change_set INTEGER NOT NULL, - CONSTRAINT FK_Shop_Variation_Type_Audit_id_change_set - FOREIGN KEY (id_change_set) - REFERENCES Shop_Product_Change_Set(id_change_set) -); - --- Variations - - - -SELECT CONCAT('WARNING: Table ', TABLE_NAME, ' already exists.') AS msg_warning FROM INFORMATION_SCHEMA.TABLES WHERE TABLE_NAME = 'Shop_Variation'; - -CREATE TABLE Shop_Variation ( - id_variation INTEGER NOT NULL PRIMARY KEY GENERATED ALWAYS AS IDENTITY, - id_type INTEGER NOT NULL, - CONSTRAINT FK_Shop_Variation_id_type - FOREIGN KEY (id_type) - REFERENCES Shop_Variation_Type(id_type) - ON UPDATE RESTRICT, - code VARCHAR(50), - name VARCHAR(255), - active BOOLEAN NOT NULL DEFAULT TRUE, - display_order INTEGER NOT NULL, - created_on TIMESTAMP, - created_by INT, - id_change_set INTEGER, - CONSTRAINT FK_Shop_Variation_id_change_set - FOREIGN KEY (id_change_set) - REFERENCES Shop_Product_Change_Set(id_change_set) -); - --- Variation Audits - - - -SELECT CONCAT('WARNING: Table ', TABLE_NAME, ' already exists.') AS msg_warning FROM INFORMATION_SCHEMA.TABLES WHERE TABLE_NAME = 'Shop_Variation_Audit'; - -CREATE TABLE IF NOT EXISTS Shop_Variation_Audit ( - id_audit INTEGER NOT NULL PRIMARY KEY GENERATED ALWAYS AS IDENTITY, - id_variation INTEGER NOT NULL, - CONSTRAINT FK_Shop_Variation_Audit_id_variation - FOREIGN KEY (id_variation) - REFERENCES Shop_Variation(id_variation) - ON UPDATE RESTRICT, - name_field VARCHAR(50), - value_prev VARCHAR(255), - value_new VARCHAR(255), - id_change_set INTEGER NOT NULL, - CONSTRAINT FK_Shop_Variation_Audit_id_change_set - FOREIGN KEY (id_change_set) - REFERENCES Shop_Product_Change_Set(id_change_set) -); - --- Product Permutation - - - -SELECT CONCAT('WARNING: Table ', TABLE_NAME, ' already exists.') AS msg_warning FROM INFORMATION_SCHEMA.TABLES WHERE TABLE_NAME = 'Shop_Product_Permutation'; - -CREATE TABLE IF NOT EXISTS Shop_Product_Permutation ( - id_permutation INTEGER NOT NULL PRIMARY KEY GENERATED ALWAYS AS IDENTITY, - id_product INTEGER NOT NULL, - CONSTRAINT FK_Shop_Product_Variation_Link_id_product - FOREIGN KEY (id_product) - REFERENCES Shop_Product(id_product) - ON UPDATE RESTRICT, - -- name VARCHAR(255) NOT NULL, - description VARCHAR(4000) NOT NULL, - cost_local REAL NOT NULL, - id_currency_cost INTEGER NOT NULL, - profit_local_min REAL NOT NULL, - -- id_currency_profit_min INTEGER NOT NULL, - latency_manufacture INTEGER NOT NULL, - quantity_min REAL NOT NULL, - quantity_max REAL NOT NULL, - quantity_step REAL NOT NULL, - quantity_stock REAL NOT NULL, - is_subscription BOOLEAN NOT NULL, - id_unit_measurement_interval_recurrence INTEGER, - CONSTRAINT FK_Shop_Product_Permutation_id_unit_measurement_interval_recurrence - FOREIGN KEY (id_unit_measurement_interval_recurrence) - REFERENCES Shop_Interval_Recurrence(id_interval), - count_interval_recurrence INTEGER, - /* - id_access_level_required INTEGER NOT NULL, - CONSTRAINT FK_Shop_Product_Permutation_id_access_level_required - FOREIGN KEY (id_access_level_required) - REFERENCES Shop_Access_Level(id_access_level), - */ - id_stripe_product VARCHAR(100) NULL, - active BOOLEAN NOT NULL DEFAULT TRUE, - display_order INTEGER NOT NULL, - created_on TIMESTAMP, - created_by INT, - id_change_set INTEGER, - CONSTRAINT FK_Shop_Product_Variation_Link_id_change_set - FOREIGN KEY (id_change_set) - REFERENCES Shop_Product_Change_Set(id_change_set) -); - --- Product Permutation Audits - - - -SELECT CONCAT('WARNING: Table ', TABLE_NAME, ' already exists.') AS msg_warning FROM INFORMATION_SCHEMA.TABLES WHERE TABLE_NAME = 'Shop_Product_Permutation_Audit'; - -CREATE TABLE IF NOT EXISTS Shop_Product_Permutation_Audit ( - id_audit INTEGER NOT NULL PRIMARY KEY GENERATED ALWAYS AS IDENTITY, - id_permutation INTEGER NOT NULL, - CONSTRAINT FK_Shop_Product_Permutation_Audit_id_permutation - FOREIGN KEY (id_permutation) - REFERENCES Shop_Product_Permutation(id_permutation) - ON UPDATE RESTRICT, - name_field VARCHAR(50), - value_prev VARCHAR(4000), - value_new VARCHAR(4000), - id_change_set INTEGER NOT NULL, - CONSTRAINT FK_Shop_Product_Permutation_Audit_id_change_set - FOREIGN KEY (id_change_set) - REFERENCES Shop_Product_Change_Set(id_change_set) - ON UPDATE RESTRICT -); - --- Product Permutation Variation Link - - - -SELECT CONCAT('WARNING: Table ', TABLE_NAME, ' already exists.') AS msg_warning FROM INFORMATION_SCHEMA.TABLES WHERE TABLE_NAME = 'Shop_Product_Permutation_Variation_Link'; - -CREATE TABLE IF NOT EXISTS Shop_Product_Permutation_Variation_Link ( - id_link INTEGER NOT NULL PRIMARY KEY GENERATED ALWAYS AS IDENTITY, - id_permutation INTEGER NOT NULL, - CONSTRAINT FK_Shop_Product_Permutation_Variation_Link_id_permutation - FOREIGN KEY (id_permutation) - REFERENCES Shop_Product_Permutation(id_permutation) - ON UPDATE RESTRICT, - id_variation INTEGER NOT NULL, - CONSTRAINT FK_Shop_Product_Permutation_Variation_Link_id_variation - FOREIGN KEY (id_variation) - REFERENCES Shop_Variation(id_variation) - ON UPDATE RESTRICT, - active BOOLEAN NOT NULL DEFAULT TRUE, - display_order INTEGER NOT NULL, - created_on TIMESTAMP, - created_by INT, - id_change_set INTEGER, - CONSTRAINT FK_Shop_Product_Permutation_Variation_Link_id_change_set - FOREIGN KEY (id_change_set) - REFERENCES Shop_Product_Change_Set(id_change_set) -); - --- Product Permutation Variation Link Audits - - - -SELECT CONCAT('WARNING: Table ', TABLE_NAME, ' already exists.') AS msg_warning FROM INFORMATION_SCHEMA.TABLES WHERE TABLE_NAME = 'Shop_Product_Permutation_Variation_Link_Audit'; - -CREATE TABLE IF NOT EXISTS Shop_Product_Permutation_Variation_Link_Audit ( - id_audit INTEGER NOT NULL PRIMARY KEY GENERATED ALWAYS AS IDENTITY, - id_link INTEGER NOT NULL, - CONSTRAINT FK_Shop_Product_Permutation_Variation_Link_Audit_id_link - FOREIGN KEY (id_link) - REFERENCES Shop_Product_Permutation_Variation_Link(id_link) - ON UPDATE RESTRICT, - name_field VARCHAR(50), - value_prev VARCHAR(10), - value_new VARCHAR(10), - id_change_set INTEGER NOT NULL, - CONSTRAINT FK_Shop_Product_Permutation_Variation_Link_Audit_id_change_set - FOREIGN KEY (id_change_set) - REFERENCES Shop_Product_Change_Set(id_change_set) - ON UPDATE RESTRICT -); --- Product Currency Region link - - - -SELECT CONCAT('WARNING: Table ', TABLE_NAME, ' already exists.') AS msg_warning FROM INFORMATION_SCHEMA.TABLES WHERE TABLE_NAME = 'Shop_Product_Currency_Region_Link'; - -CREATE TABLE IF NOT EXISTS Shop_Product_Currency_Region_Link ( - id_link INTEGER NOT NULL PRIMARY KEY GENERATED ALWAYS AS IDENTITY, - id_product INTEGER NOT NULL, - CONSTRAINT FK_Shop_Product_Currency_Region_Link_id_product - FOREIGN KEY (id_product) - REFERENCES Shop_Product(id_product) - ON UPDATE RESTRICT, - id_permutation INTEGER NULL, - CONSTRAINT FK_Shop_Product_Currency_Region_Link_id_permutation - FOREIGN KEY (id_permutation) - REFERENCES Shop_Product_Permutation(id_permutation) - ON UPDATE RESTRICT, - id_currency INTEGER NOT NULL, - CONSTRAINT FK_Shop_Product_Currency_Region_Link_id_currency - FOREIGN KEY (id_currency) - REFERENCES Shop_Currency(id_currency) - ON UPDATE RESTRICT, - id_region_purchase INTEGER NOT NULL, - CONSTRAINT FK_Shop_Product_Currency_Region_Link_id_region_purchase - FOREIGN KEY (id_region_purchase) - REFERENCES Shop_Region(id_region) - ON UPDATE RESTRICT, - price_local_VAT_incl REAL NULL, - price_local_VAT_excl REAL NULL, - id_stripe_price VARCHAR(200), - active BOOLEAN NOT NULL DEFAULT TRUE, - created_on TIMESTAMP, - created_by INT, - id_change_set INTEGER, - CONSTRAINT FK_Shop_Product_Currency_Region_Link_id_change_set - FOREIGN KEY (id_change_set) - REFERENCES Shop_Product_Change_Set(id_change_set) -); --- Product Currency Region Link Audits - - - -SELECT CONCAT('WARNING: Table ', TABLE_NAME, ' already exists.') AS msg_warning FROM INFORMATION_SCHEMA.TABLES WHERE TABLE_NAME = 'Shop_Product_Currency_Region_Link_Audit'; - -CREATE TABLE IF NOT EXISTS Shop_Product_Currency_Region_Link_Audit ( - id_audit INTEGER NOT NULL PRIMARY KEY GENERATED ALWAYS AS IDENTITY, - id_link INTEGER NOT NULL, - CONSTRAINT FK_Shop_Product_Currency_Region_Link_Audit_id_link - FOREIGN KEY (id_link) - REFERENCES Shop_Product_Currency_Region_Link(id_link) - ON UPDATE RESTRICT, - name_field VARCHAR(50), - value_prev VARCHAR(10), - value_new VARCHAR(10), - id_change_set INTEGER NOT NULL, - CONSTRAINT FK_Shop_Product_Currency_Region_Link_Audit_id_change_set - FOREIGN KEY (id_change_set) - REFERENCES Shop_Product_Change_Set(id_change_set) -); - --- Image Types - - - -SELECT CONCAT('WARNING: Table ', TABLE_NAME, ' already exists.') AS msg_warning FROM INFORMATION_SCHEMA.TABLES WHERE TABLE_NAME = 'Shop_Image_Type'; - -CREATE TABLE IF NOT EXISTS Shop_Image_Type ( - id_type INTEGER NOT NULL PRIMARY KEY GENERATED ALWAYS AS IDENTITY, - code VARCHAR(50), - name VARCHAR(255), - name_plural VARCHAR(256), - active BOOLEAN NOT NULL DEFAULT TRUE, - display_order INTEGER NOT NULL, - created_on TIMESTAMP, - created_by INT, - id_change_set INTEGER, - CONSTRAINT FK_Shop_Image_Type_id_change_set - FOREIGN KEY (id_change_set) - REFERENCES Shop_Product_Change_Set(id_change_set) -); - --- Image Type Audits - - - -SELECT CONCAT('WARNING: Table ', TABLE_NAME, ' already exists.') AS msg_warning FROM INFORMATION_SCHEMA.TABLES WHERE TABLE_NAME = 'Shop_Image_Type_Audit'; - -CREATE TABLE IF NOT EXISTS Shop_Image_Type_Audit ( - id_audit INTEGER NOT NULL PRIMARY KEY GENERATED ALWAYS AS IDENTITY, - id_type INTEGER NOT NULL, - CONSTRAINT FK_Shop_Image_Type_Audit_id_type - FOREIGN KEY (id_type) - REFERENCES Shop_Image_Type(id_type) - ON UPDATE RESTRICT, - name_field VARCHAR(50), - value_prev VARCHAR(256), - value_new VARCHAR(256), - id_change_set INTEGER NOT NULL, - CONSTRAINT FK_Shop_Image_Type_Audit_id_change_set - FOREIGN KEY (id_change_set) - REFERENCES Shop_Product_Change_Set(id_change_set) -); --- Images - - - -SELECT CONCAT('WARNING: Table ', TABLE_NAME, ' already exists.') AS msg_warning FROM INFORMATION_SCHEMA.TABLES WHERE TABLE_NAME = 'Shop_Image'; - -CREATE TABLE IF NOT EXISTS Shop_Image ( - id_image INTEGER NOT NULL PRIMARY KEY GENERATED ALWAYS AS IDENTITY, - id_type_image INTEGER NOT NULL, - CONSTRAINT FK_Shop_Image_id_type_image - FOREIGN KEY (id_type_image) - REFERENCES Shop_Image_Type(id_type), - id_type_file INTEGER NOT NULL, - CONSTRAINT FK_Shop_Image_id_type_file - FOREIGN KEY (id_type_file) - REFERENCES File_Type(id_type), - id_product INTEGER NULL, - CONSTRAINT FK_Shop_Image_id_product - FOREIGN KEY (id_product) - REFERENCES Shop_Product(id_product), - id_permutation INTEGER NULL, - CONSTRAINT FK_Shop_Image_id_permutation - FOREIGN KEY (id_permutation) - REFERENCES Shop_Product_Permutation(id_permutation), - url VARCHAR(255), - active BOOLEAN NOT NULL DEFAULT TRUE, - display_order INTEGER NOT NULL, - created_on TIMESTAMP, - created_by INT, - id_change_set INTEGER, - CONSTRAINT FK_Shop_Image_id_change_set - FOREIGN KEY (id_change_set) - REFERENCES Shop_Product_Change_Set(id_change_set) -); --- Image Type Audits - - - -SELECT CONCAT('WARNING: Table ', TABLE_NAME, ' already exists.') AS msg_warning FROM INFORMATION_SCHEMA.TABLES WHERE TABLE_NAME = 'Shop_Image_Audit'; - -CREATE TABLE IF NOT EXISTS Shop_Image_Audit ( - id_audit INTEGER NOT NULL PRIMARY KEY GENERATED ALWAYS AS IDENTITY, - id_image INTEGER NOT NULL, - CONSTRAINT FK_Shop_Image_Audit_id_image - FOREIGN KEY (id_image) - REFERENCES Shop_Image(id_image), - name_field VARCHAR(50), - value_prev VARCHAR(10), - value_new VARCHAR(10), - id_change_set INTEGER NOT NULL, - CONSTRAINT FK_Shop_Image_Audit_id_change_set - FOREIGN KEY (id_change_set) - REFERENCES Shop_Product_Change_Set(id_change_set) -); --- Delivery Options - - - -SELECT CONCAT('WARNING: Table ', TABLE_NAME, ' already exists.') AS msg_warning FROM INFORMATION_SCHEMA.TABLES WHERE TABLE_NAME = 'Shop_Delivery_Option'; - -CREATE TABLE IF NOT EXISTS Shop_Delivery_Option ( - id_option INTEGER NOT NULL PRIMARY KEY GENERATED ALWAYS AS IDENTITY, - code VARCHAR(50) NOT NULL, - name VARCHAR(100) NOT NULL, - description VARCHAR(4000), - latency_delivery_min INTEGER NOT NULL, - latency_delivery_max INTEGER NOT NULL, - quantity_min INTEGER NOT NULL, - quantity_max INTEGER NOT NULL, - active BOOLEAN NOT NULL DEFAULT TRUE, - display_order INTEGER NOT NULL, - created_on TIMESTAMP, - created_by INT, - id_change_set INTEGER, - CONSTRAINT FK_Shop_Delivery_Option_Type_id_change_set - FOREIGN KEY (id_change_set) - REFERENCES Shop_Product_Change_Set(id_change_set) -); - --- Delivery Option Audits - - - -SELECT CONCAT('WARNING: Table ', TABLE_NAME, ' already exists.') AS msg_warning FROM INFORMATION_SCHEMA.TABLES WHERE TABLE_NAME = 'Shop_Delivery_Option_Audit'; - -CREATE TABLE IF NOT EXISTS Shop_Delivery_Option_Audit ( - id_audit INTEGER NOT NULL PRIMARY KEY GENERATED ALWAYS AS IDENTITY, - id_option INTEGER NOT NULL, - CONSTRAINT FK_Shop_Delivery_Option_Audit_id_option - FOREIGN KEY (id_option) - REFERENCES Shop_Delivery_Option(id_option) - ON UPDATE RESTRICT, - name_field VARCHAR(50), - value_prev VARCHAR(4000), - value_new VARCHAR(4000), - id_change_set INTEGER NOT NULL, - CONSTRAINT FK_Shop_Delivery_Option_Audit_id_change_set - FOREIGN KEY (id_change_set) - REFERENCES Shop_Product_Change_Set(id_change_set) -); --- Delivery Option - - - -SELECT CONCAT('WARNING: Table ', TABLE_NAME, ' already exists.') AS msg_warning FROM INFORMATION_SCHEMA.TABLES WHERE TABLE_NAME = 'Shop_Product_Permutation_Delivery_Option_Link'; - -CREATE TABLE IF NOT EXISTS Shop_Product_Permutation_Delivery_Option_Link ( - id_link INTEGER NOT NULL PRIMARY KEY GENERATED ALWAYS AS IDENTITY, - id_product INTEGER NOT NULL, - CONSTRAINT FK_Shop_Product_Permutation_Delivery_Option_Link_id_product - FOREIGN KEY (id_product) - REFERENCES Shop_Product(id_product) - ON UPDATE RESTRICT, - id_permutation INTEGER, - CONSTRAINT FK_Shop_Product_Permutation_Delivery_Option_Link_id_permutation - FOREIGN KEY (id_permutation) - REFERENCES Shop_Product_Permutation(id_permutation) - ON UPDATE RESTRICT, - id_delivery_option INTEGER NOT NULL, - CONSTRAINT FK_Shop_Product_Permutation_Delivery_Option_Link_id_delivery_option - FOREIGN KEY (id_delivery_option) - REFERENCES Shop_Delivery_Option(id_option) - ON UPDATE RESTRICT, - id_region INTEGER NOT NULL, - CONSTRAINT FK_Shop_Product_Permutation_Delivery_Option_Link_id_region - FOREIGN KEY (id_region) - REFERENCES Shop_Region(id_region) - ON UPDATE RESTRICT, - id_currency INTEGER NOT NULL, - CONSTRAINT FK_Shop_Product_Permutation_Delivery_Option_Link_id_currency - FOREIGN KEY (id_currency) - REFERENCES Shop_Currency(id_currency) - ON UPDATE RESTRICT, - price_local REAL NOT NULL, - active BOOLEAN NOT NULL DEFAULT TRUE, - display_order INTEGER NOT NULL, - created_on TIMESTAMP, - created_by INT, - id_change_set INTEGER, - CONSTRAINT FK_Shop_Product_Permutation_Delivery_Option_Link_id_change_set - FOREIGN KEY (id_change_set) - REFERENCES Shop_Product_Change_Set(id_change_set) -); --- Delivery Option Audits - - - -SELECT CONCAT('WARNING: Table ', TABLE_NAME, ' already exists.') AS msg_warning FROM INFORMATION_SCHEMA.TABLES WHERE TABLE_NAME = 'Shop_Product_Permutation_Delivery_Option_Link_Audit'; - -CREATE TABLE IF NOT EXISTS Shop_Product_Permutation_Delivery_Option_Link_Audit ( - id_audit INTEGER NOT NULL PRIMARY KEY GENERATED ALWAYS AS IDENTITY, - id_link INTEGER NOT NULL, - CONSTRAINT FK_Shop_Product_Permutation_Delivery_Option_Link_Audit_id_link - FOREIGN KEY (id_link) - REFERENCES Shop_Product_Permutation_Delivery_Option_Link(id_link) - ON UPDATE RESTRICT, - name_field VARCHAR(64) NOT NULL, - value_prev VARCHAR(10), - value_new VARCHAR(10), - id_change_set INTEGER NOT NULL, - CONSTRAINT FK_Shop_Product_Permutation_Delivery_Option_Link_Audit_id_change_set - FOREIGN KEY (id_change_set) - REFERENCES Shop_Product_Change_Set(id_change_set) -); --- Discounts - - - -SELECT CONCAT('WARNING: Table ', TABLE_NAME, ' already exists.') AS msg_warning FROM INFORMATION_SCHEMA.TABLES WHERE TABLE_NAME = 'Shop_Discount'; - -CREATE TABLE Shop_Discount ( - id_discount INTEGER NOT NULL PRIMARY KEY GENERATED ALWAYS AS IDENTITY, - code VARCHAR(50) NOT NULL, - name VARCHAR(200) NOT NULL, - id_product INTEGER NOT NULL, - CONSTRAINT FK_Shop_Discount_id_product - FOREIGN KEY (id_product) - REFERENCES Shop_Product(id_product), - id_permutation INTEGER, - CONSTRAINT FK_Shop_Discount_id_permutation - FOREIGN KEY (id_permutation) - REFERENCES Shop_Product_Permutation(id_permutation) - ON UPDATE RESTRICT, - /* - id_delivery_region INTEGER, - CONSTRAINT FK_Shop_Discount_id_delivery_region - FOREIGN KEY (id_delivery_region) - REFERENCES Shop_Delivery_Region(id_region) - ON UPDATE RESTRICT, - id_currency INTEGER, - CONSTRAINT FK_Shop_Discount_id_currency - FOREIGN KEY (id_currency) - REFERENCES Shop_Currency(id_currency) - ON UPDATE RESTRICT, - */ - multiplier REAL NOT NULL DEFAULT 1 CHECK (multiplier > 0), - subtractor REAL NOT NULL DEFAULT 0, - apply_multiplier_first BOOLEAN NOT NULL DEFAULT TRUE, - quantity_min REAL NOT NULL DEFAULT 0, - quantity_max REAL NOT NULL, - date_start TIMESTAMP NOT NULL, - date_end TIMESTAMP NOT NULL, - active BOOLEAN NOT NULL DEFAULT TRUE, - display_order INTEGER NOT NULL, - created_on TIMESTAMP, - created_by INT, - id_change_set INTEGER, - CONSTRAINT FK_Shop_Discount_id_change_set - FOREIGN KEY (id_change_set) - REFERENCES Shop_Product_Change_Set(id_change_set) -); - --- Discount Audits - - - -SELECT CONCAT('WARNING: Table ', TABLE_NAME, ' already exists.') AS msg_warning FROM INFORMATION_SCHEMA.TABLES WHERE TABLE_NAME = 'Shop_Discount_Audit'; - -CREATE TABLE IF NOT EXISTS Shop_Discount_Audit ( - id_audit INTEGER NOT NULL PRIMARY KEY GENERATED ALWAYS AS IDENTITY, - id_discount INTEGER NOT NULL, - CONSTRAINT FK_Shop_Discount_Audit_id_discount - FOREIGN KEY (id_discount) - REFERENCES Shop_Discount(id_discount) - ON UPDATE RESTRICT, - name_field VARCHAR(50), - value_prev VARCHAR(200), - value_new VARCHAR(200), - id_change_set INTEGER NOT NULL, - CONSTRAINT FK_Shop_Discount_Audit_id_change_set - FOREIGN KEY (id_change_set) - REFERENCES Shop_Product_Change_Set(id_change_set) - ON UPDATE RESTRICT -); --- Discount Region Currency Link - - - -SELECT CONCAT('WARNING: Table ', TABLE_NAME, ' already exists.') AS msg_warning FROM INFORMATION_SCHEMA.TABLES WHERE TABLE_NAME = 'Shop_Discount_Region_Currency_Link'; - -CREATE TABLE IF NOT EXISTS Shop_Discount_Region_Currency_Link ( - id_link INTEGER NOT NULL PRIMARY KEY GENERATED ALWAYS AS IDENTITY, - id_discount INTEGER NOT NULL, - CONSTRAINT FK_Shop_Discount_Region_Currency_Link_id_discount - FOREIGN KEY (id_discount) - REFERENCES Shop_Discount(id_discount) - ON UPDATE RESTRICT, - id_region INTEGER NOT NULL, - CONSTRAINT FK_Shop_Discount_Region_Currency_Link_id_region - FOREIGN KEY (id_region) - REFERENCES Shop_Region(id_region) - ON UPDATE RESTRICT, - id_currency INTEGER NOT NULL, - CONSTRAINT FK_Shop_Discount_Region_Currency_Link_id_currency - FOREIGN KEY (id_currency) - REFERENCES Shop_Currency(id_currency) - ON UPDATE RESTRICT, - active BOOLEAN NOT NULL DEFAULT TRUE, - created_on TIMESTAMP, - created_by INT, - id_change_set INTEGER, - CONSTRAINT FK_Shop_Discount_Region_Currency_Link_id_change_set - FOREIGN KEY (id_change_set) - REFERENCES Shop_Product_Change_Set(id_change_set) -); --- Discount Region Currency Link Audits - - - -SELECT CONCAT('WARNING: Table ', TABLE_NAME, ' already exists.') AS msg_warning FROM INFORMATION_SCHEMA.TABLES WHERE TABLE_NAME = 'Shop_Discount_Region_Currency_Link_Audit'; - -CREATE TABLE IF NOT EXISTS Shop_Discount_Region_Currency_Link_Audit ( - id_audit INTEGER NOT NULL PRIMARY KEY GENERATED ALWAYS AS IDENTITY, - id_link INTEGER NOT NULL, - CONSTRAINT FK_Shop_Discount_Region_Currency_Link_Audit_id_link - FOREIGN KEY (id_link) - REFERENCES Shop_Discount_Region_Currency_Link(id_link) - ON UPDATE RESTRICT, - name_field VARCHAR(50), - value_prev VARCHAR(10), - value_new VARCHAR(10), - id_change_set INTEGER NOT NULL, - CONSTRAINT FK_Shop_Discount_Region_Currency_Link_Audit_id_change_set - FOREIGN KEY (id_change_set) - REFERENCES Shop_Product_Change_Set(id_change_set) - ON UPDATE RESTRICT -); --- Permission Groups - - - -SELECT CONCAT('WARNING: Table ', TABLE_NAME, ' already exists.') AS msg_warning FROM INFORMATION_SCHEMA.TABLES WHERE TABLE_NAME = 'Shop_Permission_Group'; - -CREATE TABLE IF NOT EXISTS Shop_Permission_Group ( - id_group INTEGER NOT NULL PRIMARY KEY GENERATED ALWAYS AS IDENTITY, - code VARCHAR(50), - name VARCHAR(255), - active BOOLEAN NOT NULL DEFAULT TRUE, - display_order INTEGER NOT NULL, - created_on TIMESTAMP, - created_by INT, - id_change_set INTEGER, - CONSTRAINT FK_Shop_Permission_Group_id_change_set - FOREIGN KEY (id_change_set) - REFERENCES Shop_User_Change_Set(id_change_set) - ON UPDATE RESTRICT -); --- Permission Group Audits - - - -SELECT CONCAT('WARNING: Table ', TABLE_NAME, ' already exists.') AS msg_warning FROM INFORMATION_SCHEMA.TABLES WHERE TABLE_NAME = 'Shop_Permission_Group_Audit'; - -CREATE TABLE IF NOT EXISTS Shop_Permission_Group_Audit ( - id_audit INTEGER NOT NULL PRIMARY KEY GENERATED ALWAYS AS IDENTITY, - id_group INTEGER NOT NULL, - CONSTRAINT FK_Shop_Permission_Group_Audit_id_group - FOREIGN KEY (id_group) - REFERENCES Shop_Permission_Group(id_group) - ON UPDATE RESTRICT, - name_field VARCHAR(50), - value_prev VARCHAR(255), - value_new VARCHAR(255), - id_change_set INTEGER NOT NULL, - CONSTRAINT FK_Shop_Permission_Group_Audit_id_change_set - FOREIGN KEY (id_change_set) - REFERENCES Shop_User_Change_Set(id_change_set) - ON UPDATE RESTRICT -); --- Permissions - - - -SELECT CONCAT('WARNING: Table ', TABLE_NAME, ' already exists.') AS msg_warning FROM INFORMATION_SCHEMA.TABLES WHERE TABLE_NAME = 'Shop_Permission'; - -CREATE TABLE IF NOT EXISTS Shop_Permission ( - id_permission INTEGER NOT NULL PRIMARY KEY GENERATED ALWAYS AS IDENTITY, - code VARCHAR(50), - name VARCHAR(255), - id_permission_group INTEGER NOT NULL, - CONSTRAINT FK_Shop_Permission_id_permission_group - FOREIGN KEY (id_permission_group) - REFERENCES Shop_Permission_Group(id_group) - ON UPDATE RESTRICT, - id_access_level_required INTEGER NOT NULL, - CONSTRAINT FK_Shop_Permission_id_access_level_required - FOREIGN KEY (id_access_level_required) - REFERENCES Shop_Access_Level(id_access_level), - active BOOLEAN NOT NULL DEFAULT TRUE, - display_order INTEGER NOT NULL, - created_on TIMESTAMP, - created_by INT, - id_change_set INTEGER, - CONSTRAINT FK_Shop_Permission_id_change_set - FOREIGN KEY (id_change_set) - REFERENCES Shop_User_Change_Set(id_change_set) -); --- Permission Audits - - - -SELECT CONCAT('WARNING: Table ', TABLE_NAME, ' already exists.') AS msg_warning FROM INFORMATION_SCHEMA.TABLES WHERE TABLE_NAME = 'Shop_Permission_Audit'; - -CREATE TABLE IF NOT EXISTS Shop_Permission_Audit ( - id_audit INTEGER NOT NULL PRIMARY KEY GENERATED ALWAYS AS IDENTITY, - id_permission INTEGER NOT NULL, - CONSTRAINT FK_Shop_Permission_Audit_id_permission - FOREIGN KEY (id_permission) - REFERENCES Shop_Permission(id_permission) - ON UPDATE RESTRICT, - name_field VARCHAR(50), - value_prev VARCHAR(255), - value_new VARCHAR(255), - id_change_set INTEGER NOT NULL, - CONSTRAINT FK_Shop_Permission_Audit_id_change_set - FOREIGN KEY (id_change_set) - REFERENCES Shop_User_Change_Set(id_change_set) - ON UPDATE RESTRICT -); --- Roles - - - -SELECT CONCAT('WARNING: Table ', TABLE_NAME, ' already exists.') AS msg_warning FROM INFORMATION_SCHEMA.TABLES WHERE TABLE_NAME = 'Shop_Role'; - -CREATE TABLE IF NOT EXISTS Shop_Role ( - id_role INTEGER NOT NULL PRIMARY KEY GENERATED ALWAYS AS IDENTITY, - code VARCHAR(50), - name VARCHAR(255), - active BOOLEAN NOT NULL DEFAULT TRUE, - display_order INTEGER NOT NULL, - created_on TIMESTAMP, - created_by INT, - id_change_set INTEGER, - CONSTRAINT FK_Shop_Role_id_change_set - FOREIGN KEY (id_change_set) - REFERENCES Shop_User_Change_Set(id_change_set) -); --- Role Audits - - - -SELECT CONCAT('WARNING: Table ', TABLE_NAME, ' already exists.') AS msg_warning FROM INFORMATION_SCHEMA.TABLES WHERE TABLE_NAME = 'Shop_Role_Audit'; - -CREATE TABLE Shop_Role_Audit ( - id_audit INTEGER NOT NULL PRIMARY KEY GENERATED ALWAYS AS IDENTITY, - id_role INTEGER NOT NULL, - CONSTRAINT FK_Shop_Role_Audit_id_role - FOREIGN KEY (id_role) - REFERENCES Shop_Role(id_role) - ON UPDATE RESTRICT, - name_field VARCHAR(50), - value_prev VARCHAR(255), - value_new VARCHAR(255), - id_change_set INTEGER NOT NULL, - CONSTRAINT FK_Shop_Role_Audit_id_change_set - FOREIGN KEY (id_change_set) - REFERENCES Shop_User_Change_Set(id_change_set) - ON UPDATE RESTRICT -); --- Role Permission link - - - -SELECT CONCAT('WARNING: Table ', TABLE_NAME, ' already exists.') AS msg_warning FROM INFORMATION_SCHEMA.TABLES WHERE TABLE_NAME = 'Shop_Role_Permission_Link'; - -CREATE TABLE IF NOT EXISTS Shop_Role_Permission_Link ( - id_link INTEGER NOT NULL PRIMARY KEY GENERATED ALWAYS AS IDENTITY, - id_role INTEGER, - CONSTRAINT FK_Shop_Role_Permission_Link_id_role - FOREIGN KEY (id_role) - REFERENCES Shop_Role(id_role) - ON UPDATE RESTRICT, - id_permission INTEGER, - CONSTRAINT FK_Shop_Role_Permission_Link_id_permission - FOREIGN KEY (id_permission) - REFERENCES Shop_Permission(id_permission) - ON UPDATE RESTRICT, - id_access_level INTEGER, - CONSTRAINT FK_Shop_Role_Permission_Link_id_access_level - FOREIGN KEY (id_access_level) - REFERENCES Shop_Access_Level(id_access_level), - active BOOLEAN NOT NULL DEFAULT TRUE, - created_on TIMESTAMP, - created_by INT, - id_change_set INTEGER, - CONSTRAINT FK_Shop_Role_Permission_Link_id_change_set - FOREIGN KEY (id_change_set) - REFERENCES Shop_User_Change_Set(id_change_set) -); --- Role Permission link Audits - - - -SELECT CONCAT('WARNING: Table ', TABLE_NAME, ' already exists.') AS msg_warning FROM INFORMATION_SCHEMA.TABLES WHERE TABLE_NAME = 'Shop_Role_Permission_Link_Audit'; - -CREATE TABLE IF NOT EXISTS Shop_Role_Permission_Link_Audit ( - id_audit INTEGER NOT NULL PRIMARY KEY GENERATED ALWAYS AS IDENTITY, - id_link INTEGER NOT NULL, - CONSTRAINT FK_Shop_Role_Permission_Link_Audit_id_link - FOREIGN KEY (id_link) - REFERENCES Shop_Role_Permission_Link(id_link) - ON UPDATE RESTRICT, - name_field VARCHAR(50), - value_prev VARCHAR(10), - value_new VARCHAR(10), - id_change_set INTEGER NOT NULL, - CONSTRAINT FK_Shop_Role_Permission_Link_Audit_id_change_set - FOREIGN KEY (id_change_set) - REFERENCES Shop_User_Change_Set(id_change_set) -); --- Users - - - -SELECT CONCAT('WARNING: Table ', TABLE_NAME, ' already exists.') AS msg_warning FROM INFORMATION_SCHEMA.TABLES WHERE TABLE_NAME = 'Shop_User'; - -CREATE TABLE IF NOT EXISTS Shop_User ( - id_user INTEGER NOT NULL PRIMARY KEY GENERATED ALWAYS AS IDENTITY, - id_user_oauth VARCHAR(200) NOT NULL, - name VARCHAR(255) NOT NULL, - email VARCHAR(254) NOT NULL, - is_email_verified BOOLEAN NOT NULL DEFAULT FALSE, - is_super_user BOOLEAN NOT NULL DEFAULT FALSE, - active BOOLEAN NOT NULL DEFAULT TRUE, - created_on TIMESTAMP, - created_by INT, - id_change_set INTEGER, - CONSTRAINT FK_Shop_User_id_change_set - FOREIGN KEY (id_change_set) - REFERENCES Shop_User_Change_Set(id_change_set) -); - --- User Audits - - - -SELECT CONCAT('WARNING: Table ', TABLE_NAME, ' already exists.') AS msg_warning FROM INFORMATION_SCHEMA.TABLES WHERE TABLE_NAME = 'Shop_User_Audit'; - -CREATE TABLE IF NOT EXISTS Shop_User_Audit ( - id_audit INTEGER NOT NULL PRIMARY KEY GENERATED ALWAYS AS IDENTITY, - id_user INTEGER, - CONSTRAINT FK_Shop_User_Audit_id_user - FOREIGN KEY (id_user) - REFERENCES Shop_User(id_user) - ON UPDATE RESTRICT, - name_field VARCHAR(50), - value_prev VARCHAR(255), - value_new VARCHAR(255), - id_change_set INTEGER NOT NULL, - CONSTRAINT FK_Shop_User_Audit_id_change_set - FOREIGN KEY (id_change_set) - REFERENCES Shop_User_Change_Set(id_change_set) - ON UPDATE RESTRICT -); --- User Role link - - - -SELECT CONCAT('WARNING: Table ', TABLE_NAME, ' already exists.') AS msg_warning FROM INFORMATION_SCHEMA.TABLES WHERE TABLE_NAME = 'Shop_User_Role_Link'; - -CREATE TABLE IF NOT EXISTS Shop_User_Role_Link ( - id_link INTEGER NOT NULL PRIMARY KEY GENERATED ALWAYS AS IDENTITY, - id_user INTEGER, - CONSTRAINT FK_Shop_User_Role_Link_id_user - FOREIGN KEY (id_user) - REFERENCES Shop_User(id_user) - ON UPDATE RESTRICT, - id_role INTEGER NOT NULL, - CONSTRAINT FK_Shop_User_Role_Link_id_role - FOREIGN KEY (id_role) - REFERENCES Shop_Role(id_role), - active BOOLEAN NOT NULL DEFAULT TRUE, - created_on TIMESTAMP, - created_by INT, - id_change_set INTEGER, - CONSTRAINT FK_Shop_User_Role_Link_id_change_set - FOREIGN KEY (id_change_set) - REFERENCES Shop_User_Change_Set(id_change_set) -); --- User Role Link Audits - - - -SELECT CONCAT('WARNING: Table ', TABLE_NAME, ' already exists.') AS msg_warning FROM INFORMATION_SCHEMA.TABLES WHERE TABLE_NAME = 'Shop_User_Role_Link_Audit'; - -CREATE TABLE IF NOT EXISTS Shop_User_Role_Link_Audit ( - id_audit INTEGER NOT NULL PRIMARY KEY GENERATED ALWAYS AS IDENTITY, - id_link INTEGER NOT NULL, - CONSTRAINT FK_Shop_User_Role_Link_Audit_id_link - FOREIGN KEY (id_link) - REFERENCES Shop_User_Role_Link(id_link) - ON UPDATE RESTRICT, - name_field VARCHAR(50), - value_prev VARCHAR(200), - value_new VARCHAR(200), - id_change_set INTEGER NOT NULL, - CONSTRAINT FK_Shop_User_Role_Link_Audit_id_change_set - FOREIGN KEY (id_change_set) - REFERENCES Shop_User_Change_Set(id_change_set) -); - --- Addresses - - - -SELECT CONCAT('WARNING: Table ', TABLE_NAME, ' already exists.') AS msg_warning FROM INFORMATION_SCHEMA.TABLES WHERE TABLE_NAME = 'Shop_Address'; - -CREATE TABLE Shop_Address ( - id_address INTEGER NOT NULL PRIMARY KEY GENERATED ALWAYS AS IDENTITY, - /* - a_id_user INTEGER, - CONSTRAINT FK_Shop_Address_id_user - FOREIGN KEY (id_user) - REFERENCES Shop_User(id_user) - ON UPDATE RESTRICT, - */ - -- region VARCHAR(100) NOT NULL, - id_region INTEGER NOT NULL, - name_full VARCHAR(255) NOT NULL, - phone_number VARCHAR(20) NOT NULL, - postcode VARCHAR(20) NOT NULL, - address_line_1 VARCHAR(100) NOT NULL, - address_line_2 VARCHAR(100) NOT NULL, - city VARCHAR(50) NOT NULL, - county VARCHAR(100) NOT NULL, - active BOOLEAN NOT NULL DEFAULT TRUE, - created_on TIMESTAMP, - created_by INT, - id_change_set INTEGER, - CONSTRAINT FK_Shop_Address_id_change_set - FOREIGN KEY (id_change_set) - REFERENCES Shop_User_Change_Set(id_change_set) -); --- Address Audits - - - -SELECT CONCAT('WARNING: Table ', TABLE_NAME, ' already exists.') AS msg_warning FROM INFORMATION_SCHEMA.TABLES WHERE TABLE_NAME = 'Shop_Address_Audit'; - -CREATE TABLE IF NOT EXISTS Shop_Address_Audit ( - id_audit INTEGER NOT NULL PRIMARY KEY GENERATED ALWAYS AS IDENTITY, - id_address INTEGER NOT NULL, - CONSTRAINT FK_Shop_Address_Audit_id_address - FOREIGN KEY (id_address) - REFERENCES Shop_Address(id_address) - ON UPDATE RESTRICT, - name_field VARCHAR(50), - value_prev VARCHAR(255), - value_new VARCHAR(255), - id_change_set INTEGER NOT NULL, - CONSTRAINT FK_Shop_Address_Audit_id_change_set - FOREIGN KEY (id_change_set) - REFERENCES Shop_User_Change_Set(id_change_set) - ON UPDATE RESTRICT -); --- User Basket (Product Link) - - - -SELECT CONCAT('WARNING: Table ', TABLE_NAME, ' already exists.') AS msg_warning FROM INFORMATION_SCHEMA.TABLES WHERE TABLE_NAME = 'Shop_User_Basket'; - -CREATE TABLE IF NOT EXISTS Shop_User_Basket ( - id_item INTEGER NOT NULL PRIMARY KEY GENERATED ALWAYS AS IDENTITY, - id_user INTEGER, - CONSTRAINT FK_Shop_User_Basket_id_user - FOREIGN KEY (id_user) - REFERENCES Shop_User(id_user) - ON UPDATE RESTRICT, - id_product INTEGER NOT NULL, - CONSTRAINT FK_Shop_User_Basket_id_product - FOREIGN KEY (id_product) - REFERENCES Shop_Product(id_product) - ON UPDATE RESTRICT, - id_permutation INTEGER, - CONSTRAINT FK_Shop_User_Basket_id_permutation - FOREIGN KEY (id_permutation) - REFERENCES Shop_Product_Permutation(id_permutation) - ON UPDATE RESTRICT, - quantity INTEGER NOT NULL, - active BOOLEAN NOT NULL DEFAULT TRUE, - created_on TIMESTAMP, - created_by INT, - id_change_set_user INTEGER, - CONSTRAINT FK_Shop_User_Basket_id_change_set_user - FOREIGN KEY (id_change_set_user) - REFERENCES Shop_User_Change_Set(id_change_set) - /* - id_change_set_product INTEGER, - CONSTRAINT FK_Shop_User_Basket_id_change_set_product - FOREIGN KEY (id_change_set_product) - REFERENCES Shop_Product_Change_Set(id_change_set) - */ -); - --- Product Basket Audits - - -SELECT CONCAT('WARNING: Table ', TABLE_NAME, ' already exists.') AS msg_warning FROM INFORMATION_SCHEMA.TABLES WHERE TABLE_NAME = 'Shop_User_Basket_Audit'; - -CREATE TABLE IF NOT EXISTS Shop_User_Basket_Audit ( - id_audit INTEGER NOT NULL PRIMARY KEY GENERATED ALWAYS AS IDENTITY, - id_item INTEGER NOT NULL, - CONSTRAINT FK_Shop_User_Basket_Audit_id_link - FOREIGN KEY (id_item) - REFERENCES Shop_User_Basket(id_item) - ON UPDATE RESTRICT, - name_field VARCHAR(50), - value_prev VARCHAR(200), - value_new VARCHAR(200), - id_change_set_user INTEGER, - CONSTRAINT FK_Shop_User_Basket_Audit_id_change_set_user - FOREIGN KEY (id_change_set_user) - REFERENCES Shop_User_Change_Set(id_change_set) - /* - id_change_set_product INTEGER, - CONSTRAINT FK_Shop_User_Basket_Audit_id_change_set_product - FOREIGN KEY (id_change_set_product) - REFERENCES Shop_Product_Change_Set(id_change_set) - */ -); - --- User Order Types - - - -SELECT CONCAT('WARNING: Table ', TABLE_NAME, ' already exists.') AS msg_warning FROM INFORMATION_SCHEMA.TABLES WHERE TABLE_NAME = 'Shop_User_Order_Status'; - -CREATE TABLE IF NOT EXISTS Shop_User_Order_Status ( - id_status INTEGER NOT NULL PRIMARY KEY GENERATED ALWAYS AS IDENTITY, - code VARCHAR(50), - name VARCHAR(255), - name_plural VARCHAR(256), - active BOOLEAN NOT NULL DEFAULT TRUE, - display_order INTEGER NOT NULL, - created_on TIMESTAMP, - created_by INT, - id_change_set INTEGER, - CONSTRAINT FK_Shop_User_Order_Status_id_change_set - FOREIGN KEY (id_change_set) - REFERENCES Shop_User_Change_Set(id_change_set) -); - --- Order Type Audits - - - -SELECT CONCAT('WARNING: Table ', TABLE_NAME, ' already exists.') AS msg_warning FROM INFORMATION_SCHEMA.TABLES WHERE TABLE_NAME = 'Shop_User_Order_Status_Audit'; - -CREATE TABLE IF NOT EXISTS Shop_User_Order_Status_Audit ( - id_audit INTEGER NOT NULL PRIMARY KEY GENERATED ALWAYS AS IDENTITY, - id_status INTEGER NOT NULL, - CONSTRAINT FK_Shop_User_Order_Status_Audit_id_status - FOREIGN KEY (id_status) - REFERENCES Shop_User_Order_Status(id_status) - ON UPDATE RESTRICT, - name_field VARCHAR(50), - value_prev VARCHAR(256), - value_new VARCHAR(256), - id_change_set INTEGER NOT NULL, - CONSTRAINT FK_Shop_User_Order_Status_Audit_id_change_set - FOREIGN KEY (id_change_set) - REFERENCES Shop_Product_Change_Set(id_change_set) -); --- Supplier - - - -SELECT CONCAT('WARNING: Table ', TABLE_NAME, ' already exists.') AS msg_warning FROM INFORMATION_SCHEMA.TABLES WHERE TABLE_NAME = 'Shop_Supplier'; - -CREATE TABLE IF NOT EXISTS Shop_Supplier ( - id_supplier INTEGER NOT NULL PRIMARY KEY GENERATED ALWAYS AS IDENTITY, - name_company VARCHAR(255) NOT NULL, - name_contact VARCHAR(255) NULL, - department_contact VARCHAR(255) NULL, - id_address INTEGER NOT NULL, - CONSTRAINT FK_Shop_Supplier_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 INTEGER NOT NULL, - CONSTRAINT FK_Shop_Supplier_id_currency - FOREIGN KEY (id_currency) - REFERENCES Shop_Currency(id_currency), - active BOOLEAN NOT NULL DEFAULT TRUE, - created_on TIMESTAMP, - created_by INT, - id_change_set INTEGER, - CONSTRAINT FK_Shop_Supplier_id_change_set - FOREIGN KEY (id_change_set) - REFERENCES Shop_User_Change_Set(id_change_set) -); - --- Supplier Audits - - - -SELECT CONCAT('WARNING: Table ', TABLE_NAME, ' already exists.') AS msg_warning FROM INFORMATION_SCHEMA.TABLES WHERE TABLE_NAME = 'Shop_Supplier_Audit'; - -CREATE TABLE IF NOT EXISTS Shop_Supplier_Audit ( - id_audit INTEGER NOT NULL PRIMARY KEY GENERATED ALWAYS AS IDENTITY, - id_supplier INTEGER NOT NULL, - CONSTRAINT FK_Shop_Supplier_Audit_id_supplier - FOREIGN KEY (id_supplier) - REFERENCES Shop_Supplier(id_supplier) - ON UPDATE RESTRICT, - name_field VARCHAR(50), - value_prev VARCHAR(255), - value_new VARCHAR(255), - id_change_set INTEGER NOT NULL, - CONSTRAINT FK_Shop_Supplier_Audit_id_change_set - FOREIGN KEY (id_change_set) - REFERENCES Shop_User_Change_Set(id_change_set) -); - --- Unit of Measurement - - - -SELECT CONCAT('WARNING: Table ', TABLE_NAME, ' already exists.') AS msg_warning FROM INFORMATION_SCHEMA.TABLES WHERE TABLE_NAME = 'Shop_Unit_Measurement'; - -CREATE TABLE IF NOT EXISTS Shop_Unit_Measurement ( - id_unit_measurement INTEGER NOT NULL PRIMARY KEY GENERATED ALWAYS AS IDENTITY, - name_singular VARCHAR(255) NOT NULL, - name_plural VARCHAR(256) NOT NULL, - symbol VARCHAR(50) NOT NULL, - is_base_unit BOOLEAN NOT NULL DEFAULT FALSE, - - active BOOLEAN NOT NULL DEFAULT TRUE, - created_on TIMESTAMP, - created_by INT, - id_change_set INTEGER, - CONSTRAINT FK_Shop_Unit_Measurement_id_change_set - FOREIGN KEY (id_change_set) - REFERENCES Shop_Product_Change_Set(id_change_set) -); - --- Unit of Measurement Audits - - - -SELECT CONCAT('WARNING: Table ', TABLE_NAME, ' already exists.') AS msg_warning FROM INFORMATION_SCHEMA.TABLES WHERE TABLE_NAME = 'Shop_Unit_Measurement_Audit'; - -CREATE TABLE IF NOT EXISTS Shop_Unit_Measurement_Audit ( - id_audit INTEGER NOT NULL PRIMARY KEY GENERATED ALWAYS AS IDENTITY, - id_unit_measurement INTEGER NOT NULL, - CONSTRAINT FK_Shop_Unit_Measurement_Audit_id_unit_measurement - FOREIGN KEY (id_unit_measurement) - REFERENCES Shop_Unit_Measurement(id_unit_measurement) - ON UPDATE RESTRICT, - name_field VARCHAR(50), - value_prev VARCHAR(256), - value_new VARCHAR(256), - id_change_set INTEGER NOT NULL, - CONSTRAINT FK_Shop_Unit_Measurement_Audit_id_change_set - FOREIGN KEY (id_change_set) - REFERENCES Shop_Product_Change_Set(id_change_set) -); - --- Unit of Measurement Conversion - - - -SELECT CONCAT('WARNING: Table ', TABLE_NAME, ' already exists.') AS msg_warning FROM INFORMATION_SCHEMA.TABLES WHERE TABLE_NAME = 'Shop_Unit_Measurement_Conversion'; - -CREATE TABLE IF NOT EXISTS Shop_Unit_Measurement_Conversion ( - id_conversion INTEGER NOT NULL PRIMARY KEY, - id_unit_derived INTEGER NOT NULL, - id_unit_base INTEGER NOT NULL, - power_unit_base REAL NOT NULL, - multiplier_unit_base REAL NOT NULL, - increment_unit_base REAL NOT NULL, - active BOOLEAN NOT NULL DEFAULT TRUE, - created_on TIMESTAMP, - created_by INT, - id_change_set INTEGER, - CONSTRAINT FK_Shop_Unit_Measurement_Conversion_id_change_set - FOREIGN KEY (id_change_set) - REFERENCES Shop_Product_Change_Set(id_change_set) -); - --- Unit of Measurement Conversion Audits - - - -SELECT CONCAT('WARNING: Table ', TABLE_NAME, ' already exists.') AS msg_warning FROM INFORMATION_SCHEMA.TABLES WHERE TABLE_NAME = 'Shop_Unit_Measurement_Conversion_Audit'; - -CREATE TABLE IF NOT EXISTS Shop_Unit_Measurement_Conversion_Audit ( - id_audit INTEGER NOT NULL PRIMARY KEY GENERATED ALWAYS AS IDENTITY, - id_conversion INTEGER NOT NULL, - CONSTRAINT FK_Shop_Unit_Measurement_Conversion_Audit_id_conversion - FOREIGN KEY (id_conversion) - REFERENCES Shop_Unit_Measurement_Conversion(id_conversion) - ON UPDATE RESTRICT, - name_field VARCHAR(50), - value_prev VARCHAR(100), - value_new VARCHAR(100), - id_change_set INTEGER NOT NULL, - CONSTRAINT FK_Shop_Unit_Measurement_Conversion_Audit_id_change_set - FOREIGN KEY (id_change_set) - REFERENCES Shop_Product_Change_Set(id_change_set) -); - --- Supplier Purchase Order - - - -SELECT CONCAT('WARNING: Table ', TABLE_NAME, ' already exists.') AS msg_warning FROM INFORMATION_SCHEMA.TABLES WHERE TABLE_NAME = 'Shop_Supplier_Purchase_Order'; - -CREATE TABLE IF NOT EXISTS Shop_Supplier_Purchase_Order ( - id_order INTEGER NOT NULL PRIMARY KEY GENERATED ALWAYS AS IDENTITY, - id_supplier_ordered INTEGER NOT NULL, - CONSTRAINT FK_Shop_Supplier_Purchase_Order_id_supplier_ordered - FOREIGN KEY (id_supplier_ordered) - REFERENCES Shop_Supplier(id_supplier), - /* - id_supplier_fulfilled INTEGER NOT NULL, - CONSTRAINT FK_Shop_Supplier_Purchase_Order_id_supplier_fulfilled - FOREIGN KEY (id_supplier_fulfilled) - REFERENCES Shop_Supplier(id_supplier), - */ - cost_total_local REAL NOT NULL, - id_currency_cost INTEGER NOT NULL, - /* - latency_delivery INTEGER NOT NULL, - quantity_ordered REAL NOT NULL, - id_unit_quantity INTEGER NOT NULL, - CONSTRAINT FK_Shop_Supplier_Purchase_Order_id_unit_quantity - FOREIGN KEY (id_unit_quantity) - REFERENCES Shop_Unit_Measurement(id_unit), - -- quantity_received INTEGER NULL, - display_order INTEGER NOT NULL, - */ - active BOOLEAN NOT NULL DEFAULT TRUE, - created_on TIMESTAMP, - created_by INT, - updated_last_on TIMESTAMP NULL, - created_last_by VARCHAR(100) NULL, - id_change_set INTEGER NULL, - CONSTRAINT FK_Shop_Supplier_Purchase_Order_id_change_set - FOREIGN KEY (id_change_set) - REFERENCES Shop_Sales_And_Purchasing_Change_Set(id_change_set) -); - --- Supplier Purchase Order Audits - - - -SELECT CONCAT('WARNING: Table ', TABLE_NAME, ' already exists.') AS msg_warning FROM INFORMATION_SCHEMA.TABLES WHERE TABLE_NAME = 'Shop_Supplier_Purchase_Order_Audit'; - -CREATE TABLE IF NOT EXISTS Shop_Supplier_Purchase_Order_Audit ( - id_audit INTEGER NOT NULL PRIMARY KEY GENERATED ALWAYS AS IDENTITY, - id_order INTEGER NOT NULL, - CONSTRAINT FK_Shop_Supplier_Purchase_Order_Audit_id_order - FOREIGN KEY (id_order) - REFERENCES Shop_Supplier_Purchase_Order(id_order) - ON UPDATE RESTRICT, - name_field VARCHAR(50), - value_prev VARCHAR(10), - value_new VARCHAR(10), - id_change_set INTEGER NOT NULL, - CONSTRAINT FK_Shop_Supplier_Purchase_Order_Audit_id_change_set - FOREIGN KEY (id_change_set) - REFERENCES Shop_Sales_And_Purchasing_Change_Set(id_change_set) -); - --- Supplier Purchase Order Product Link - - - -SELECT CONCAT('WARNING: Table ', TABLE_NAME, ' already exists.') AS msg_warning FROM INFORMATION_SCHEMA.TABLES WHERE TABLE_NAME = 'Shop_Supplier_Purchase_Order_Product_Link'; - -CREATE TABLE IF NOT EXISTS Shop_Supplier_Purchase_Order_Product_Link ( - id_link INTEGER NOT NULL PRIMARY KEY GENERATED ALWAYS AS IDENTITY, - id_order INTEGER NOT NULL, - CONSTRAINT FK_Shop_Supplier_Purchase_Order_Product_Link_id_order - FOREIGN KEY (id_order) - REFERENCES Shop_Supplier_Purchase_Order(id_order), - id_permutation INTEGER NOT NULL, - CONSTRAINT FK_Shop_Supplier_Purchase_Order_Product_Link_id_permutation - FOREIGN KEY (id_permutation) - REFERENCES Shop_Product_Permutation(id_permutation), - cost_total_local REAL NOT NULL, - id_currency_cost INTEGER NOT NULL, - quantity_ordered REAL NOT NULL, - id_unit_quantity INTEGER NOT NULL, - CONSTRAINT FK_Shop_Supplier_Purchase_Order_Product_Link_id_unit_quantity - FOREIGN KEY (id_unit_quantity) - REFERENCES Shop_Unit_Measurement(id_unit_measurement), - quantity_received REAL NULL, - latency_delivery_days INTEGER NOT NULL, - display_order INTEGER NOT NULL, - active BOOLEAN NOT NULL, - created_on TIMESTAMP, - created_by INT, - updated_last_on TIMESTAMP NULL, - created_last_by VARCHAR(100) NULL, - id_change_set INTEGER NULL, - CONSTRAINT FK_Shop_Supplier_Purchase_Order_Product_Link_id_change_set - FOREIGN KEY (id_change_set) - REFERENCES Shop_Sales_And_Purchasing_Change_Set(id_change_set) -); - --- Supplier Purchase Order Product Link Audits - - - -SELECT CONCAT('WARNING: Table ', TABLE_NAME, ' already exists.') AS msg_warning FROM INFORMATION_SCHEMA.TABLES WHERE TABLE_NAME = 'Shop_Supplier_Purchase_Order_Product_Link_Audit'; - -CREATE TABLE IF NOT EXISTS Shop_Supplier_Purchase_Order_Product_Link_Audit ( - id_audit INTEGER NOT NULL PRIMARY KEY GENERATED ALWAYS AS IDENTITY, - id_link INTEGER NOT NULL, - CONSTRAINT FK_Supplier_Purch_Order_Product_Link_Audit_id_link - FOREIGN KEY (id_link) - REFERENCES Shop_Supplier_Purchase_Order_Product_Link(id_link) - ON UPDATE RESTRICT, - name_field VARCHAR(50), - value_prev VARCHAR(10), - value_new VARCHAR(10), - id_change_set INTEGER NOT NULL, - CONSTRAINT FK_Supplier_Purch_Order_Product_Link_Audit_id_change_set - FOREIGN KEY (id_change_set) - REFERENCES Shop_Sales_And_Purchasing_Change_Set(id_change_set) -); - --- Supplier Purchase Order Product Link Temp - - - --- drop table Shop_Supplier_Purchase_Order_Product_Link_Temp; - -SELECT CONCAT('WARNING: Table ', TABLE_NAME, ' already exists.') AS msg_warning FROM INFORMATION_SCHEMA.TABLES WHERE TABLE_NAME = 'Shop_Supplier_Purchase_Order_Product_Link_Temp'; - -CREATE TABLE IF NOT EXISTS Shop_Supplier_Purchase_Order_Product_Link_Temp ( - id_link INTEGER NOT NULL PRIMARY KEY, - GUID UUID NOT NULL, - id_order INTEGER NOT NULL, - /* - CONSTRAINT FK_Supplier_Purchase_Order_Product_Link_Temp_id_order - FOREIGN KEY (id_order) - REFERENCES Shop_Supplier_Purchase_Order(id_order), - */ - id_permutation INTEGER NOT NULL, - CONSTRAINT FK_Supplier_Purchase_Order_Product_Link_Temp_id_permutation - FOREIGN KEY (id_permutation) - REFERENCES Shop_Product_Permutation(id_permutation), - cost_total_local REAL NOT NULL, - id_currency_cost INTEGER NOT NULL, - quantity_ordered REAL NOT NULL, - id_unit_quantity INTEGER NOT NULL, - CONSTRAINT FK_Supplier_Purchase_Order_Product_Link_Temp_id_unit_quantity - FOREIGN KEY (id_unit_quantity) - REFERENCES Shop_Unit_Measurement(id_unit_measurement), - quantity_received REAL NULL, - latency_delivery_days INTEGER NOT NULL, - display_order INTEGER NOT NULL, - active BOOLEAN NOT NULL -); - - --- Manufacturing Purchase Order - - - -SELECT CONCAT('WARNING: Table ', TABLE_NAME, ' already exists.') AS msg_warning FROM INFORMATION_SCHEMA.TABLES WHERE TABLE_NAME = 'Shop_Manufacturing_Purchase_Order'; - -CREATE TABLE IF NOT EXISTS Shop_Manufacturing_Purchase_Order ( - id_order INTEGER NOT NULL PRIMARY KEY GENERATED ALWAYS AS IDENTITY, - cost_total_local REAL NOT NULL, - id_currency_cost INTEGER NOT NULL, - value_produced_total_local REAL NOT NULL, - /* - latency_delivery INTEGER NOT NULL, - quantity_ordered REAL NOT NULL, - id_unit_quantity INTEGER NOT NULL, - CONSTRAINT FK_Shop_Manufacturing_Purchase_Order_id_unit_quantity - FOREIGN KEY (id_unit_quantity) - REFERENCES Shop_Unit_Measurement(id_unit), - quantity_received INTEGER NULL, - display_order INTEGER NOT NULL, - */ - active BOOLEAN NOT NULL DEFAULT TRUE, - created_on TIMESTAMP, - created_by INT, - updated_last_on TIMESTAMP NULL, - created_last_by VARCHAR(100) NULL, - id_change_set INTEGER NULL, - CONSTRAINT FK_Shop_Manufacturing_Purchase_Order_id_change_set - FOREIGN KEY (id_change_set) - REFERENCES Shop_Sales_And_Purchasing_Change_Set(id_change_set) -); - --- Manufacturing Purchase Order Audits - - - -SELECT CONCAT('WARNING: Table ', TABLE_NAME, ' already exists.') AS msg_warning FROM INFORMATION_SCHEMA.TABLES WHERE TABLE_NAME = 'Shop_Manufacturing_Purchase_Order_Audit'; - -CREATE TABLE IF NOT EXISTS Shop_Manufacturing_Purchase_Order_Audit ( - id_audit INTEGER NOT NULL PRIMARY KEY GENERATED ALWAYS AS IDENTITY, - id_order INTEGER NOT NULL, - CONSTRAINT FK_Shop_Manufacturing_Purchase_Order_Audit_id_order - FOREIGN KEY (id_order) - REFERENCES Shop_Manufacturing_Purchase_Order(id_order) - ON UPDATE RESTRICT, - name_field VARCHAR(50), - value_prev VARCHAR(10), - value_new VARCHAR(10), - id_change_set INTEGER NOT NULL, - CONSTRAINT FK_Shop_Manufacturing_Purchase_Order_Audit_id_change_set - FOREIGN KEY (id_change_set) - REFERENCES Shop_Sales_And_Purchasing_Change_Set(id_change_set) -); - --- Manufacturing Purchase Order Product Link - - - -SELECT CONCAT('WARNING: Table ', TABLE_NAME, ' already exists.') AS msg_warning FROM INFORMATION_SCHEMA.TABLES WHERE TABLE_NAME = 'Shop_Manufacturing_Purchase_Order_Product_Link'; - -CREATE TABLE IF NOT EXISTS Shop_Manufacturing_Purchase_Order_Product_Link ( - id_link INTEGER NOT NULL PRIMARY KEY GENERATED ALWAYS AS IDENTITY, - id_order INTEGER NOT NULL, - CONSTRAINT FK_Manufacturing_Purchase_Order_Product_Link_id_order - FOREIGN KEY (id_order) - REFERENCES Shop_Manufacturing_Purchase_Order(id_order), - id_permutation INTEGER NOT NULL, - CONSTRAINT FK_Manufacturing_Purchase_Order_Product_Link_id_permutation - FOREIGN KEY (id_permutation) - REFERENCES Shop_Product_Permutation(id_permutation), - cost_total_local REAL NOT NULL, - id_currency_cost INTEGER NOT NULL, - value_produced_total_local REAL NOT NULL, - quantity_used REAL NOT NULL, - id_unit_quantity INTEGER NOT NULL, - CONSTRAINT FK_Manufacturing_Purchase_Order_id_unit_quantity - FOREIGN KEY (id_unit_quantity) - REFERENCES Shop_Unit_Measurement(id_unit_measurement), - latency_manufacture INTEGER NOT NULL, - quantity_produced REAL NOT NULL, - display_order INTEGER NOT NULL, - active BOOLEAN NOT NULL, - created_on TIMESTAMP, - created_by INT, - updated_last_on TIMESTAMP NULL, - created_last_by VARCHAR(100) NULL, - id_change_set INTEGER NULL, - CONSTRAINT FK_Manufacturing_Purchase_Order_id_change_set - FOREIGN KEY (id_change_set) - REFERENCES Shop_Sales_And_Purchasing_Change_Set(id_change_set) -); - --- Manufacturing Purchase Order Product Link Temp - - - --- DROP TABLE Shop_Manufacturing_Purchase_Order_Product_Link_Temp; --- SELECT * FROM Shop_Manufacturing_Purchase_Order_Product_Link_Temp; - -SELECT CONCAT('WARNING: Table ', TABLE_NAME, ' already exists.') AS msg_warning FROM INFORMATION_SCHEMA.TABLES WHERE TABLE_NAME = 'Shop_Manufacturing_Purchase_Order_Product_Link_Temp'; - -CREATE TABLE IF NOT EXISTS Shop_Manufacturing_Purchase_Order_Product_Link_Temp ( - id_link INTEGER NOT NULL PRIMARY KEY, - GUID UUID NOT NULL, - id_order INTEGER NOT NULL, - /* - CONSTRAINT FK_Manuf_Purch_Order_Product_Link_Temp_id_order - FOREIGN KEY (id_order) - REFERENCES Shop_Manufacturing_Purchase_Order(id_order), - */ - id_permutation INTEGER NOT NULL, - CONSTRAINT FK_Manuf_Purch_Order_Product_Link_Temp_id_permutation - FOREIGN KEY (id_permutation) - REFERENCES Shop_Product_Permutation(id_permutation), - cost_total_local REAL NOT NULL, - id_currency_cost INTEGER NOT NULL, - quantity_used REAL NOT NULL, - id_unit_quantity INTEGER NOT NULL, - CONSTRAINT FK_Manuf_Purch_Order_Product_Link_Temp_id_unit_quantity - FOREIGN KEY (id_unit_quantity) - REFERENCES Shop_Unit_Measurement(id_unit_measurement), - quantity_produced REAL NULL, - latency_manufacture INTEGER NOT NULL, - display_order INTEGER NOT NULL, - active BOOLEAN NOT NULL -); - --- Manufacturing Purchase Order Product Link Audits - - - -SELECT CONCAT('WARNING: Table ', TABLE_NAME, ' already exists.') AS msg_warning FROM INFORMATION_SCHEMA.TABLES WHERE TABLE_NAME = 'Shop_Manufacturing_Purchase_Order_Product_Link_Audit'; - -CREATE TABLE IF NOT EXISTS Shop_Manufacturing_Purchase_Order_Product_Link_Audit ( - id_audit INTEGER NOT NULL PRIMARY KEY GENERATED ALWAYS AS IDENTITY, - id_link INTEGER NOT NULL, - CONSTRAINT FK_Manufacturing_Purch_Order_Product_Link_Audit_id_link - FOREIGN KEY (id_link) - REFERENCES Shop_Manufacturing_Purchase_Order_Product_Link(id_link) - ON UPDATE RESTRICT, - name_field VARCHAR(50), - value_prev VARCHAR(10), - value_new VARCHAR(10), - id_change_set INTEGER NOT NULL, - CONSTRAINT FK_Manufacturing_Purch_Order_Product_Link_Audit_id_change_set - FOREIGN KEY (id_change_set) - REFERENCES Shop_Sales_And_Purchasing_Change_Set(id_change_set) -); --- Customer - - - -SELECT CONCAT('WARNING: Table ', TABLE_NAME, ' already exists.') AS msg_warning FROM INFORMATION_SCHEMA.TABLES WHERE TABLE_NAME = 'Shop_Customer'; - -CREATE TABLE IF NOT EXISTS Shop_Customer ( - id_customer INTEGER NOT NULL PRIMARY KEY GENERATED ALWAYS AS IDENTITY, - name_company VARCHAR(255) NOT NULL, - name_contact VARCHAR(255) NULL, - department_contact VARCHAR(255) NULL, - id_address INTEGER NOT NULL, - CONSTRAINT FK_Shop_Customer_id_address - FOREIGN KEY (id_address) - REFERENCES Shop_Address(id_address), - phone_number VARCHAR(50) NULL, - email VARCHAR(255) NOT NULL, - id_currency INTEGER NOT NULL, - CONSTRAINT FK_Shop_Customer_id_currency - FOREIGN KEY (id_currency) - REFERENCES Shop_Currency(id_currency), - active BOOLEAN NOT NULL DEFAULT TRUE, - created_on TIMESTAMP, - created_by INT, - id_change_set INTEGER, - CONSTRAINT FK_Shop_Customer_id_change_set - FOREIGN KEY (id_change_set) - REFERENCES Shop_Sales_And_Purchasing_Change_Set(id_change_set) -); - --- Customer Audits - - - -SELECT CONCAT('WARNING: Table ', TABLE_NAME, ' already exists.') AS msg_warning FROM INFORMATION_SCHEMA.TABLES WHERE TABLE_NAME = 'Shop_Customer_Audit'; - -CREATE TABLE IF NOT EXISTS Shop_Customer_Audit ( - id_audit INTEGER NOT NULL PRIMARY KEY GENERATED ALWAYS AS IDENTITY, - id_customer INTEGER NOT NULL, - CONSTRAINT FK_Shop_Customer_Audit_id_customer - FOREIGN KEY (id_customer) - REFERENCES Shop_Customer(id_customer) - ON UPDATE RESTRICT, - name_field VARCHAR(50), - value_prev VARCHAR(255), - value_new VARCHAR(255), - id_change_set INTEGER NOT NULL, - CONSTRAINT FK_Shop_Customer_Audit_id_change_set - FOREIGN KEY (id_change_set) - REFERENCES Shop_Sales_And_Purchasing_Change_Set(id_change_set) -); - --- Customer Sales Purchase Order - - - -SELECT CONCAT('WARNING: Table ', TABLE_NAME, ' already exists.') AS msg_warning FROM INFORMATION_SCHEMA.TABLES WHERE TABLE_NAME = 'Shop_Customer_Sales_Order'; - -CREATE TABLE IF NOT EXISTS Shop_Customer_Sales_Order ( - id_order INTEGER NOT NULL PRIMARY KEY GENERATED ALWAYS AS IDENTITY, - id_customer INTEGER NOT NULL, - CONSTRAINT FK_Shop_Customer_Sales_Order_id_customer - FOREIGN KEY (id_customer) - REFERENCES Shop_Customer(id_customer), - price_total_local REAL NOT NULL, - id_currency_price INTEGER NOT NULL, - /* - latency_delivery INTEGER NOT NULL, - quantity_ordered REAL NOT NULL, - id_unit_quantity INTEGER NOT NULL, - CONSTRAINT FK_Shop_Customer_Sales_Order_id_unit_quantity - FOREIGN KEY (id_unit_quantity) - REFERENCES Shop_Unit_Measurement(id_unit), - quantity_received INTEGER NULL, - display_order INTEGER NOT NULL, - */ - active BOOLEAN NOT NULL DEFAULT TRUE, - created_on TIMESTAMP, - created_by INT, - updated_last_on TIMESTAMP NULL, - created_last_by VARCHAR(100) NULL, - id_change_set INTEGER NULL, - CONSTRAINT FK_Shop_Customer_Sales_Order_id_change_set - FOREIGN KEY (id_change_set) - REFERENCES Shop_Sales_And_Purchasing_Change_Set(id_change_set) -); - --- Customer Sales Order Audits - - - -SELECT CONCAT('WARNING: Table ', TABLE_NAME, ' already exists.') AS msg_warning FROM INFORMATION_SCHEMA.TABLES WHERE TABLE_NAME = 'Shop_Customer_Sales_Order_Audit'; - -CREATE TABLE IF NOT EXISTS Shop_Customer_Sales_Order_Audit ( - id_audit INTEGER NOT NULL PRIMARY KEY GENERATED ALWAYS AS IDENTITY, - id_order INTEGER NOT NULL, - CONSTRAINT FK_Shop_Customer_Sales_Order_Audit_id_order - FOREIGN KEY (id_order) - REFERENCES Shop_Customer_Sales_Order(id_order) - ON UPDATE RESTRICT, - name_field VARCHAR(50), - value_prev VARCHAR(10), - value_new VARCHAR(10), - id_change_set INTEGER NOT NULL, - CONSTRAINT FK_Shop_Customer_Sales_Order_Audit_id_change_set - FOREIGN KEY (id_change_set) - REFERENCES Shop_Sales_And_Purchasing_Change_Set(id_change_set) -); - --- Customer Sales Order Product Link - - - -SELECT CONCAT('WARNING: Table ', TABLE_NAME, ' already exists.') AS msg_warning FROM INFORMATION_SCHEMA.TABLES WHERE TABLE_NAME = 'Shop_Customer_Sales_Order_Product_Link'; - -CREATE TABLE IF NOT EXISTS Shop_Customer_Sales_Order_Product_Link ( - id_link INTEGER NOT NULL PRIMARY KEY GENERATED ALWAYS AS IDENTITY, - id_order INTEGER NOT NULL, - CONSTRAINT FK_Shop_Customer_Sales_Order_Product_Link_id_order - FOREIGN KEY (id_order) - REFERENCES Shop_Customer_Sales_Order(id_order), - id_permutation INTEGER NOT NULL, - CONSTRAINT FK_Shop_Customer_Sales_Order_Product_Link_id_permutation - FOREIGN KEY (id_permutation) - REFERENCES Shop_Product_Permutation(id_permutation), - price_total_local REAL NOT NULL, - id_currency_price INTEGER NOT NULL, - quantity_ordered REAL NOT NULL, - id_unit_quantity INTEGER NOT NULL, - CONSTRAINT FK_Shop_Customer_Sales_Order_Product_Link_id_unit_quantity - FOREIGN KEY (id_unit_quantity) - REFERENCES Shop_Unit_Measurement(id_unit_measurement), - quantity_delivered REAL NOT NULL, - latency_delivery_days INTEGER NOT NULL, - display_order INTEGER NOT NULL, - - active BOOLEAN NOT NULL, - created_on TIMESTAMP, - created_by INT, - updated_last_on TIMESTAMP NULL, - created_last_by VARCHAR(100) NULL, - id_change_set INTEGER NULL, - CONSTRAINT FK_Shop_Customer_Sales_Order_Product_Link_id_change_set - FOREIGN KEY (id_change_set) - REFERENCES Shop_Sales_And_Purchasing_Change_Set(id_change_set) -); - --- Customer Sales Order Product Link Audits - - - -SELECT CONCAT('WARNING: Table ', TABLE_NAME, ' already exists.') AS msg_warning FROM INFORMATION_SCHEMA.TABLES WHERE TABLE_NAME = 'Shop_Customer_Sales_Order_Product_Link_Audit'; - -CREATE TABLE IF NOT EXISTS Shop_Customer_Sales_Order_Product_Link_Audit ( - id_audit INTEGER NOT NULL PRIMARY KEY GENERATED ALWAYS AS IDENTITY, - id_link INTEGER NOT NULL, - CONSTRAINT FK_Shop_Customer_Sales_Order_Product_Link_Audit_id_link - FOREIGN KEY (id_link) - REFERENCES Shop_Customer_Sales_Order_Product_Link(id_link) - ON UPDATE RESTRICT, - name_field VARCHAR(50), - value_prev VARCHAR(10), - value_new VARCHAR(10), - id_change_set INTEGER NOT NULL, - CONSTRAINT FK_Shop_Customer_Sales_Order_Product_Link_Audit_id_change_set - FOREIGN KEY (id_change_set) - REFERENCES Shop_Sales_And_Purchasing_Change_Set(id_change_set) -); - --- Customer Sales Order Product Link Temp - - - --- DROP TABLE Shop_Customer_Sales_Order_Product_Link_Temp; - -SELECT CONCAT('WARNING: Table ', TABLE_NAME, ' already exists.') AS msg_warning FROM INFORMATION_SCHEMA.TABLES WHERE TABLE_NAME = 'Shop_Customer_Sales_Order_Product_Link_Temp'; - -CREATE TABLE IF NOT EXISTS Shop_Customer_Sales_Order_Product_Link_Temp ( - id_link INTEGER NOT NULL PRIMARY KEY, - GUID UUID NOT NULL, - id_order INTEGER NOT NULL, - /* - CONSTRAINT FK_Customer_Sales_Order_Product_Link_Temp_id_order - FOREIGN KEY (id_order) - REFERENCES Shop_Customer_Sales_Order(id_order), - */ - id_permutation INTEGER NOT NULL, - CONSTRAINT FK_Customer_Sales_Order_Product_Link_Temp_id_permutation - FOREIGN KEY (id_permutation) - REFERENCES Shop_Product_Permutation(id_permutation), - price_total_local REAL NOT NULL, - id_currency_price INTEGER NOT NULL, - quantity_ordered REAL NOT NULL, - id_unit_quantity INTEGER NOT NULL, - CONSTRAINT FK_Customer_Sales_Order_Product_Link_Temp_id_unit_quantity - FOREIGN KEY (id_unit_quantity) - REFERENCES Shop_Unit_Measurement(id_unit_measurement), - quantity_delivered REAL NULL, - latency_delivery_days INTEGER NOT NULL, - display_order INTEGER NOT NULL, - active BOOLEAN NOT NULL -); - -DO $$ -BEGIN - RAISE NOTICE 'TABLE CREATION COMPLETE'; -END $$; - --- Product Change Set - -CREATE OR REPLACE FUNCTION before_insert_Shop_Sales_And_Purchasing_Change_Set() -RETURNS TRIGGER AS $$ -BEGIN - IF NEW.updated_last_on IS NULL THEN - NEW.updated_last_on = CURRENT_TIMESTAMP; - END IF; - IF NEW.updated_last_by IS NULL THEN - NEW.updated_last_by = CURRENT_USER; - END IF; - RETURN NEW; -END; -$$ LANGUAGE plpgsql; - -CREATE OR REPLACE TRIGGER tri_before_insert_Shop_Sales_And_Purchasing_Change_Set -BEFORE INSERT ON Shop_Sales_And_Purchasing_Change_Set -FOR EACH ROW -EXECUTE FUNCTION before_insert_Shop_Sales_And_Purchasing_Change_Set(); - - --- Shop User Change Set - -CREATE OR REPLACE FUNCTION before_insert_Shop_User_Change_Set() -RETURNS TRIGGER AS $$ -BEGIN - IF NEW.updated_last_on IS NULL THEN - NEW.updated_last_on = CURRENT_TIMESTAMP; - END IF; - IF NEW.updated_last_by IS NULL THEN - NEW.updated_last_by = CURRENT_USER; - END IF; - RETURN NEW; -END; -$$ LANGUAGE plpgsql; - -CREATE OR REPLACE TRIGGER tri_before_insert_Shop_User_Change_Set -BEFORE INSERT ON Shop_User_Change_Set -FOR EACH ROW -EXECUTE FUNCTION before_insert_Shop_User_Change_Set(); - --- Shop Access Level - -CREATE OR REPLACE FUNCTION before_insert_Shop_Access_Level() -RETURNS TRIGGER AS $$ -BEGIN - IF NEW.created_on IS NULL THEN - NEW.created_on = CURRENT_TIMESTAMP; - END IF; - IF NEW.created_by IS NULL THEN - NEW.created_by = CURRENT_USER; - END IF; - RETURN NEW; -END; -$$ LANGUAGE plpgsql; - -CREATE OR REPLACE TRIGGER tri_before_insert_Shop_Access_Level -BEFORE INSERT ON Shop_Access_Level -FOR EACH ROW -EXECUTE FUNCTION before_insert_Shop_Access_Level(); - - -CREATE OR REPLACE FUNCTION before_update_Shop_Access_Level() -RETURNS TRIGGER AS $$ -BEGIN - IF OLD.id_change_set IS NOT DISTINCT FROM NEW.id_change_set THEN - RAISE EXCEPTION 'New change Set ID must be provided.' - USING ERRCODE = '45000'; - END IF; - - INSERT INTO Shop_Access_Level_Audit ( - id_access_level, - name_field, - value_prev, - value_new, - id_change_set - ) - -- Changed code - SELECT NEW.id_access_level, 'code', OLD.code, NEW.code, NEW.id_change_set - WHERE NOT (OLD.code <=> NEW.code) - UNION - -- Changed name - SELECT NEW.id_access_level, 'name', OLD.name, NEW.name, NEW.id_change_set - WHERE NOT (OLD.name <=> NEW.name) - UNION - -- Changed priority - SELECT NEW.id_access_level, 'priority', CONVERT(OLD.priority, CHAR), CONVERT(NEW.priority, CHAR), NEW.id_change_set - WHERE NOT (OLD.priority <=> NEW.priority) - UNION - -- Changed active - SELECT NEW.id_access_level, 'active', CONVERT(CONVERT(OLD.active, SIGNED), CHAR), CONVERT(CONVERT(NEW.active, SIGNED), CHAR), NEW.id_change_set - WHERE NOT (OLD.active <=> NEW.active) - UNION - -- Changed display_order - SELECT NEW.id_access_level, 'display_order', CONVERT(OLD.display_order, CHAR), CONVERT(NEW.display_order, CHAR), NEW.id_change_set - WHERE NOT OLD.display_order <=> NEW.display_order - ; - - RETURN NEW; -END; -$$ LANGUAGE plpgsql; - -CREATE OR REPLACE TRIGGER tri_before_update_Shop_Access_Level -BEFORE UPDATE ON Shop_Access_Level -FOR EACH ROW -EXECUTE FUNCTION before_update_Shop_Access_Level(); - --- Product Change Set - - - -CREATE OR REPLACE FUNCTION before_insert_Shop_Product_Change_Set() -RETURNS TRIGGER AS $$ -BEGIN - IF NEW.updated_last_on IS NULL THEN - NEW.updated_last_on = CURRENT_TIMESTAMP; - END IF; - IF NEW.updated_last_by IS NULL THEN - NEW.updated_last_by = CURRENT_USER; - END IF; - RETURN NEW; -END; -$$ LANGUAGE plpgsql; - -CREATE OR REPLACE TRIGGER tri_before_insert_Shop_Product_Change_Set -BEFORE INSERT ON Shop_Product_Change_Set -FOR EACH ROW -EXECUTE FUNCTION before_insert_Shop_Product_Change_Set(); - --- File Type - -CREATE OR REPLACE FUNCTION before_insert_File_Type() -RETURNS TRIGGER AS $$ -BEGIN - NEW.created_on = CURRENT_TIMESTAMP; - NEW.created_by = CURRENT_USER; - RETURN NEW; -END; -$$ LANGUAGE plpgsql; - -CREATE OR REPLACE TRIGGER tri_before_insert_File_Type -BEFORE INSERT ON File_Type -FOR EACH ROW -EXECUTE FUNCTION before_insert_File_Type(); - - -CREATE OR REPLACE FUNCTION before_update_File_Type() -RETURNS TRIGGER AS $$ -BEGIN - INSERT INTO File_Type_Audit ( - id_type, - name_field, - value_prev, - value_new - ) - -- Changed code - SELECT NEW.id_type, 'code', OLD.code, NEW.code - WHERE NOT OLD.code <=> NEW.code - UNION - -- Changed name - SELECT NEW.id_type, 'name', OLD.name, NEW.name - WHERE NOT OLD.name <=> NEW.name - UNION - -- Changed extension - SELECT NEW.id_type, 'extension', CONVERT(OLD.extension, CHAR), CONVERT(NEW.extension, CHAR) - WHERE NOT OLD.extension <=> NEW.extension - ; - - RETURN NEW; -END; -$$ LANGUAGE plpgsql; - -CREATE OR REPLACE TRIGGER tri_before_update_File_Type -BEFORE UPDATE ON File_Type -FOR EACH ROW -EXECUTE FUNCTION before_update_File_Type(); - --- File Type Audits - -CREATE OR REPLACE FUNCTION before_insert_File_Type_Audit() -RETURNS TRIGGER AS $$ -BEGIN - NEW.created_on = CURRENT_TIMESTAMP; - NEW.created_by = CURRENT_USER; - - RETURN NEW; -END; -$$ LANGUAGE plpgsql; - -CREATE OR REPLACE TRIGGER tri_before_insert_File_Type_Audit -BEFORE INSERT ON File_Type_Audit -FOR EACH ROW -EXECUTE FUNCTION before_insert_File_Type_Audit(); - - -CREATE OR REPLACE FUNCTION before_update_File_Type_Audit() -RETURNS TRIGGER AS $$ -BEGIN - NEW.updated_last_on = CURRENT_TIMESTAMP; - NEW.updated_last_by = CURRENT_USER; - - RETURN NEW; -END; -$$ LANGUAGE plpgsql; - -CREATE OR REPLACE TRIGGER tri_before_update_File_Type_Audit -BEFORE UPDATE ON File_Type_Audit -FOR EACH ROW -EXECUTE FUNCTION before_update_File_Type_Audit(); --- Shop General - -CREATE OR REPLACE FUNCTION before_insert_Shop_General() -RETURNS TRIGGER AS $$ -BEGIN - NEW.created_on = CURRENT_TIMESTAMP; - NEW.created_by = CURRENT_USER; - - RETURN NEW; -END; -$$ LANGUAGE plpgsql; - -CREATE OR REPLACE TRIGGER tri_before_insert_Shop_General -BEFORE INSERT ON Shop_General -FOR EACH ROW -EXECUTE FUNCTION before_insert_Shop_General(); - - -CREATE OR REPLACE FUNCTION before_update_Shop_General() -RETURNS TRIGGER AS $$ -BEGIN - IF OLD.id_change_set IS NOT DISTINCT FROM NEW.id_change_set THEN - RAISE EXCEPTION 'New change Set ID must be provided.' - USING ERRCODE = '45000'; - END IF; - - INSERT INTO Shop_General_Audit ( - id_general, - name_field, - value_prev, - value_new, - id_change_set - ) - -- Changed quantity max - SELECT NEW.id_general, 'quantity_max', CONVERT(OLD.quantity_max, CHAR), CONVERT(NEW.quantity_max, CHAR), NEW.id_change_set - WHERE NOT OLD.quantity_max <=> NEW.quantity_max - ; - - RETURN NEW; -END; -$$ LANGUAGE plpgsql; - -CREATE OR REPLACE TRIGGER tri_before_update_Shop_General -BEFORE UPDATE ON Shop_General -FOR EACH ROW -EXECUTE FUNCTION before_update_Shop_General(); --- Shop Category - -CREATE OR REPLACE FUNCTION before_insert_Shop_Product_Category() -RETURNS TRIGGER AS $$ -BEGIN - NEW.created_on = CURRENT_TIMESTAMP; - NEW.created_by = CURRENT_USER; - - RETURN NEW; -END; -$$ LANGUAGE plpgsql; - -CREATE OR REPLACE TRIGGER tri_before_insert_Shop_Product_Category -BEFORE INSERT ON Shop_Product_Category -FOR EACH ROW -EXECUTE FUNCTION before_insert_Shop_Product_Category(); - - -CREATE OR REPLACE FUNCTION before_update_Shop_Product_Category() -RETURNS TRIGGER AS $$ -BEGIN - IF OLD.id_change_set IS NOT DISTINCT FROM NEW.id_change_set THEN - RAISE EXCEPTION 'New change Set ID must be provided.' - USING ERRCODE = '45000'; - END IF; - - INSERT INTO Shop_Product_Category_Audit ( - id_category, - name_field, - value_prev, - value_new, - id_change_set - ) - -- Changed code - SELECT NEW.id_category, 'code', OLD.code, NEW.code, NEW.id_change_set - WHERE NOT OLD.code <=> NEW.code - UNION - -- Changed name - SELECT NEW.id_category, 'name', OLD.name, NEW.name, NEW.id_change_set - WHERE NOT OLD.name <=> NEW.name - UNION - -- Changed description - SELECT NEW.id_category, 'description', OLD.description, NEW.description, NEW.id_change_set - WHERE NOT OLD.description <=> NEW.description - UNION - -- Changed active - SELECT NEW.id_category, 'active', CONVERT(CONVERT(OLD.active, SIGNED), CHAR), CONVERT(CONVERT(NEW.active, SIGNED), CHAR), NEW.id_change_set - WHERE NOT (OLD.active <=> NEW.active) - UNION - -- Changed display_order - SELECT NEW.id_category, 'display_order', CONVERT(OLD.display_order, CHAR), CONVERT(NEW.display_order, CHAR), NEW.id_change_set - WHERE NOT OLD.display_order <=> NEW.display_order - ; - - RETURN NEW; -END; -$$ LANGUAGE plpgsql; - -CREATE OR REPLACE TRIGGER tri_before_update_Shop_Product_Category -BEFORE UPDATE ON Shop_Product_Category -FOR EACH ROW -EXECUTE FUNCTION before_update_Shop_Product_Category(); - --- Shop Recurrence Interval - -CREATE OR REPLACE FUNCTION before_insert_Shop_Interval_Recurrence() -RETURNS TRIGGER AS $$ -BEGIN - NEW.created_on = CURRENT_TIMESTAMP; - NEW.created_by = CURRENT_USER; - - RETURN NEW; -END; -$$ LANGUAGE plpgsql; - -CREATE OR REPLACE TRIGGER tri_before_insert_Shop_Interval_Recurrence -BEFORE INSERT ON Shop_Interval_Recurrence -FOR EACH ROW -EXECUTE FUNCTION before_insert_Shop_Interval_Recurrence(); - - -CREATE OR REPLACE FUNCTION before_update_Shop_Interval_Recurrence() -RETURNS TRIGGER AS $$ -BEGIN - IF OLD.id_change_set IS NOT DISTINCT FROM NEW.id_change_set THEN - RAISE EXCEPTION 'New change Set ID must be provided.' - USING ERRCODE = '45000'; - END IF; - - INSERT INTO Shop_Interval_Recurrence_Audit ( - id_interval, - name_field, - value_prev, - value_new, - id_change_set - ) - -- Changed code - SELECT NEW.id_interval, 'code', OLD.code, NEW.code, NEW.id_change_set - WHERE NOT OLD.code <=> NEW.code - UNION - -- Changed name - SELECT NEW.id_interval, 'name', OLD.name, NEW.name, NEW.id_change_set - WHERE NOT OLD.name <=> NEW.name - UNION - -- Changed name_plural - SELECT NEW.id_interval, 'name_plural', OLD.name_plural, NEW.name_plural, NEW.id_change_set - WHERE NOT OLD.name_plural <=> NEW.name_plural - UNION - -- Changed name - SELECT NEW.id_interval, 'active', OLD.active, NEW.active, NEW.id_change_set - WHERE NOT OLD.active <=> NEW.active - ; - - RETURN NEW; -END; -$$ LANGUAGE plpgsql; - -CREATE OR REPLACE TRIGGER tri_before_update_Shop_Interval_Recurrence -BEFORE UPDATE ON Shop_Interval_Recurrence -FOR EACH ROW -EXECUTE FUNCTION before_update_Shop_Interval_Recurrence(); - --- Shop Delivery Region - -CREATE OR REPLACE FUNCTION before_insert_Shop_Region() -RETURNS TRIGGER AS $$ -BEGIN - NEW.created_on = CURRENT_TIMESTAMP; - NEW.created_by = CURRENT_USER; - - RETURN NEW; -END; -$$ LANGUAGE plpgsql; - -CREATE OR REPLACE TRIGGER tri_before_insert_Shop_Region -BEFORE INSERT ON Shop_Region -FOR EACH ROW -EXECUTE FUNCTION before_insert_Shop_Region(); - - -CREATE OR REPLACE FUNCTION before_update_Shop_Region() -RETURNS TRIGGER AS $$ -BEGIN - IF OLD.id_change_set IS NOT DISTINCT FROM NEW.id_change_set THEN - RAISE EXCEPTION 'New change Set ID must be provided.' - USING ERRCODE = '45000'; - END IF; - - INSERT INTO Shop_Region_Audit ( - id_region, - name_field, - value_prev, - value_new, - id_change_set - ) - -- Changed code - SELECT NEW.id_region, 'code', OLD.code, NEW.code, NEW.id_change_set - WHERE NOT OLD.code <=> NEW.code - UNION - -- Changed name - SELECT NEW.id_region, 'name', OLD.name, NEW.name, NEW.id_change_set - WHERE NOT OLD.name <=> NEW.name - UNION - -- Changed active - SELECT NEW.id_region, 'active', CONVERT(OLD.active, CHAR), CONVERT(NEW.active, CHAR), NEW.id_change_set - WHERE NOT OLD.active <=> NEW.active - UNION - -- Changed display_order - SELECT NEW.id_region, 'display_order', CONVERT(OLD.display_order, CHAR), CONVERT(NEW.display_order, CHAR), NEW.id_change_set - WHERE NOT OLD.display_order <=> NEW.display_order - ; - - RETURN NEW; -END; -$$ LANGUAGE plpgsql; - -CREATE OR REPLACE TRIGGER tri_before_update_Shop_Region -BEFORE UPDATE ON Shop_Region -FOR EACH ROW -EXECUTE FUNCTION before_update_Shop_Region(); - --- Shop Region Branch - -CREATE OR REPLACE FUNCTION before_insert_Shop_Region_Branch() -RETURNS TRIGGER AS $$ -BEGIN - NEW.created_on = CURRENT_TIMESTAMP; - NEW.created_by = CURRENT_USER; - - RETURN NEW; -END; -$$ LANGUAGE plpgsql; - -CREATE OR REPLACE TRIGGER tri_before_insert_Shop_Region_Branch -BEFORE INSERT ON Shop_Region_Branch -FOR EACH ROW -EXECUTE FUNCTION before_insert_Shop_Region_Branch(); - - -CREATE OR REPLACE FUNCTION before_update_Shop_Region_Branch() -RETURNS TRIGGER AS $$ -BEGIN - IF OLD.id_change_set IS NOT DISTINCT FROM NEW.id_change_set THEN - RAISE EXCEPTION 'New change Set ID must be provided.' - USING ERRCODE = '45000'; - END IF; - - INSERT INTO Shop_Region_Branch_Audit ( - id_branch, - name_field, - value_prev, - value_new, - id_change_set - ) - /* - -- Changed depth - SELECT NEW.id_branch, 'depth', CONVERT(OLD.depth, CHAR), CONVERT(NEW.depth, CHAR), NEW.id_change_set - WHERE NOT OLD.depth <=> NEW.depth - UNION - */ - -- Changed active - SELECT NEW.id_branch, 'active', CONVERT(OLD.active, CHAR), CONVERT(NEW.active, CHAR), NEW.id_change_set - WHERE NOT OLD.active <=> NEW.active - UNION - -- Changed display_order - SELECT NEW.id_branch, 'display_order', CONVERT(OLD.display_order, CHAR), CONVERT(NEW.display_order, CHAR), NEW.id_change_set - WHERE NOT OLD.display_order <=> NEW.display_order - ; - - RETURN NEW; -END; -$$ LANGUAGE plpgsql; - -CREATE OR REPLACE TRIGGER tri_before_update_Shop_Region_Branch -BEFORE UPDATE ON Shop_Region_Branch -FOR EACH ROW -EXECUTE FUNCTION before_update_Shop_Region_Branch(); - --- Shop Currency - -CREATE OR REPLACE FUNCTION before_insert_Shop_Currency() -RETURNS TRIGGER AS $$ -BEGIN - IF NEW.created_on IS NULL THEN - NEW.created_on = CURRENT_TIMESTAMP; - END IF; - IF NEW.created_by IS NULL THEN - NEW.created_by = CURRENT_USER; - END IF; - - RETURN NEW; -END; -$$ LANGUAGE plpgsql; - -CREATE OR REPLACE TRIGGER tri_before_insert_Shop_Currency -BEFORE INSERT ON Shop_Currency -FOR EACH ROW -EXECUTE FUNCTION before_insert_Shop_Currency(); - - -CREATE OR REPLACE FUNCTION before_update_Shop_Currency() -RETURNS TRIGGER AS $$ -BEGIN - IF OLD.id_change_set IS NOT DISTINCT FROM NEW.id_change_set THEN - RAISE EXCEPTION 'New change Set ID must be provided.' - USING ERRCODE = '45000'; - END IF; - - INSERT INTO Shop_Currency_Audit ( - id_currency, - name_field, - value_prev, - value_new, - id_change_set - ) - -- Changed code - SELECT NEW.id_currency, 'code', OLD.code, NEW.code, NEW.id_change_set - WHERE NOT OLD.code <=> NEW.code - UNION - -- Changed name - SELECT NEW.id_currency, 'name', OLD.name, NEW.name, NEW.id_change_set - WHERE NOT OLD.name <=> NEW.name - UNION - -- Changed symbol - SELECT NEW.id_currency, 'symbol', OLD.symbol, NEW.symbol, NEW.id_change_set - WHERE NOT OLD.symbol <=> NEW.symbol - UNION - -- Changed ratio_2_GBP - SELECT NEW.id_currency, 'factor_from_GBP', OLD.factor_from_GBP, NEW.factor_from_GBP, NEW.id_change_set - WHERE NOT OLD.factor_from_GBP <=> NEW.factor_from_GBP - UNION - -- Changed active - SELECT NEW.id_currency, 'active', CONVERT(CONVERT(OLD.active, SIGNED), CHAR), CONVERT(CONVERT(NEW.active, SIGNED), CHAR), NEW.id_change_set - WHERE NOT (OLD.active <=> NEW.active) - UNION - -- Changed display_order - SELECT NEW.id_currency, 'display_order', CONVERT(display_order, CHAR), CONVERT(display_order, CHAR), NEW.id_change_set - WHERE NOT (OLD.display_order <=> NEW.display_order) - ; - - RETURN NEW; -END; -$$ LANGUAGE plpgsql; - -CREATE OR REPLACE TRIGGER tri_before_update_Shop_Currency -BEFORE UPDATE ON Shop_Currency -FOR EACH ROW -EXECUTE FUNCTION before_update_Shop_Currency(); - --- Shop Tax_Or_Surcharge - -CREATE OR REPLACE FUNCTION before_insert_Shop_Tax_Or_Surcharge() -RETURNS TRIGGER AS $$ -BEGIN - NEW.created_on = CURRENT_TIMESTAMP; - NEW.created_by = CURRENT_USER; - - RETURN NEW; -END; -$$ LANGUAGE plpgsql; - -CREATE OR REPLACE TRIGGER tri_before_insert_Shop_Tax_Or_Surcharge -BEFORE INSERT ON Shop_Tax_Or_Surcharge -FOR EACH ROW -EXECUTE FUNCTION before_insert_Shop_Tax_Or_Surcharge(); - - -CREATE OR REPLACE FUNCTION before_update_Shop_Tax_Or_Surcharge() -RETURNS TRIGGER AS $$ -BEGIN - IF OLD.id_change_set IS NOT DISTINCT FROM NEW.id_change_set THEN - RAISE EXCEPTION 'New change Set ID must be provided.' - USING ERRCODE = '45000'; - END IF; - - INSERT INTO Shop_Tax_Or_Surcharge_Audit ( - id_tax, - name_field, - value_prev, - value_new, - id_change_set - ) - -- Changed code - SELECT NEW.id_tax, 'code', OLD.code, NEW.code, NEW.id_change_set - WHERE NOT OLD.code <=> NEW.code - UNION - -- Changed name - SELECT NEW.id_tax, 'name', OLD.name, NEW.name, NEW.id_change_set - WHERE NOT OLD.name <=> NEW.name - UNION - -- Changed fixed_fee - SELECT NEW.id_tax, 'fixed_fee', OLD.fixed_fee, NEW.fixed_fee, NEW.id_change_set - WHERE NOT OLD.fixed_fee <=> NEW.fixed_fee - UNION - -- Changed multiplier - SELECT NEW.id_tax, 'multiplier', OLD.multiplier, NEW.multiplier, NEW.id_change_set - WHERE NOT OLD.multiplier <=> NEW.multiplier - UNION - -- Changed apply_fixed_fee_before_multiplier - SELECT NEW.id_tax, 'apply_fixed_fee_before_multiplier', CONVERT(CONVERT(OLD.apply_fixed_fee_before_multiplier, SIGNED), CHAR), CONVERT(CONVERT(NEW.apply_fixed_fee_before_multiplier, SIGNED), CHAR), NEW.id_change_set - WHERE NOT OLD.apply_fixed_fee_before_multiplier <=> NEW.apply_fixed_fee_before_multiplier - UNION - -- Changed quantity_min - SELECT NEW.id_tax, 'quantity_min', OLD.quantity_min, NEW.quantity_min, NEW.id_change_set - WHERE NOT OLD.quantity_min <=> NEW.quantity_min - UNION - -- Changed quantity_max - SELECT NEW.id_tax, 'quantity_max', OLD.quantity_max, NEW.quantity_max, NEW.id_change_set - WHERE NOT OLD.quantity_max <=> NEW.quantity_max - UNION - -- Changed display_order - SELECT NEW.id_tax, 'display_order', CONVERT(OLD.display_order, CHAR), CONVERT(NEW.display_order, CHAR), NEW.id_change_set - WHERE NOT OLD.display_order <=> NEW.display_order - UNION - -- Changed active - SELECT NEW.id_tax, 'active', CONVERT(CONVERT(OLD.active, SIGNED), CHAR), CONVERT(CONVERT(NEW.active, SIGNED), CHAR), NEW.id_change_set - WHERE NOT OLD.active <=> NEW.active - ; - - RETURN NEW; -END; -$$ LANGUAGE plpgsql; - -CREATE OR REPLACE TRIGGER tri_before_update_Shop_Tax_Or_Surcharge -BEFORE UPDATE ON Shop_Tax_Or_Surcharge -FOR EACH ROW -EXECUTE FUNCTION before_update_Shop_Tax_Or_Surcharge(); - - --- Shop Product - -CREATE OR REPLACE FUNCTION before_insert_Shop_Product() -RETURNS TRIGGER AS $$ -BEGIN - NEW.created_on = CURRENT_TIMESTAMP; - NEW.created_by = CURRENT_USER; - - RETURN NEW; -END; -$$ LANGUAGE plpgsql; - -CREATE OR REPLACE TRIGGER tri_before_insert_Shop_Product -BEFORE INSERT ON Shop_Product -FOR EACH ROW -EXECUTE FUNCTION before_insert_Shop_Product(); - - -CREATE OR REPLACE FUNCTION before_update_Shop_Product() -RETURNS TRIGGER AS $$ -BEGIN - IF OLD.id_change_set IS NOT DISTINCT FROM NEW.id_change_set THEN - RAISE EXCEPTION 'New change Set ID must be provided.' - USING ERRCODE = '45000'; - END IF; - /* - IF NOT NEW.has_variations THEN - IF ISNULL(NEW.price_GBP_full) THEN - SIGNAL SQLSTATE '45000' - SET MESSAGE_TEXT = 'Product must have price or variations (with prices).'; - END IF; - IF ISNULL(NEW.price_GBP_min) THEN - SIGNAL SQLSTATE '45000' - SET MESSAGE_TEXT = 'Product must have minimum price or variations (with prices).'; - END IF; - IF ISNULL(NEW.latency_manuf) THEN - SIGNAL SQLSTATE '45000' - SET MESSAGE_TEXT = 'Product must have manufacturing latency or variations (with manufacturing latencies).'; - END IF; - IF ISNULL(NEW.quantity_min) THEN - SIGNAL SQLSTATE '45000' - SET MESSAGE_TEXT = 'Product must have minimum quantity or variations (with minimum quantities).'; - END IF; - IF ISNULL(NEW.quantity_max) THEN - SIGNAL SQLSTATE '45000' - SET MESSAGE_TEXT = 'Product must have maximum quantity or variations (with maximum quantities).'; - END IF; - IF ISNULL(NEW.quantity_step) THEN - SIGNAL SQLSTATE '45000' - SET MESSAGE_TEXT = 'Product must have increment of quantity or variations (with increments of quantities).'; - END IF; - IF ISNULL(NEW.quantity_stock) THEN - SIGNAL SQLSTATE '45000' - SET MESSAGE_TEXT = 'Product must have stock quantity or variations (with stock quantities).'; - END IF; - IF ISNULL(NEW.is_subscription) THEN - SIGNAL SQLSTATE '45000' - SET MESSAGE_TEXT = 'Product must have subscription status or variations (with subscription statuses).'; - END IF; - IF ISNULL(NEW.id_unit_measurement_interval_recurrence) THEN - SIGNAL SQLSTATE '45000' - SET MESSAGE_TEXT = 'Product must have recurrence interval or variations (with recurrence intervals).'; - END IF; - IF ISNULL(NEW.count_interval_recurrence) THEN - SIGNAL SQLSTATE '45000' - SET MESSAGE_TEXT = 'Product must have recurrence interval count or variations (with recurrence interval counts).'; - END IF; - END IF; - */ - - INSERT INTO Shop_Product_Audit ( - id_product, - name_field, - value_prev, - value_new, - id_change_set - ) - -- Changed name - SELECT NEW.id_product, 'name', OLD.name, NEW.name, NEW.id_change_set - WHERE NOT OLD.name <=> NEW.name - /* - UNION - -- Changed description - SELECT NEW.id_product, 'description', OLD.description, NEW.description, NEW.id_change_set - WHERE NOT OLD.description <=> NEW.description - UNION - -- Changed price_GBP_full - SELECT NEW.id_product, 'price_GBP_full', CONVERT(OLD.price_GBP_full, CHAR), CONVERT(NEW.price_GBP_full, CHAR), NEW.id_change_set - WHERE NOT OLD.price_GBP_full <=> NEW.price_GBP_full - UNION - -- Changed price_GBP_min - SELECT NEW.id_product, 'price_GBP_min', CONVERT(OLD.price_GBP_min, CHAR), CONVERT(NEW.price_GBP_min, CHAR), NEW.id_change_set - WHERE NOT OLD.price_GBP_min <=> NEW.price_GBP_min - UNION - / - -- Changed discount - SELECT NEW.id_product, 'discount', CONVERT(OLD.discount, CHAR), CONVERT(NEW.discount, CHAR), NEW.id_change_set - WHERE NOT OLD.discount <=> NEW.discount - */ - UNION - -- Changed id_category - SELECT NEW.id_product, 'id_category', CONVERT(OLD.id_category, CHAR), CONVERT(NEW.id_category, CHAR), NEW.id_change_set - WHERE NOT OLD.id_category <=> NEW.id_category - UNION - -- Changed has_variations - SELECT NEW.id_product, 'has_variations', CONVERT(CONVERT(NEW.has_variations, SIGNED), CHAR), CONVERT(CONVERT(NEW.has_variations, SIGNED), CHAR), NEW.id_change_set - WHERE NOT OLD.has_variations <=> NEW.has_variations - /* - UNION - -- Changed latency_manuf - SELECT NEW.id_product, 'latency_manuf', CONVERT(OLD.latency_manuf, CHAR), CONVERT(NEW.latency_manuf, CHAR), NEW.id_change_set - WHERE NOT OLD.latency_manuf <=> NEW.latency_manuf - UNION - -- Changed quantity_min - SELECT NEW.id_product, 'quantity_min', CONVERT(OLD.quantity_min, CHAR), CONVERT(NEW.quantity_min, CHAR), NEW.id_change_set - WHERE NOT OLD.quantity_min <=> NEW.quantity_min - UNION - -- Changed quantity_max - SELECT NEW.id_product, 'quantity_max', CONVERT(OLD.quantity_max, CHAR), CONVERT(NEW.quantity_max, CHAR), NEW.id_change_set - WHERE NOT OLD.quantity_max <=> NEW.quantity_max - UNION - -- Changed quantity_step - SELECT NEW.id_product, 'quantity_step', CONVERT(OLD.quantity_step, CHAR), CONVERT(NEW.quantity_step, CHAR), NEW.id_change_set - WHERE NOT OLD.quantity_step <=> NEW.quantity_step - UNION - -- Changed quantity_stock - SELECT NEW.id_product, 'quantity_stock', CONVERT(OLD.quantity_stock, CHAR), CONVERT(NEW.quantity_stock, CHAR), NEW.id_change_set - WHERE NOT OLD.quantity_stock <=> NEW.quantity_stock - UNION - -- Changed is_subscription - SELECT NEW.id_product, 'is_subscription', CONVERT(CONVERT(OLD.is_subscription, SIGNED), CHAR), CONVERT(CONVERT(NEW.is_subscription, SIGNED), CHAR), NEW.id_change_set - WHERE NOT OLD.is_subscription <=> NEW.is_subscription - UNION - -- Changed id_unit_measurement_interval_recurrence - SELECT NEW.id_product, 'id_unit_measurement_interval_recurrence', CONVERT(OLD.id_unit_measurement_interval_recurrence, CHAR), CONVERT(NEW.id_unit_measurement_interval_recurrence, CHAR), NEW.id_change_set - WHERE NOT OLD.id_unit_measurement_interval_recurrence <=> NEW.id_unit_measurement_interval_recurrence - UNION - -- Changed count_interval_recurrence - SELECT NEW.id_product, 'count_interval_recurrence', CONVERT(OLD.count_interval_recurrence, CHAR), CONVERT(NEW.count_interval_recurrence, CHAR), NEW.id_change_set - WHERE NOT OLD.count_interval_recurrence <=> NEW.count_interval_recurrence - UNION - -- Changed id_stripe_product - SELECT NEW.id_product, 'id_stripe_product', OLD.id_stripe_product, NEW.id_stripe_product, NEW.id_change_set - WHERE NOT OLD.id_stripe_product <=> NEW.id_stripe_product - / - UNION - -- Changed id_stripe_price - SELECT NEW.id_product, 'id_stripe_price', OLD.id_stripe_price, NEW.id_stripe_price, NEW.id_change_set - WHERE NOT OLD.id_stripe_price <=> NEW.id_stripe_price - */ - UNION - -- Changed id_access_level_required - SELECT NEW.id_product, 'id_access_level_required', CONVERT(OLD.id_access_level_required, CHAR), CONVERT(NEW.id_access_level_required, CHAR), NEW.id_change_set - WHERE NOT OLD.id_access_level_required <=> NEW.id_access_level_required - UNION - -- Changed active - SELECT NEW.id_product, 'active', CONVERT(CONVERT(OLD.active, SIGNED), CHAR), CONVERT(CONVERT(NEW.active, SIGNED), CHAR), NEW.id_change_set - WHERE NOT (OLD.active <=> NEW.active) - UNION - -- Changed display_order - SELECT NEW.id_product, 'display_order', CONVERT(OLD.display_order, CHAR), CONVERT(NEW.display_order, CHAR), NEW.id_change_set - WHERE NOT OLD.display_order <=> NEW.display_order - ; - - RETURN NEW; -END; -$$ LANGUAGE plpgsql; - -CREATE OR REPLACE TRIGGER tri_before_update_Shop_Product -BEFORE UPDATE ON Shop_Product -FOR EACH ROW -EXECUTE FUNCTION before_update_Shop_Product(); - --- Shop Variation Type - -CREATE OR REPLACE FUNCTION before_insert_Shop_Variation_Type() -RETURNS TRIGGER AS $$ -BEGIN - NEW.created_on = CURRENT_TIMESTAMP; - NEW.created_by = CURRENT_USER; - - RETURN NEW; -END; -$$ LANGUAGE plpgsql; - -CREATE OR REPLACE TRIGGER tri_before_insert_Shop_Variation_Type -BEFORE INSERT ON Shop_Variation_Type -FOR EACH ROW -EXECUTE FUNCTION before_insert_Shop_Variation_Type(); - - -CREATE OR REPLACE FUNCTION before_update_Shop_Variation_Type() -RETURNS TRIGGER AS $$ -BEGIN - IF OLD.id_change_set IS NOT DISTINCT FROM NEW.id_change_set THEN - RAISE EXCEPTION 'New change Set ID must be provided.' - USING ERRCODE = '45000'; - END IF; - - INSERT INTO Shop_Variation_Type_Audit ( - id_type, - name_field, - value_prev, - value_new, - id_change_set - ) - -- Changed code - SELECT NEW.id_type, 'code', OLD.code, NEW.code, NEW.id_change_set - WHERE NOT OLD.code <=> NEW.code - UNION - -- Changed name - SELECT NEW.id_type, 'name', OLD.name, NEW.name, NEW.id_change_set - WHERE NOT OLD.name <=> NEW.name - UNION - -- Changed name_plural - SELECT NEW.id_type, 'name_plural', OLD.name_plural, NEW.name_plural, NEW.id_change_set - WHERE NOT OLD.name_plural <=> NEW.name_plural - UNION - -- Changed active - SELECT NEW.id_type, 'active', CONVERT(CONVERT(OLD.active, SIGNED), CHAR), CONVERT(CONVERT(NEW.active, SIGNED), CHAR), NEW.id_change_set - WHERE NOT (OLD.active <=> NEW.active) - UNION - -- Changed display_order - SELECT NEW.id_type, 'display_order', CONVERT(OLD.display_order, CHAR), CONVERT(NEW.display_order, CHAR), NEW.id_change_set - WHERE NOT (OLD.display_order <=> NEW.display_order) - ; - - RETURN NEW; -END; -$$ LANGUAGE plpgsql; - -CREATE OR REPLACE TRIGGER tri_before_update_Shop_Variation_Type -BEFORE UPDATE ON Shop_Variation_Type -FOR EACH ROW -EXECUTE FUNCTION before_update_Shop_Variation_Type(); - --- Shop Variation - -CREATE OR REPLACE FUNCTION before_insert_Shop_Variation() -RETURNS TRIGGER AS $$ -BEGIN - NEW.created_on = CURRENT_TIMESTAMP; - NEW.created_by = CURRENT_USER; - - RETURN NEW; -END; -$$ LANGUAGE plpgsql; - -CREATE OR REPLACE TRIGGER tri_before_insert_Shop_Variation -BEFORE INSERT ON Shop_Variation -FOR EACH ROW -EXECUTE FUNCTION before_insert_Shop_Variation(); - - -CREATE OR REPLACE FUNCTION before_update_Shop_Variation() -RETURNS TRIGGER AS $$ -BEGIN - IF OLD.id_change_set IS NOT DISTINCT FROM NEW.id_change_set THEN - RAISE EXCEPTION 'New change Set ID must be provided.' - USING ERRCODE = '45000'; - END IF; - - INSERT INTO Shop_Variation_Audit ( - id_variation, - name_field, - value_prev, - value_new, - id_change_set - ) - -- Changed code - SELECT NEW.id_variation, 'code', OLD.code, NEW.code, NEW.id_change_set - WHERE NOT OLD.code <=> NEW.code - UNION - -- Changed name - SELECT NEW.id_variation, 'name', OLD.name, NEW.name, NEW.id_change_set - WHERE NOT OLD.name <=> NEW.name - UNION - -- Changed active - SELECT NEW.id_variation, 'active', CONVERT(CONVERT(OLD.active, SIGNED), CHAR), CONVERT(CONVERT(NEW.active, SIGNED), CHAR), NEW.id_change_set - WHERE NOT (OLD.active <=> NEW.active) - UNION - -- Changed display_order - SELECT NEW.id_variation, 'display_order', CONVERT(OLD.display_order, CHAR), CONVERT(NEW.display_order, CHAR), NEW.id_change_set - WHERE NOT (OLD.display_order <=> NEW.display_order) - ; - - RETURN NEW; -END; -$$ LANGUAGE plpgsql; - -CREATE OR REPLACE TRIGGER tri_before_update_Shop_Variation -BEFORE UPDATE ON Shop_Variation -FOR EACH ROW -EXECUTE FUNCTION before_update_Shop_Variation(); - --- Shop Product Permutation - -CREATE OR REPLACE FUNCTION before_insert_Shop_Product_Permutation() -RETURNS TRIGGER AS $$ -BEGIN - IF NEW.created_on IS NULL THEN - NEW.created_on = CURRENT_TIMESTAMP; - END IF; - IF NEW.created_by IS NULL THEN - NEW.created_by = CURRENT_USER; - END IF; - - RETURN NEW; -END; -$$ LANGUAGE plpgsql; - -CREATE OR REPLACE TRIGGER tri_before_insert_Shop_Product_Permutation -BEFORE INSERT ON Shop_Product_Permutation -FOR EACH ROW -EXECUTE FUNCTION before_insert_Shop_Product_Permutation(); - - -CREATE OR REPLACE FUNCTION before_update_Shop_Product_Permutation() -RETURNS TRIGGER AS $$ -BEGIN - IF OLD.id_change_set IS NOT DISTINCT FROM NEW.id_change_set THEN - RAISE EXCEPTION 'New change Set ID must be provided.' - USING ERRCODE = '45000'; - END IF; - - INSERT INTO Shop_Product_Permutation_Audit ( - id_permutation, - name_field, - value_prev, - value_new, - id_change_set - ) - /* - -- Changed id_product - SELECT NEW.id_permutation, 'id_product', OLD.id_product, NEW.id_product, NEW.id_change_set - WHERE NOT OLD.id_product <=> NEW.id_product - UNION - -- Changed id_variation - SELECT NEW.id_permutation, 'id_variation', OLD.id_variation, NEW.id_variation, NEW.id_change_set - WHERE NOT OLD.id_variation <=> NEW.id_variation - UNION - -- Changed name - SELECT NEW.id_permutation, 'name', OLD.name, NEW.name, NEW.id_change_set - WHERE NOT (OLD.name <=> NEW.name) - UNION - */ - -- Changed description - SELECT NEW.id_permutation, 'description', OLD.description, NEW.description, NEW.id_change_set - WHERE NOT (OLD.description <=> NEW.description) - UNION - -- Changed cost_local - SELECT NEW.id_permutation, 'cost_local', CONVERT(OLD.cost_local, CHAR), CONVERT(NEW.cost_local, CHAR), NEW.id_change_set - WHERE NOT (OLD.cost_local <=> NEW.cost_local) - UNION - -- Changed id_currency_cost - SELECT NEW.id_permutation, 'id_currency_cost', CONVERT(OLD.id_currency_cost, CHAR), CONVERT(NEW.id_currency_cost, CHAR), NEW.id_change_set - WHERE NOT (OLD.id_currency_cost <=> NEW.id_currency_cost) - UNION - -- Changed profit_local_min - SELECT NEW.id_permutation, 'profit_local_min', CONVERT(OLD.profit_local_min, CHAR), CONVERT(NEW.profit_local_min, CHAR), NEW.id_change_set - WHERE NOT (OLD.profit_local_min <=> NEW.profit_local_min) - UNION - /* - -- Changed id_currency_profit_min - SELECT NEW.id_permutation, 'id_currency_profit_min', CONVERT(OLD.id_currency_profit_min, CHAR), CONVERT(NEW.id_currency_profit_min, CHAR), NEW.id_change_set - WHERE NOT (OLD.id_currency_profit_min <=> NEW.id_currency_profit_min) - UNION - */ - /* - -- Changed price_GBP_min - SELECT NEW.id_permutation, 'price_GBP_min', CONVERT(OLD.price_GBP_min, CHAR), CONVERT(NEW.price_GBP_min, CHAR), NEW.id_change_set - WHERE NOT (OLD.price_GBP_min <=> NEW.price_GBP_min) - UNION - */ - -- Changed latency_manufacture - SELECT NEW.id_product, 'latency_manufacture', CONVERT(OLD.latency_manufacture, CHAR), CONVERT(NEW.latency_manufacture, CHAR), NEW.id_change_set - WHERE NOT OLD.latency_manufacture <=> NEW.latency_manufacture - UNION - -- Changed quantity_min - SELECT NEW.id_product, 'quantity_min', CONVERT(OLD.quantity_min, CHAR), CONVERT(NEW.quantity_min, CHAR), NEW.id_change_set - WHERE NOT OLD.quantity_min <=> NEW.quantity_min - UNION - -- Changed quantity_max - SELECT NEW.id_product, 'quantity_max', CONVERT(OLD.quantity_max, CHAR), CONVERT(NEW.quantity_max, CHAR), NEW.id_change_set - WHERE NOT OLD.quantity_max <=> NEW.quantity_max - UNION - -- Changed quantity_step - SELECT NEW.id_product, 'quantity_step', CONVERT(OLD.quantity_step, CHAR), CONVERT(NEW.quantity_step, CHAR), NEW.id_change_set - WHERE NOT OLD.quantity_step <=> NEW.quantity_step - UNION - -- Changed quantity_stock - SELECT NEW.id_product, 'quantity_stock', CONVERT(OLD.quantity_stock, CHAR), CONVERT(NEW.quantity_stock, CHAR), NEW.id_change_set - WHERE NOT OLD.quantity_stock <=> NEW.quantity_stock - UNION - -- Changed is_subscription - SELECT NEW.id_product, 'is_subscription', CONVERT(CONVERT(OLD.is_subscription, SIGNED), CHAR), CONVERT(CONVERT(NEW.is_subscription, SIGNED), CHAR), NEW.id_change_set - WHERE NOT OLD.is_subscription <=> NEW.is_subscription - UNION - -- Changed id_unit_measurement_interval_recurrence - SELECT NEW.id_product, 'id_unit_measurement_interval_recurrence', CONVERT(OLD.id_unit_measurement_interval_recurrence, CHAR), CONVERT(NEW.id_unit_measurement_interval_recurrence, CHAR), NEW.id_change_set - WHERE NOT OLD.id_unit_measurement_interval_recurrence <=> NEW.id_unit_measurement_interval_recurrence - UNION - -- Changed count_interval_recurrence - SELECT NEW.id_product, 'count_interval_recurrence', CONVERT(OLD.count_interval_recurrence, CHAR), CONVERT(NEW.count_interval_recurrence, CHAR), NEW.id_change_set - WHERE NOT OLD.count_interval_recurrence <=> NEW.count_interval_recurrence - UNION - -- Changed id_stripe_product - SELECT NEW.id_permutation, 'id_stripe_product', OLD.id_stripe_product, NEW.id_stripe_product, NEW.id_change_set - WHERE NOT (OLD.id_stripe_product <=> NEW.id_stripe_product) - UNION - -- Changed active - SELECT NEW.id_permutation, 'active', CONVERT(CONVERT(OLD.active, SIGNED), CHAR), CONVERT(CONVERT(NEW.active, SIGNED), CHAR), NEW.id_change_set - WHERE NOT (OLD.active <=> NEW.active) - UNION - -- Changed display_order - SELECT NEW.id_permutation, 'display_order', CONVERT(OLD.display_order, CHAR), CONVERT(NEW.display_order, CHAR), NEW.id_change_set - WHERE NOT (OLD.display_order <=> NEW.display_order) - ; - - RETURN NEW; -END; -$$ LANGUAGE plpgsql; - -CREATE OR REPLACE TRIGGER tri_before_update_Shop_Product_Permutation -BEFORE UPDATE ON Shop_Product_Permutation -FOR EACH ROW -EXECUTE FUNCTION before_update_Shop_Product_Permutation(); - --- Shop Product Permutation Variation Link - -CREATE OR REPLACE FUNCTION before_insert_Shop_Product_Permutation_Variation_Link() -RETURNS TRIGGER AS $$ -BEGIN - IF NEW.created_on IS NULL THEN - NEW.created_on = CURRENT_TIMESTAMP; - END IF; - IF NEW.created_by IS NULL THEN - NEW.created_by = CURRENT_USER; - END IF; - - RETURN NEW; -END; -$$ LANGUAGE plpgsql; - -CREATE OR REPLACE TRIGGER tri_before_insert_Shop_Product_Permutation_Variation_Link -BEFORE INSERT ON Shop_Product_Permutation_Variation_Link -FOR EACH ROW -EXECUTE FUNCTION before_insert_Shop_Product_Permutation_Variation_Link(); - - -CREATE OR REPLACE FUNCTION before_update_Shop_Product_Permutation_Variation_Link() -RETURNS TRIGGER AS $$ -BEGIN - IF OLD.id_change_set IS NOT DISTINCT FROM NEW.id_change_set THEN - RAISE EXCEPTION 'New change Set ID must be provided.' - USING ERRCODE = '45000'; - END IF; - - INSERT INTO Shop_Product_Permutation_Variation_Link_Audit ( - id_link, - name_field, - value_prev, - value_new, - id_change_set - ) - /* - -- Changed id_product - SELECT NEW.id_link, 'id_product', OLD.id_product, NEW.id_product, NEW.id_change_set - WHERE NOT OLD.id_product <=> NEW.id_product - UNION - -- Changed id_variation - SELECT NEW.id_link, 'id_variation', OLD.id_variation, NEW.id_variation, NEW.id_change_set - WHERE NOT OLD.id_variation <=> NEW.id_variation - UNION - */ - -- Changed active - SELECT NEW.id_link, 'active', CONVERT(CONVERT(OLD.active, SIGNED), CHAR), CONVERT(CONVERT(NEW.active, SIGNED), CHAR), NEW.id_change_set - WHERE NOT (OLD.active <=> NEW.active) - UNION - -- Changed display_order - SELECT NEW.id_link, 'display_order', CONVERT(OLD.display_order, CHAR), CONVERT(NEW.display_order, CHAR), NEW.id_change_set - WHERE NOT (OLD.display_order <=> NEW.display_order) - ; - - RETURN NEW; -END; -$$ LANGUAGE plpgsql; - -CREATE OR REPLACE TRIGGER tri_before_update_Shop_Product_Permutation_Variation_Link -BEFORE UPDATE ON Shop_Product_Permutation_Variation_Link -FOR EACH ROW -EXECUTE FUNCTION before_update_Shop_Product_Permutation_Variation_Link(); - --- Shop Product Currency Region Link - -CREATE OR REPLACE FUNCTION before_insert_Shop_Product_Currency_Region_Link() -RETURNS TRIGGER AS $$ -BEGIN - IF NEW.created_on IS NULL THEN - NEW.created_on = CURRENT_TIMESTAMP; - END IF; - IF NEW.created_by IS NULL THEN - NEW.created_by = CURRENT_USER; - END IF; - /* - NEW.price_local = ( - SELECT PP.price_GBP_full * C.factor_from_GBP - FROM Shop_Product_Permutation PP - INNER JOIN Shop_Product P ON PP.id_product = P.id_product - INNER JOIN Shop_Currency C ON NEW.id_currency = C.id_currency - WHERE NEW.id_product = P.id_product - LIMIT 1 - ); - */ - - RETURN NEW; -END; -$$ LANGUAGE plpgsql; - -CREATE OR REPLACE TRIGGER tri_before_insert_Shop_Product_Currency_Region_Link -BEFORE INSERT ON Shop_Product_Currency_Region_Link -FOR EACH ROW -EXECUTE FUNCTION before_insert_Shop_Product_Currency_Region_Link(); - - -CREATE OR REPLACE FUNCTION before_update_Shop_Product_Currency_Region_Link() -RETURNS TRIGGER AS $$ -BEGIN - IF OLD.id_change_set IS NOT DISTINCT FROM NEW.id_change_set THEN - RAISE EXCEPTION 'New change Set ID must be provided.' - USING ERRCODE = '45000'; - END IF; - - /* - NEW.price_local = ( - SELECT P.price_GBP_full * C.factor_from_GBP - FROM Shop_Product P - INNER JOIN Shop_Currency C ON NEW.id_currency = C.id_currency - WHERE NEW.id_product = P.id_product - LIMIT 1 - ); - */ - - INSERT INTO Shop_Product_Currency_Region_Link_Audit ( - id_link, - name_field, - value_prev, - value_new, - id_change_set - ) - /* - -- Changed id_product - SELECT NEW.id_link, 'id_product', CONVERT(OLD.id_product, CHAR), CONVERT(NEW.id_product, CHAR), NEW.id_change_set - WHERE NOT OLD.id_product <=> NEW.id_product - UNION - -- Changed id_currency - SELECT NEW.id_link, 'id_currency', CONVERT(OLD.id_currency, CHAR), CONVERT(NEW.id_currency, CHAR), NEW.id_change_set - WHERE NOT OLD.id_currency <=> NEW.id_currency - UNION - -- Changed price_local - SELECT NEW.id_link, 'price_local', OLD.price_local, NEW.price_local, NEW.id_change_set - WHERE NOT OLD.price_local <=> NEW.price_local - UNION - */ - -- Changed price_local_VAT_incl - SELECT NEW.id_link, 'price_local_VAT_incl', OLD.price_local_VAT_incl, NEW.price_local_VAT_incl, NEW.id_change_set - WHERE NOT OLD.price_local_VAT_incl <=> NEW.price_local_VAT_incl - UNION - -- Changed price_local_VAT_excl - SELECT NEW.id_link, 'price_local_VAT_excl', OLD.price_local_VAT_excl, NEW.price_local_VAT_excl, NEW.id_change_set - WHERE NOT OLD.price_local_VAT_excl <=> NEW.price_local_VAT_excl - UNION - -- Changed id_stripe_price - SELECT NEW.id_link, 'id_stripe_price', OLD.id_stripe_price, NEW.id_stripe_price, NEW.id_change_set - WHERE NOT OLD.id_stripe_price <=> NEW.id_stripe_price - UNION - -- Changed active - SELECT NEW.id_link, 'active', CONVERT(CONVERT(OLD.active, SIGNED), CHAR), CONVERT(CONVERT(NEW.active, SIGNED), CHAR), NEW.id_change_set - WHERE NOT (OLD.active <=> NEW.active) - ; - - RETURN NEW; -END; -$$ LANGUAGE plpgsql; - -CREATE OR REPLACE TRIGGER tri_before_update_Shop_Product_Currency_Region_Link -BEFORE UPDATE ON Shop_Product_Currency_Region_Link -FOR EACH ROW -EXECUTE FUNCTION before_update_Shop_Product_Currency_Region_Link(); - --- Shop Image Type - -CREATE OR REPLACE FUNCTION before_insert_Shop_Image_Type() -RETURNS TRIGGER AS $$ -BEGIN - NEW.created_on = CURRENT_TIMESTAMP; - NEW.created_by = CURRENT_USER; - - RETURN NEW; -END; -$$ LANGUAGE plpgsql; - -CREATE OR REPLACE TRIGGER tri_before_insert_Shop_Image_Type -BEFORE INSERT ON Shop_Image_Type -FOR EACH ROW -EXECUTE FUNCTION before_insert_Shop_Image_Type(); - - -CREATE OR REPLACE FUNCTION before_update_Shop_Image_Type() -RETURNS TRIGGER AS $$ -BEGIN - IF OLD.id_change_set IS NOT DISTINCT FROM NEW.id_change_set THEN - RAISE EXCEPTION 'New change Set ID must be provided.' - USING ERRCODE = '45000'; - END IF; - - INSERT INTO Shop_Image_Type_Audit ( - id_type, - name_field, - value_prev, - value_new, - id_change_set - ) - -- Changed code - SELECT NEW.id_type, 'code', OLD.code, NEW.code, NEW.id_change_set - WHERE NOT OLD.code <=> NEW.code - UNION - -- Changed name - SELECT NEW.id_type, 'name', OLD.name, NEW.name, NEW.id_change_set - WHERE NOT OLD.name <=> NEW.name - UNION - -- Changed name_plural - SELECT NEW.id_type, 'name_plural', OLD.name_plural, NEW.name_plural, NEW.id_change_set - WHERE NOT OLD.name_plural <=> NEW.name_plural - UNION - -- Changed active - SELECT NEW.id_type, 'active', CONVERT(CONVERT(OLD.active, SIGNED), CHAR), CONVERT(CONVERT(NEW.active, SIGNED), CHAR), NEW.id_change_set - WHERE NOT (OLD.active <=> NEW.active) - UNION - -- Changed display_order - SELECT NEW.id_type, 'display_order', CONVERT(OLD.display_order, CHAR), CONVERT(NEW.display_order, CHAR), NEW.id_change_set - WHERE NOT (OLD.display_order <=> NEW.display_order) - ; - - RETURN NEW; -END; -$$ LANGUAGE plpgsql; - -CREATE OR REPLACE TRIGGER tri_before_update_Shop_Image_Type -BEFORE UPDATE ON Shop_Image_Type -FOR EACH ROW -EXECUTE FUNCTION before_update_Shop_Image_Type(); - --- Shop Image - -CREATE OR REPLACE FUNCTION before_insert_Shop_Image() -RETURNS TRIGGER AS $$ -BEGIN - NEW.created_on = CURRENT_TIMESTAMP; - NEW.created_by = CURRENT_USER; - - RETURN NEW; -END; -$$ LANGUAGE plpgsql; - -CREATE OR REPLACE TRIGGER tri_before_insert_Shop_Image -BEFORE INSERT ON Shop_Image -FOR EACH ROW -EXECUTE FUNCTION before_insert_Shop_Image(); - - -CREATE OR REPLACE FUNCTION before_update_Shop_Image() -RETURNS TRIGGER AS $$ -BEGIN - IF OLD.id_change_set IS NOT DISTINCT FROM NEW.id_change_set THEN - RAISE EXCEPTION 'New change Set ID must be provided.' - USING ERRCODE = '45000'; - END IF; - IF ISNULL(NEW.id_product) AND ISNULL(NEW.id_permutation) THEN - RAISE EXCEPTION 'Image must NOT have ID for product AND product permutation.' - USING ERRCODE = '45000'; - END IF; - - INSERT INTO Shop_Image_Audit ( - id_image, - name_field, - value_prev, - value_new, - id_change_set - ) - -- Changed id_type_image - SELECT NEW.id_image, 'id_type_image', CONVERT(OLD.id_type_image, CHAR), CONVERT(NEW.id_type_image, CHAR), NEW.id_change_set - WHERE NOT OLD.id_type_image <=> NEW.id_type_image - UNION - -- Changed id_type_file - SELECT NEW.id_image, 'id_type_file', CONVERT(OLD.id_type_file, CHAR), CONVERT(NEW.id_type_file, CHAR), NEW.id_change_set - WHERE NOT OLD.id_type_file <=> NEW.id_type_file - UNION - -- Changed id_product - SELECT NEW.id_image, 'id_product', CONVERT(OLD.id_product, CHAR), CONVERT(NEW.id_product, CHAR), NEW.id_change_set - WHERE NOT OLD.id_product <=> NEW.id_product - UNION - -- Changed id_permutation - SELECT NEW.id_image, 'id_permutation', CONVERT(OLD.id_permutation, CHAR), CONVERT(NEW.id_permutation, CHAR), NEW.id_change_set - WHERE NOT OLD.id_permutation <=> NEW.id_permutation - UNION - -- Changed url - SELECT NEW.id_image, 'url', OLD.url, NEW.url, NEW.id_change_set - WHERE NOT OLD.url <=> NEW.url - UNION - -- Changed active - SELECT NEW.id_image, 'active', CONVERT(CONVERT(OLD.active, SIGNED), CHAR), CONVERT(CONVERT(NEW.active, SIGNED), CHAR), NEW.id_change_set - WHERE NOT (OLD.active <=> NEW.active) - UNION - -- Changed display_order - SELECT NEW.id_image, 'display_order', CONVERT(OLD.display_order, CHAR), CONVERT(NEW.display_order, CHAR), NEW.id_change_set - WHERE NOT (OLD.display_order <=> NEW.display_order) - ; - - RETURN NEW; -END; -$$ LANGUAGE plpgsql; - -CREATE OR REPLACE TRIGGER tri_before_update_Shop_Image -BEFORE UPDATE ON Shop_Image -FOR EACH ROW -EXECUTE FUNCTION before_update_Shop_Image(); - --- Shop Delivery Option Type - -CREATE OR REPLACE FUNCTION before_insert_Shop_Delivery_Option() -RETURNS TRIGGER AS $$ -BEGIN - NEW.created_on = CURRENT_TIMESTAMP; - NEW.created_by = CURRENT_USER; - - RETURN NEW; -END; -$$ LANGUAGE plpgsql; - -CREATE OR REPLACE TRIGGER tri_before_insert_Shop_Delivery_Option -BEFORE INSERT ON Shop_Delivery_Option -FOR EACH ROW -EXECUTE FUNCTION before_insert_Shop_Delivery_Option(); - - -CREATE OR REPLACE FUNCTION before_update_Shop_Delivery_Option() -RETURNS TRIGGER AS $$ -BEGIN - IF OLD.id_change_set IS NOT DISTINCT FROM NEW.id_change_set THEN - RAISE EXCEPTION 'New change Set ID must be provided.' - USING ERRCODE = '45000'; - END IF; - - INSERT INTO Shop_Delivery_Option_Audit ( - id_option, - name_field, - value_prev, - value_new, - id_change_set - ) - -- Changed code - SELECT NEW.id_option, 'code', OLD.code, NEW.code, NEW.id_change_set - WHERE NOT OLD.code <=> NEW.code - UNION - -- Changed name - SELECT NEW.id_option, 'name', OLD.name, NEW.name, NEW.id_change_set - WHERE NOT OLD.name <=> NEW.name - UNION - -- Changed latency_delivery_min - SELECT NEW.id_option, 'latency_delivery_min', CONVERT(OLD.latency_delivery_min, CHAR), CONVERT(NEW.latency_delivery_min, CHAR), NEW.id_change_set - WHERE NOT OLD.latency_delivery_min <=> NEW.latency_delivery_min - UNION - -- Changed latency_delivery_max - SELECT NEW.id_option, 'latency_delivery_max', CONVERT(OLD.latency_delivery_max, CHAR), CONVERT(NEW.latency_delivery_max, CHAR), NEW.id_change_set - WHERE NOT OLD.latency_delivery_max <=> NEW.latency_delivery_max - UNION - -- Changed quantity_min - SELECT NEW.id_option, 'quantity_min', CONVERT(OLD.quantity_min, CHAR), CONVERT(NEW.quantity_min, CHAR), NEW.id_change_set - WHERE NOT OLD.quantity_min <=> NEW.quantity_min - UNION - -- Changed quantity_max - SELECT NEW.id_option, 'quantity_max', CONVERT(OLD.quantity_max, CHAR), CONVERT(NEW.quantity_max, CHAR), NEW.id_change_set - WHERE NOT OLD.quantity_max <=> NEW.quantity_max - UNION - -- Changed active - SELECT NEW.id_option, 'active', CONVERT(OLD.active, CHAR), CONVERT(NEW.active, CHAR), NEW.id_change_set - WHERE NOT OLD.active <=> NEW.active - UNION - -- Changed display_order - SELECT NEW.id_option, 'display_order', CONVERT(OLD.display_order, CHAR), CONVERT(NEW.display_order, CHAR), NEW.id_change_set - WHERE NOT OLD.display_order <=> NEW.display_order - ; - - RETURN NEW; -END; -$$ LANGUAGE plpgsql; - -CREATE OR REPLACE TRIGGER tri_before_update_Shop_Delivery_Option -BEFORE UPDATE ON Shop_Delivery_Option -FOR EACH ROW -EXECUTE FUNCTION before_update_Shop_Delivery_Option(); - --- Shop Product Delivery Option Link - -CREATE OR REPLACE FUNCTION before_insert_Shop_Product_Permutation_Delivery_Option_Link() -RETURNS TRIGGER AS $$ -BEGIN - IF NEW.created_on IS NULL THEN - NEW.created_on = CURRENT_TIMESTAMP; - END IF; - IF NEW.created_by IS NULL THEN - NEW.created_by = CURRENT_USER; - END IF; - - RETURN NEW; -END; -$$ LANGUAGE plpgsql; - -CREATE OR REPLACE TRIGGER tri_before_insert_Shop_Product_Permutation_Delivery_Option_Link -BEFORE INSERT ON Shop_Product_Permutation_Delivery_Option_Link -FOR EACH ROW -EXECUTE FUNCTION before_insert_Shop_Product_Permutation_Delivery_Option_Link(); - - -CREATE OR REPLACE FUNCTION before_update_Shop_Product_Permutation_Delivery_Option_Link() -RETURNS TRIGGER AS $$ -BEGIN - IF OLD.id_change_set IS NOT DISTINCT FROM NEW.id_change_set THEN - RAISE EXCEPTION 'New change Set ID must be provided.' - USING ERRCODE = '45000'; - END IF; - - INSERT INTO Shop_Product_Permutation_Delivery_Option_Link_Audit ( - id_link, - name_field, - value_prev, - value_new, - id_change_set - ) - /* - -- Changed id_product - SELECT NEW.id_link, 'id_product', CONVERT(OLD.id_product, CHAR), CONVERT(NEW.id_product, CHAR), NEW.id_change_set - WHERE NOT OLD.id_product <=> NEW.id_product - UNION - -- Changed id_permutation - SELECT NEW.id_link, 'id_permutation', CONVERT(OLD.id_permutation, CHAR), CONVERT(NEW.id_permutation, CHAR), NEW.id_change_set - WHERE NOT OLD.id_permutation <=> NEW.id_permutation - UNION - -- Changed id_option - SELECT NEW.id_link, 'id_option', CONVERT(OLD.id_option, CHAR), CONVERT(NEW.id_option, CHAR), NEW.id_change_set - WHERE NOT OLD.id_option <=> NEW.id_option - UNION - -- Changed id_region - SELECT NEW.id_link, 'id_region', CONVERT(OLD.id_region, CHAR), CONVERT(NEW.id_region, CHAR), NEW.id_change_set - WHERE NOT OLD.id_region <=> NEW.id_region - UNION - */ - -- Changed price_local - SELECT NEW.id_link, 'price_local', CONVERT(OLD.price_local, CHAR), CONVERT(NEW.price_local, CHAR), NEW.id_change_set - WHERE NOT OLD.price_local <=> NEW.price_local - UNION - -- Changed active - SELECT NEW.id_link, 'active', CONVERT(CONVERT(OLD.active, SIGNED), CHAR), CONVERT(CONVERT(NEW.active, SIGNED), CHAR), NEW.id_change_set - WHERE NOT (OLD.active <=> NEW.active) - UNION - -- Changed display_order - SELECT NEW.id_link, 'display_order', CONVERT(OLD.display_order, CHAR), CONVERT(NEW.display_order, CHAR), NEW.id_change_set - WHERE NOT (OLD.display_order <=> NEW.display_order) - ; - - RETURN NEW; -END; -$$ LANGUAGE plpgsql; - -CREATE OR REPLACE TRIGGER tri_before_update_Shop_Product_Permutation_Delivery_Option_Link -BEFORE UPDATE ON Shop_Product_Permutation_Delivery_Option_Link -FOR EACH ROW -EXECUTE FUNCTION before_update_Shop_Product_Permutation_Delivery_Option_Link(); - --- Shop Discount - -CREATE OR REPLACE FUNCTION before_insert_Shop_Discount() -RETURNS TRIGGER AS $$ -BEGIN - NEW.created_on = CURRENT_TIMESTAMP; - NEW.created_by = CURRENT_USER; - - RETURN NEW; -END; -$$ LANGUAGE plpgsql; - -CREATE OR REPLACE TRIGGER tri_before_insert_Shop_Discount -BEFORE INSERT ON Shop_Discount -FOR EACH ROW -EXECUTE FUNCTION before_insert_Shop_Discount(); - - -CREATE OR REPLACE FUNCTION before_update_Shop_Discount() -RETURNS TRIGGER AS $$ -BEGIN - IF OLD.id_change_set IS NOT DISTINCT FROM NEW.id_change_set THEN - RAISE EXCEPTION 'New change Set ID must be provided.' - USING ERRCODE = '45000'; - END IF; - - INSERT INTO Shop_Discount_Audit ( - id_discount, - name_field, - value_prev, - value_new, - id_change_set - ) - -- Changed code - SELECT NEW.id_discount, 'code', OLD.code, NEW.code, NEW.id_change_set - WHERE NOT OLD.code <=> NEW.code - UNION - -- Changed name - SELECT NEW.id_discount, 'name', OLD.name, NEW.name, NEW.id_change_set - WHERE NOT OLD.name <=> NEW.name - UNION - -- Changed multiplier - SELECT NEW.id_discount, 'multiplier', OLD.multiplier, NEW.multiplier, NEW.id_change_set - WHERE NOT OLD.multiplier <=> NEW.multiplier - UNION - -- Changed subtractor - SELECT NEW.id_discount, 'subtractor', OLD.subtractor, NEW.subtractor, NEW.id_change_set - WHERE NOT OLD.subtractor <=> NEW.subtractor - UNION - -- Changed apply_multiplier_first - SELECT NEW.id_discount, 'apply_multiplier_first', CONVERT(CONVERT(OLD.apply_multiplier_first, SIGNED), CHAR), CONVERT(CONVERT(NEW.apply_multiplier_first, SIGNED), CHAR), NEW.id_change_set - WHERE NOT OLD.apply_multiplier_first <=> NEW.apply_multiplier_first - UNION - -- Changed quantity_min - SELECT NEW.id_discount, 'quantity_min', OLD.quantity_min, NEW.quantity_min, NEW.id_change_set - WHERE NOT OLD.quantity_min <=> NEW.quantity_min - UNION - -- Changed quantity_max - SELECT NEW.id_discount, 'quantity_max', OLD.quantity_max, NEW.quantity_max, NEW.id_change_set - WHERE NOT OLD.quantity_max <=> NEW.quantity_max - UNION - -- Changed date_start - SELECT NEW.id_discount, 'date_start', OLD.date_start, NEW.date_start, NEW.id_change_set - WHERE NOT OLD.date_start <=> NEW.date_start - UNION - -- Changed date_end - SELECT NEW.id_discount, 'date_end', OLD.date_end, NEW.date_end, NEW.id_change_set - WHERE NOT OLD.date_end <=> NEW.date_end - UNION - -- Changed display_order - SELECT NEW.id_discount, 'display_order', CONVERT(OLD.display_order, CHAR), CONVERT(NEW.display_order, CHAR), NEW.id_change_set - WHERE NOT OLD.display_order <=> NEW.display_order - UNION - -- Changed active - SELECT NEW.id_discount, 'active', CONVERT(CONVERT(OLD.active, SIGNED), CHAR), CONVERT(CONVERT(NEW.active, SIGNED), CHAR), NEW.id_change_set - WHERE NOT OLD.active <=> NEW.active - ; - - RETURN NEW; -END; -$$ LANGUAGE plpgsql; - -CREATE OR REPLACE TRIGGER tri_before_update_Shop_Discount -BEFORE UPDATE ON Shop_Discount -FOR EACH ROW -EXECUTE FUNCTION before_update_Shop_Discount(); - --- Shop Discount Region Currency Link - -CREATE OR REPLACE FUNCTION before_insert_Shop_Discount_Region_Currency_Link() -RETURNS TRIGGER AS $$ -BEGIN - IF NEW.created_on IS NULL THEN - NEW.created_on = CURRENT_TIMESTAMP; - END IF; - IF NEW.created_by IS NULL THEN - NEW.created_by = CURRENT_USER; - END IF; - - RETURN NEW; -END; -$$ LANGUAGE plpgsql; - -CREATE OR REPLACE TRIGGER tri_before_insert_Shop_Discount_Region_Currency_Link -BEFORE INSERT ON Shop_Discount_Region_Currency_Link -FOR EACH ROW -EXECUTE FUNCTION before_insert_Shop_Discount_Region_Currency_Link(); - - -CREATE OR REPLACE FUNCTION before_update_Shop_Discount_Region_Currency_Link() -RETURNS TRIGGER AS $$ -BEGIN - IF OLD.id_change_set IS NOT DISTINCT FROM NEW.id_change_set THEN - RAISE EXCEPTION 'New change Set ID must be provided.' - USING ERRCODE = '45000'; - END IF; - - INSERT INTO Shop_Discount_Region_Currency_Link_Audit ( - id_link, - name_field, - value_prev, - value_new, - id_change_set - ) - /* - -- Changed id_discount - SELECT NEW.id_link, 'id_discount', CONVERT(OLD.id_discount, CHAR), CONVERT(NEW.id_discount, CHAR), NEW.id_change_set - WHERE NOT OLD.id_discount <=> NEW.id_discount - UNION - -- Changed id_region - SELECT NEW.id_link, 'id_region', CONVERT(OLD.id_region, CHAR), CONVERT(NEW.id_region, CHAR), NEW.id_change_set - WHERE NOT OLD.id_region <=> NEW.id_region - UNION - */ - -- Changed active - SELECT NEW.id_link, 'active', CONVERT(CONVERT(OLD.active, SIGNED), CHAR), CONVERT(CONVERT(NEW.active, SIGNED), CHAR), NEW.id_change_set - WHERE NOT (OLD.active <=> NEW.active) - ; - - RETURN NEW; -END; -$$ LANGUAGE plpgsql; - -CREATE OR REPLACE TRIGGER tri_before_update_Shop_Discount_Region_Currency_Link -BEFORE UPDATE ON Shop_Discount_Region_Currency_Link -FOR EACH ROW -EXECUTE FUNCTION before_update_Shop_Discount_Region_Currency_Link(); - --- Shop Permission Group - -CREATE OR REPLACE FUNCTION before_insert_Shop_Permission_Group() -RETURNS TRIGGER AS $$ -BEGIN - IF NEW.created_on IS NULL THEN - NEW.created_on = CURRENT_TIMESTAMP; - END IF; - IF NEW.created_by IS NULL THEN - NEW.created_by = CURRENT_USER; - END IF; - - RETURN NEW; -END; -$$ LANGUAGE plpgsql; - -CREATE OR REPLACE TRIGGER tri_before_insert_Shop_Permission_Group -BEFORE INSERT ON Shop_Permission_Group -FOR EACH ROW -EXECUTE FUNCTION before_insert_Shop_Permission_Group(); - - -CREATE OR REPLACE FUNCTION before_update_Shop_Permission_Group() -RETURNS TRIGGER AS $$ -BEGIN - IF OLD.id_change_set IS NOT DISTINCT FROM NEW.id_change_set THEN - RAISE EXCEPTION 'New change Set ID must be provided.' - USING ERRCODE = '45000'; - END IF; - - INSERT INTO Shop_Permission_Group_Audit ( - id_group, - name_field, - value_prev, - value_new, - id_change_set - ) - -- Changed code - SELECT NEW.id_group, 'code', OLD.code, NEW.code, NEW.id_change_set - WHERE NOT OLD.code <=> NEW.code - UNION - -- Changed name - SELECT NEW.id_group, 'name', OLD.name, NEW.name, NEW.id_change_set - WHERE NOT OLD.name <=> NEW.name - UNION - -- Changed active - SELECT NEW.id_group, 'active', CONVERT(CONVERT(OLD.active, SIGNED), CHAR), CONVERT(CONVERT(NEW.active, SIGNED), CHAR), NEW.id_change_set - WHERE NOT (OLD.active <=> NEW.active) - UNION - -- Changed display_order - SELECT NEW.id_group, 'display_order', CONVERT(OLD.display_order, CHAR), CONVERT(NEW.display_order, CHAR), NEW.id_change_set - WHERE NOT OLD.display_order <=> NEW.display_order - ; - - RETURN NEW; -END; -$$ LANGUAGE plpgsql; - -CREATE OR REPLACE TRIGGER tri_before_update_Shop_Permission_Group -BEFORE UPDATE ON Shop_Permission_Group -FOR EACH ROW -EXECUTE FUNCTION before_update_Shop_Permission_Group(); - --- Shop Permission - -CREATE OR REPLACE FUNCTION before_insert_Shop_Permission() -RETURNS TRIGGER AS $$ -BEGIN - IF NEW.created_on IS NULL THEN - NEW.created_on = CURRENT_TIMESTAMP; - END IF; - IF NEW.created_by IS NULL THEN - NEW.created_by = CURRENT_USER; - END IF; - - RETURN NEW; -END; -$$ LANGUAGE plpgsql; - -CREATE OR REPLACE TRIGGER tri_before_insert_Shop_Permission -BEFORE INSERT ON Shop_Permission -FOR EACH ROW -EXECUTE FUNCTION before_insert_Shop_Permission(); - - -CREATE OR REPLACE FUNCTION before_update_Shop_Permission() -RETURNS TRIGGER AS $$ -BEGIN - IF OLD.id_change_set IS NOT DISTINCT FROM NEW.id_change_set THEN - RAISE EXCEPTION 'New change Set ID must be provided.' - USING ERRCODE = '45000'; - END IF; - - INSERT INTO Shop_Permission_Audit ( - id_permission, - name_field, - value_prev, - value_new, - id_change_set - ) - -- Changed code - SELECT NEW.id_permission, 'code', OLD.code, NEW.code, NEW.id_change_set - WHERE NOT OLD.code <=> NEW.code - UNION - -- Changed name - SELECT NEW.id_permission, 'name', OLD.name, NEW.name, NEW.id_change_set - WHERE NOT OLD.name <=> NEW.name - UNION - -- Changed id_permission_group - SELECT NEW.id_permission, 'id_permission_group', CONVERT(OLD.id_permission_group, CHAR), CONVERT(NEW.id_permission_group, CHAR), NEW.id_change_set - WHERE NOT OLD.id_permission_group <=> NEW.id_permission_group - UNION - -- Changed Id_access_level_required - SELECT NEW.id_permission, 'Id_access_level_required', CONVERT(OLD.Id_access_level_required, CHAR), CONVERT(NEW.Id_access_level_required, CHAR), NEW.id_change_set - WHERE NOT OLD.Id_access_level_required <=> NEW.Id_access_level_required - UNION - -- Changed active - SELECT NEW.id_permission, 'active', CONVERT(CONVERT(OLD.active, SIGNED), CHAR), CONVERT(CONVERT(NEW.active, SIGNED), CHAR), NEW.id_change_set - WHERE NOT (OLD.active <=> NEW.active) - UNION - -- Changed display_order - SELECT NEW.id_permission, 'display_order', CONVERT(OLD.display_order, CHAR), CONVERT(NEW.display_order, CHAR), NEW.id_change_set - WHERE NOT OLD.display_order <=> NEW.display_order - ; - - RETURN NEW; -END; -$$ LANGUAGE plpgsql; - -CREATE OR REPLACE TRIGGER tri_before_update_Shop_Permission -BEFORE UPDATE ON Shop_Permission -FOR EACH ROW -EXECUTE FUNCTION before_update_Shop_Permission(); - --- Shop Role - -CREATE OR REPLACE FUNCTION before_insert_Shop_Role() -RETURNS TRIGGER AS $$ -BEGIN - IF NEW.created_on IS NULL THEN - NEW.created_on = CURRENT_TIMESTAMP; - END IF; - IF NEW.created_by IS NULL THEN - NEW.created_by = CURRENT_USER; - END IF; - - RETURN NEW; -END; -$$ LANGUAGE plpgsql; - -CREATE OR REPLACE TRIGGER tri_before_insert_Shop_Role -BEFORE INSERT ON Shop_Role -FOR EACH ROW -EXECUTE FUNCTION before_insert_Shop_Role(); - - -CREATE OR REPLACE FUNCTION before_update_Shop_Role() -RETURNS TRIGGER AS $$ -BEGIN - IF OLD.id_change_set IS NOT DISTINCT FROM NEW.id_change_set THEN - RAISE EXCEPTION 'New change Set ID must be provided.' - USING ERRCODE = '45000'; - END IF; - - INSERT INTO Shop_Role_Audit ( - id_role, - name_field, - value_prev, - value_new, - id_change_set - ) - -- Changed code - SELECT NEW.id_role, 'code', OLD.code, NEW.code, NEW.id_change_set - WHERE NOT OLD.code <=> NEW.code - UNION - -- Changed name - SELECT NEW.id_role, 'name', OLD.name, NEW.name, NEW.id_change_set - WHERE NOT OLD.name <=> NEW.name - UNION - -- Changed active - SELECT NEW.id_role, 'active', CONVERT(CONVERT(OLD.active, SIGNED), CHAR), CONVERT(CONVERT(NEW.active, SIGNED), CHAR), NEW.id_change_set - WHERE NOT (OLD.active <=> NEW.active) - UNION - -- Changed display_order - SELECT NEW.id_role, 'display_order', CONVERT(OLD.display_order, CHAR), CONVERT(NEW.display_order, CHAR), NEW.id_change_set - WHERE NOT OLD.display_order <=> NEW.display_order - ; - - RETURN NEW; -END; -$$ LANGUAGE plpgsql; - -CREATE OR REPLACE TRIGGER tri_before_update_Shop_Role -BEFORE UPDATE ON Shop_Role -FOR EACH ROW -EXECUTE FUNCTION before_update_Shop_Role(); - --- Shop Role Permission Link - -CREATE OR REPLACE FUNCTION before_insert_Shop_Role_Permission_Link() -RETURNS TRIGGER AS $$ -BEGIN - IF NEW.created_on IS NULL THEN - NEW.created_on = CURRENT_TIMESTAMP; - END IF; - IF NEW.created_by IS NULL THEN - NEW.created_by = CURRENT_USER; - END IF; - - RETURN NEW; -END; -$$ LANGUAGE plpgsql; - -CREATE OR REPLACE TRIGGER tri_before_insert_Shop_Role_Permission_Link -BEFORE INSERT ON Shop_Role_Permission_Link -FOR EACH ROW -EXECUTE FUNCTION before_insert_Shop_Role_Permission_Link(); - - -CREATE OR REPLACE FUNCTION before_update_Shop_Role_Permission_Link() -RETURNS TRIGGER AS $$ -BEGIN - IF OLD.id_change_set IS NOT DISTINCT FROM NEW.id_change_set THEN - RAISE EXCEPTION 'New change Set ID must be provided.' - USING ERRCODE = '45000'; - END IF; - - INSERT INTO Shop_Role_Permission_Link_Audit ( - id_link, - name_field, - value_prev, - value_new, - id_change_set - ) - /* - -- Changed id_role - SELECT NEW.id_link, 'id_role', CONVERT(OLD.id_role, CHAR), CONVERT(NEW.id_role, CHAR), NEW.id_change_set - WHERE NOT OLD.id_role <=> NEW.id_role - UNION - -- Changed id_permission - SELECT NEW.id_link, 'id_permission', CONVERT(OLD.id_permission, CHAR), CONVERT(NEW.id_permission, CHAR), NEW.id_change_set - WHERE NOT OLD.id_permission <=> NEW.id_permission - UNION - */ - -- Changed id_access_level - SELECT NEW.id_link, 'id_access_level', CONVERT(OLD.id_access_level, CHAR), CONVERT(NEW.id_access_level, CHAR), NEW.id_change_set - WHERE NOT OLD.id_access_level <=> NEW.id_access_level - UNION - -- Changed active - SELECT NEW.id_link, 'active', CONVERT(CONVERT(OLD.active, SIGNED), CHAR), CONVERT(CONVERT(NEW.active, SIGNED), CHAR), NEW.id_change_set - WHERE NOT (OLD.active <=> NEW.active) - ; - - RETURN NEW; -END; -$$ LANGUAGE plpgsql; - -CREATE OR REPLACE TRIGGER tri_before_update_Shop_Role_Permission_Link -BEFORE UPDATE ON Shop_Role_Permission_Link -FOR EACH ROW -EXECUTE FUNCTION before_update_Shop_Role_Permission_Link(); - --- Shop User - -CREATE OR REPLACE FUNCTION before_insert_Shop_User() -RETURNS TRIGGER AS $$ -BEGIN - IF NEW.created_on IS NULL THEN - NEW.created_on = CURRENT_TIMESTAMP; - END IF; - IF NEW.created_by IS NULL THEN - NEW.created_by = CURRENT_USER; - END IF; - - RETURN NEW; -END; -$$ LANGUAGE plpgsql; - -CREATE OR REPLACE TRIGGER tri_before_insert_Shop_User -BEFORE INSERT ON Shop_User -FOR EACH ROW -EXECUTE FUNCTION before_insert_Shop_User(); - - -CREATE OR REPLACE FUNCTION before_update_Shop_User() -RETURNS TRIGGER AS $$ -BEGIN - IF OLD.id_change_set IS NOT DISTINCT FROM NEW.id_change_set THEN - RAISE EXCEPTION 'New change Set ID must be provided.' - USING ERRCODE = '45000'; - END IF; - - INSERT INTO Shop_User_Audit ( - id_user, - name_field, - value_prev, - value_new, - id_change_set - ) - -- Changed id_user_oauth - SELECT NEW.id_user, 'id_user_oauth', OLD.id_user_oauth, NEW.id_user_oauth, NEW.id_change_set - WHERE NOT (OLD.id_user_oauth <=> NEW.id_user_oauth) - UNION - -- Changed name - SELECT NEW.id_user, 'name', OLD.name, NEW.name, NEW.id_change_set - WHERE NOT (OLD.name <=> NEW.name) - UNION - -- Changed email - SELECT NEW.id_user, 'email', OLD.email, NEW.email, NEW.id_change_set - WHERE NOT (OLD.email <=> NEW.email) - UNION - -- Changed is_email_verified - SELECT NEW.id_user, 'is_email_verified', OLD.is_email_verified, NEW.is_email_verified, NEW.id_change_set - WHERE NOT (OLD.is_email_verified <=> NEW.is_email_verified) - UNION - -- Changed is_super_user - SELECT NEW.id_user, 'is_super_user', CONVERT(CONVERT(OLD.is_super_user, SIGNED), CHAR), CONVERT(CONVERT(NEW.is_super_user, SIGNED), CHAR), NEW.id_change_set - WHERE NOT (OLD.is_super_user <=> NEW.is_super_user) - UNION - -- Changed active - SELECT NEW.id_user, 'active', CONVERT(CONVERT(OLD.active, SIGNED), CHAR), CONVERT(CONVERT(NEW.active, SIGNED), CHAR), NEW.id_change_set - WHERE NOT (OLD.active <=> NEW.active) - ; - - RETURN NEW; -END; -$$ LANGUAGE plpgsql; - -CREATE OR REPLACE TRIGGER tri_before_update_Shop_User -BEFORE UPDATE ON Shop_User -FOR EACH ROW -EXECUTE FUNCTION before_update_Shop_User(); - --- Shop User Role Link - -CREATE OR REPLACE FUNCTION before_insert_Shop_User_Role_Link() -RETURNS TRIGGER AS $$ -BEGIN - IF NEW.created_on IS NULL THEN - NEW.created_on = CURRENT_TIMESTAMP; - END IF; - IF NEW.created_by IS NULL THEN - NEW.created_by = CURRENT_USER; - END IF; - - RETURN NEW; -END; -$$ LANGUAGE plpgsql; - -CREATE OR REPLACE TRIGGER tri_before_insert_Shop_User_Role_Link -BEFORE INSERT ON Shop_User_Role_Link -FOR EACH ROW -EXECUTE FUNCTION before_insert_Shop_User_Role_Link(); - - -CREATE OR REPLACE FUNCTION before_update_Shop_User_Role_Link() -RETURNS TRIGGER AS $$ -BEGIN - IF OLD.id_change_set IS NOT DISTINCT FROM NEW.id_change_set THEN - RAISE EXCEPTION 'New change Set ID must be provided.' - USING ERRCODE = '45000'; - END IF; - - INSERT INTO Shop_User_Role_Link_Audit ( - id_link, - name_field, - value_prev, - value_new, - id_change_set - ) - -- Changed active - SELECT NEW.id_link, 'active', CONVERT(CONVERT(OLD.active, SIGNED), CHAR), CONVERT(CONVERT(NEW.active, SIGNED), CHAR), NEW.id_change_set - WHERE NOT (OLD.active <=> NEW.active) - ; - - RETURN NEW; -END; -$$ LANGUAGE plpgsql; - -CREATE OR REPLACE TRIGGER tri_before_update_Shop_User_Role_Link -BEFORE UPDATE ON Shop_User_Role_Link -FOR EACH ROW -EXECUTE FUNCTION before_update_Shop_User_Role_Link(); - --- Shop Address - -CREATE OR REPLACE FUNCTION before_insert_Shop_Address() -RETURNS TRIGGER AS $$ -BEGIN - IF NEW.created_on IS NULL THEN - NEW.created_on = CURRENT_TIMESTAMP; - END IF; - IF NEW.created_by IS NULL THEN - NEW.created_by = CURRENT_USER; - END IF; - - RETURN NEW; -END; -$$ LANGUAGE plpgsql; - -CREATE OR REPLACE TRIGGER tri_before_insert_Shop_Address -BEFORE INSERT ON Shop_Address -FOR EACH ROW -EXECUTE FUNCTION before_insert_Shop_Address(); - - -CREATE OR REPLACE FUNCTION before_update_Shop_Address() -RETURNS TRIGGER AS $$ -BEGIN - IF OLD.id_change_set IS NOT DISTINCT FROM NEW.id_change_set THEN - RAISE EXCEPTION 'New change Set ID must be provided.' - USING ERRCODE = '45000'; - END IF; - - INSERT INTO Shop_Address_Audit ( - id_address, - name_field, - value_prev, - value_new, - id_change_set - ) - -- Changed region - SELECT NEW.id_address, 'id_region', OLD.id_region, NEW.id_region, NEW.id_change_set - WHERE NOT OLD.id_region <=> NEW.id_region - UNION - -- Changed name_full - SELECT NEW.id_address, 'name_full', OLD.name_full, NEW.name_full, NEW.id_change_set - WHERE NOT OLD.name_full <=> NEW.name_full - UNION - -- Changed phone_number - SELECT NEW.id_address, 'phone_number', OLD.phone_number, NEW.phone_number, NEW.id_change_set - WHERE NOT OLD.phone_number <=> NEW.phone_number - UNION - -- Changed postcode - SELECT NEW.id_address, 'postcode', OLD.postcode, NEW.postcode, NEW.id_change_set - WHERE NOT OLD.postcode <=> NEW.postcode - UNION - -- Changed address_line_1 - SELECT NEW.id_address, 'address_line_1', OLD.address_line_1, NEW.address_line_1, NEW.id_change_set - WHERE NOT OLD.address_line_1 <=> NEW.address_line_1 - UNION - -- Changed address_line_2 - SELECT NEW.id_address, 'address_line_2', OLD.address_line_2, NEW.address_line_2, NEW.id_change_set - WHERE NOT OLD.address_line_2 <=> NEW.address_line_2 - UNION - -- Changed city - SELECT NEW.id_address, 'city', OLD.city, NEW.city, NEW.id_change_set - WHERE NOT OLD.city <=> NEW.city - UNION - -- Changed county - SELECT NEW.id_address, 'county', OLD.county, NEW.county, NEW.id_change_set - WHERE NOT OLD.county <=> NEW.county - UNION - -- Changed active - SELECT NEW.id_address, 'active', CONVERT(CONVERT(OLD.active, SIGNED), CHAR), CONVERT(CONVERT(NEW.active, SIGNED), CHAR), NEW.id_change_set - WHERE NOT (OLD.active <=> NEW.active) - ; - - RETURN NEW; -END; -$$ LANGUAGE plpgsql; - -CREATE OR REPLACE TRIGGER tri_before_update_Shop_Address -BEFORE UPDATE ON Shop_Address -FOR EACH ROW -EXECUTE FUNCTION before_update_Shop_Address(); --- Shop Product Variation Link - -CREATE OR REPLACE FUNCTION before_insert_Shop_User_Basket() -RETURNS TRIGGER AS $$ -BEGIN - IF NEW.created_on IS NULL THEN - NEW.created_on = CURRENT_TIMESTAMP; - END IF; - IF NEW.created_by IS NULL THEN - NEW.created_by = CURRENT_USER; - END IF; - - RETURN NEW; -END; -$$ LANGUAGE plpgsql; - -CREATE OR REPLACE TRIGGER tri_before_insert_Shop_User_Basket -BEFORE INSERT ON Shop_User_Basket -FOR EACH ROW -EXECUTE FUNCTION before_insert_Shop_User_Basket(); - - -CREATE OR REPLACE FUNCTION before_update_Shop_User_Basket() -RETURNS TRIGGER AS $$ -BEGIN - IF NEW.id_change_set_user <=> OLD.id_change_set_user THEN - RAISE EXCEPTION 'New change Set ID must be provided.' - USING ERRCODE = '45000'; - END IF; - - INSERT INTO Shop_User_Basket_Audit ( - id_item, - name_field, - value_prev, - value_new, - id_change_set_user - ) - -- Changed id_user - SELECT NEW.id_item, 'id_user', OLD.id_user, NEW.id_user, NEW.id_change_set_user - WHERE NOT OLD.id_user <=> NEW.id_user - UNION - -- Changed id_product - SELECT NEW.id_item, 'id_product', OLD.id_product, NEW.id_product, NEW.id_change_set_user - WHERE NOT OLD.id_product <=> NEW.id_product - UNION - -- Changed quantity - SELECT NEW.id_item, 'quantity', CONVERT(OLD.quantity, CHAR), CONVERT(NEW.quantity, CHAR), NEW.id_change_set_user - WHERE NOT (OLD.quantity <=> NEW.quantity) - UNION - -- Changed active - SELECT NEW.id_item, 'active', CONVERT(CONVERT(OLD.active, SIGNED), CHAR), CONVERT(CONVERT(NEW.active, SIGNED), CHAR), NEW.id_change_set_user - WHERE NOT (OLD.active <=> NEW.active) - ; - - RETURN NEW; -END; -$$ LANGUAGE plpgsql; - -CREATE OR REPLACE TRIGGER tri_before_update_Shop_User_Basket -BEFORE UPDATE ON Shop_User_Basket -FOR EACH ROW -EXECUTE FUNCTION before_update_Shop_User_Basket(); - --- Shop User Order Type - -CREATE OR REPLACE FUNCTION before_insert_Shop_User_Order_Status() -RETURNS TRIGGER AS $$ -BEGIN - NEW.created_on = CURRENT_TIMESTAMP; - NEW.created_by = CURRENT_USER; - - RETURN NEW; -END; -$$ LANGUAGE plpgsql; - -CREATE OR REPLACE TRIGGER tri_before_insert_Shop_User_Order_Status -BEFORE INSERT ON Shop_User_Order_Status -FOR EACH ROW -EXECUTE FUNCTION before_insert_Shop_User_Order_Status(); - - -CREATE OR REPLACE FUNCTION before_update_Shop_User_Order_Status() -RETURNS TRIGGER AS $$ -BEGIN - IF OLD.id_change_set IS NOT DISTINCT FROM NEW.id_change_set THEN - RAISE EXCEPTION 'New change Set ID must be provided.' - USING ERRCODE = '45000'; - END IF; - - INSERT INTO Shop_User_Order_Status_Audit ( - id_Status, - name_field, - value_prev, - value_new, - id_change_set - ) - -- Changed code - SELECT NEW.id_Status, 'code', OLD.code, NEW.code, NEW.id_change_set - WHERE NOT OLD.code <=> NEW.code - UNION - -- Changed name - SELECT NEW.id_Status, 'name', OLD.name, NEW.name, NEW.id_change_set - WHERE NOT OLD.name <=> NEW.name - UNION - -- Changed name_plural - SELECT NEW.id_Status, 'name_plural', OLD.name_plural, NEW.name_plural, NEW.id_change_set - WHERE NOT OLD.name_plural <=> NEW.name_plural - UNION - -- Changed active - SELECT NEW.id_Status, 'active', CONVERT(CONVERT(OLD.active, SIGNED), CHAR), CONVERT(CONVERT(NEW.active, SIGNED), CHAR), NEW.id_change_set - WHERE NOT (OLD.active <=> NEW.active) - UNION - -- Changed display_order - SELECT NEW.id_Status, 'display_order', CONVERT(OLD.display_order, CHAR), CONVERT(NEW.display_order, CHAR), NEW.id_change_set - WHERE NOT (OLD.display_order <=> NEW.display_order) - ; - - RETURN NEW; -END; -$$ LANGUAGE plpgsql; - -CREATE OR REPLACE TRIGGER tri_before_update_Shop_User_Order_Status -BEFORE UPDATE ON Shop_User_Order_Status -FOR EACH ROW -EXECUTE FUNCTION before_update_Shop_User_Order_Status(); - --- Shop Supplier - -CREATE OR REPLACE FUNCTION before_insert_Shop_Supplier() -RETURNS TRIGGER AS $$ -BEGIN - IF NEW.created_on IS NULL THEN - NEW.created_on = CURRENT_TIMESTAMP; - END IF; - IF NEW.created_by IS NULL THEN - NEW.created_by = CURRENT_USER; - END IF; - - RETURN NEW; -END; -$$ LANGUAGE plpgsql; - -CREATE OR REPLACE TRIGGER tri_before_insert_Shop_Supplier -BEFORE INSERT ON Shop_Supplier -FOR EACH ROW -EXECUTE FUNCTION before_insert_Shop_Supplier(); - - -CREATE OR REPLACE FUNCTION before_update_Shop_Supplier() -RETURNS TRIGGER AS $$ -BEGIN - IF OLD.id_change_set IS NOT DISTINCT FROM NEW.id_change_set THEN - RAISE EXCEPTION 'New change Set ID must be provided.' - USING ERRCODE = '45000'; - END IF; - - INSERT INTO Shop_Supplier_Audit ( - id_supplier, - name_field, - value_prev, - value_new, - id_change_set - ) - -- Changed name_company - SELECT NEW.id_supplier, 'name_company', OLD.name_company, NEW.name_company, NEW.id_change_set - WHERE NOT OLD.name_company <=> NEW.name_company - UNION - -- Changed name_contact - SELECT NEW.id_supplier, 'name_contact', OLD.name_contact, NEW.name_contact, NEW.id_change_set - WHERE NOT OLD.name_contact <=> NEW.name_contact - UNION - -- Changed department_contact - SELECT NEW.id_supplier, 'department_contact', OLD.department_contact, NEW.department_contact, NEW.id_change_set - WHERE NOT OLD.department_contact <=> NEW.department_contact - UNION - -- Changed id_address - SELECT NEW.id_supplier, 'id_address', OLD.id_address, NEW.id_address, NEW.id_change_set - WHERE NOT OLD.id_address <=> NEW.id_address - UNION - -- Changed phone_number - SELECT NEW.id_supplier, 'phone_number', OLD.phone_number, NEW.phone_number, NEW.id_change_set - WHERE NOT OLD.phone_number <=> NEW.phone_number - UNION - -- Changed fax - SELECT NEW.id_supplier, 'fax', OLD.fax, NEW.fax, NEW.id_change_set - WHERE NOT OLD.fax <=> NEW.fax - UNION - -- Changed email - SELECT NEW.id_supplier, 'email', OLD.email, NEW.email, NEW.id_change_set - WHERE NOT OLD.email <=> NEW.email - UNION - -- Changed website - SELECT NEW.id_supplier, 'website', OLD.website, NEW.website, NEW.id_change_set - WHERE NOT OLD.website <=> NEW.website - UNION - -- Changed id_currency - SELECT NEW.id_supplier, 'id_currency', OLD.id_currency, NEW.id_currency, NEW.id_change_set - WHERE NOT OLD.id_currency <=> NEW.id_currency - ; - - RETURN NEW; -END; -$$ LANGUAGE plpgsql; - -CREATE OR REPLACE TRIGGER tri_before_update_Shop_Supplier -BEFORE UPDATE ON Shop_Supplier -FOR EACH ROW -EXECUTE FUNCTION before_update_Shop_Supplier(); - --- Shop Unit of Measurement - -CREATE OR REPLACE FUNCTION before_insert_Shop_Unit_Measurement() -RETURNS TRIGGER AS $$ -BEGIN - IF NEW.created_on IS NULL THEN - NEW.created_on = CURRENT_TIMESTAMP; - END IF; - IF NEW.created_by IS NULL THEN - NEW.created_by = CURRENT_USER; - END IF; - - RETURN NEW; -END; -$$ LANGUAGE plpgsql; - -CREATE OR REPLACE TRIGGER tri_before_insert_Shop_Unit_Measurement -BEFORE INSERT ON Shop_Unit_Measurement -FOR EACH ROW -EXECUTE FUNCTION before_insert_Shop_Unit_Measurement(); - - -CREATE OR REPLACE FUNCTION before_update_Shop_Unit_Measurement() -RETURNS TRIGGER AS $$ -BEGIN - IF OLD.id_change_set IS NOT DISTINCT FROM NEW.id_change_set THEN - RAISE EXCEPTION 'New change Set ID must be provided.' - USING ERRCODE = '45000'; - END IF; - - INSERT INTO Shop_Unit_Measurement_Audit ( - id_unit_measurement, - name_field, - value_prev, - value_new, - id_change_set - ) - -- Changed name_singular - SELECT NEW.id_unit_measurement, 'name_singular', OLD.name_singular, NEW.name_singular, NEW.id_change_set - WHERE NOT OLD.name_singular <=> NEW.name_singular - UNION - -- Changed name_plural - SELECT NEW.id_unit_measurement, 'name_plural', OLD.name_plural, NEW.name_plural, NEW.id_change_set - WHERE NOT OLD.name_plural <=> NEW.name_plural - UNION - -- Changed symbol - SELECT NEW.id_unit_measurement, 'symbol', OLD.symbol, NEW.symbol, NEW.id_change_set - WHERE NOT OLD.symbol <=> NEW.symbol - UNION - -- Changed is_base_unit - SELECT NEW.id_unit_measurement, 'is_base_unit', OLD.is_base_unit, NEW.is_base_unit, NEW.id_change_set - WHERE NOT OLD.is_base_unit <=> NEW.is_base_unit - UNION - -- Changed active - SELECT NEW.id_unit_measurement, 'active', OLD.active, NEW.active, NEW.id_change_set - WHERE NOT OLD.active <=> NEW.active - ; - - RETURN NEW; -END; -$$ LANGUAGE plpgsql; - -CREATE OR REPLACE TRIGGER tri_before_update_Shop_Unit_Measurement -BEFORE UPDATE ON Shop_Unit_Measurement -FOR EACH ROW -EXECUTE FUNCTION before_update_Shop_Unit_Measurement(); - --- Shop Unit of Measurement Conversion - -CREATE OR REPLACE FUNCTION before_insert_Shop_Unit_Measurement_Conversion() -RETURNS TRIGGER AS $$ -BEGIN - IF NEW.created_on IS NULL THEN - NEW.created_on = CURRENT_TIMESTAMP; - END IF; - IF NEW.created_by IS NULL THEN - NEW.created_by = CURRENT_USER; - END IF; - - RETURN NEW; -END; -$$ LANGUAGE plpgsql; - -CREATE OR REPLACE TRIGGER tri_before_insert_Shop_Unit_Measurement_Conversion -BEFORE INSERT ON Shop_Unit_Measurement_Conversion -FOR EACH ROW -EXECUTE FUNCTION before_insert_Shop_Unit_Measurement_Conversion(); - - -CREATE OR REPLACE FUNCTION before_update_Shop_Unit_Measurement_Conversion() -RETURNS TRIGGER AS $$ -BEGIN - IF OLD.id_change_set IS NOT DISTINCT FROM NEW.id_change_set THEN - RAISE EXCEPTION 'New change Set ID must be provided.' - USING ERRCODE = '45000'; - END IF; - - INSERT INTO Shop_Unit_Measurement_Conversion_Audit ( - id_conversion, - name_field, - value_prev, - value_new, - id_change_set - ) - -- Changed id_unit_derived - SELECT NEW.id_conversion, 'id_unit_derived', OLD.id_unit_derived, NEW.id_unit_derived, NEW.id_change_set - WHERE NOT OLD.id_unit_derived <=> NEW.id_unit_derived - UNION - -- Changed id_unit_base - SELECT NEW.id_conversion, 'id_unit_base', OLD.id_unit_base, NEW.id_unit_base, NEW.id_change_set - WHERE NOT OLD.id_unit_base <=> NEW.id_unit_base - UNION - -- Changed power_unit_base - SELECT NEW.id_conversion, 'power_unit_base', OLD.power_unit_base, NEW.power_unit_base, NEW.id_change_set - WHERE NOT OLD.power_unit_base <=> NEW.power_unit_base - UNION - -- Changed multiplier_unit_base - SELECT NEW.id_conversion, 'multiplier_unit_base', OLD.multiplier_unit_base, NEW.multiplier_unit_base, NEW.id_change_set - WHERE NOT OLD.multiplier_unit_base <=> NEW.multiplier_unit_base - UNION - -- Changed increment_unit_base - SELECT NEW.id_conversion, 'active', OLD.increment_unit_base, NEW.increment_unit_base, NEW.id_change_set - WHERE NOT OLD.increment_unit_base <=> NEW.increment_unit_base - UNION - -- Changed active - SELECT NEW.id_conversion, 'active', OLD.active, NEW.active, NEW.id_change_set - WHERE NOT OLD.active <=> NEW.active - ; - - RETURN NEW; -END; -$$ LANGUAGE plpgsql; - -CREATE OR REPLACE TRIGGER tri_before_update_Shop_Unit_Measurement_Conversion -BEFORE UPDATE ON Shop_Unit_Measurement_Conversion -FOR EACH ROW -EXECUTE FUNCTION before_update_Shop_Unit_Measurement_Conversion(); - --- Shop Supplier Purchase Order - -CREATE OR REPLACE FUNCTION before_insert_Shop_Supplier_Purchase_Order() -RETURNS TRIGGER AS $$ -BEGIN - IF NEW.created_on IS NULL THEN - NEW.created_on = CURRENT_TIMESTAMP; - END IF; - IF NEW.created_by IS NULL THEN - NEW.created_by = CURRENT_USER; - END IF; - - RETURN NEW; -END; -$$ LANGUAGE plpgsql; - -CREATE OR REPLACE TRIGGER tri_before_insert_Shop_Supplier_Purchase_Order -BEFORE INSERT ON Shop_Supplier_Purchase_Order -FOR EACH ROW -EXECUTE FUNCTION before_insert_Shop_Supplier_Purchase_Order(); - - -CREATE OR REPLACE FUNCTION before_update_Shop_Supplier_Purchase_Order() -RETURNS TRIGGER AS $$ -BEGIN - IF OLD.id_change_set IS NOT DISTINCT FROM NEW.id_change_set THEN - RAISE EXCEPTION 'New change Set ID must be provided.' - USING ERRCODE = '45000'; - END IF; - - INSERT INTO Shop_Supplier_Purchase_Order_Audit ( - id_order, - name_field, - value_prev, - value_new, - id_change_set - ) - -- Changed id_supplier_ordered - SELECT NEW.id_order, 'id_supplier_ordered', OLD.id_supplier_ordered, NEW.id_supplier_ordered, NEW.id_change_set - WHERE NOT OLD.id_supplier_ordered <=> NEW.id_supplier_ordered - UNION - -- Changed cost_total_local - SELECT NEW.id_order, 'cost_total_local', OLD.cost_total_local, NEW.cost_total_local, NEW.id_change_set - WHERE NOT OLD.cost_total_local <=> NEW.cost_total_local - UNION - -- Changed id_currency_cost - SELECT NEW.id_order, 'id_currency_cost', OLD.id_currency_cost, NEW.id_currency_cost, NEW.id_change_set - WHERE NOT OLD.id_currency_cost <=> NEW.id_currency_cost - /* - UNION - -- Changed latency_delivery - SELECT NEW.id_order, 'latency_delivery', OLD.latency_delivery, NEW.latency_delivery, NEW.id_change_set - WHERE NOT OLD.latency_delivery <=> NEW.latency_delivery - UNION - -- Changed quantity_ordered - SELECT NEW.id_order, 'quantity_ordered', OLD.quantity_ordered, NEW.quantity_ordered, NEW.id_change_set - WHERE NOT OLD.quantity_ordered <=> NEW.quantity_ordered - UNION - -- Changed id_unit_quantity - SELECT NEW.id_order, 'id_unit_quantity', OLD.id_unit_quantity, NEW.id_unit_quantity, NEW.id_change_set - WHERE NOT OLD.id_unit_quantity <=> NEW.id_unit_quantity - UNION - -- Changed quantity_received - SELECT NEW.id_order, 'quantity_received', OLD.quantity_received, NEW.quantity_received, NEW.id_change_set - WHERE NOT OLD.quantity_received <=> NEW.quantity_received - */ - ; - - RETURN NEW; -END; -$$ LANGUAGE plpgsql; - -CREATE OR REPLACE TRIGGER tri_before_update_Shop_Supplier_Purchase_Order -BEFORE UPDATE ON Shop_Supplier_Purchase_Order -FOR EACH ROW -EXECUTE FUNCTION before_update_Shop_Supplier_Purchase_Order(); - - --- Shop Supplier Purchase Order Product Link - -CREATE OR REPLACE FUNCTION before_insert_Shop_Supplier_Purchase_Order_Product_Link() -RETURNS TRIGGER AS $$ -BEGIN - IF NEW.created_on IS NULL THEN - NEW.created_on = CURRENT_TIMESTAMP; - END IF; - IF NEW.created_by IS NULL THEN - NEW.created_by = CURRENT_USER; - END IF; - - RETURN NEW; -END; -$$ LANGUAGE plpgsql; - -CREATE OR REPLACE TRIGGER tri_before_insert_Shop_Supplier_Purchase_Order_Product_Link -BEFORE INSERT ON Shop_Supplier_Purchase_Order_Product_Link -FOR EACH ROW -EXECUTE FUNCTION before_insert_Shop_Supplier_Purchase_Order_Product_Link(); - - -CREATE OR REPLACE FUNCTION before_update_Shop_Supplier_Purchase_Order_Product_Link() -RETURNS TRIGGER AS $$ -BEGIN - IF OLD.id_change_set IS NOT DISTINCT FROM NEW.id_change_set THEN - RAISE EXCEPTION 'New change Set ID must be provided.' - USING ERRCODE = '45000'; - END IF; - - INSERT INTO Shop_Supplier_Purchase_Order_Product_Link_Audit ( - id_link, - name_field, - value_prev, - value_new, - id_change_set - ) - -- Changed id_order - SELECT NEW.id_link, 'id_order', OLD.id_order, NEW.id_order, NEW.id_change_set - WHERE NOT OLD.id_order <=> NEW.id_order - UNION - -- Changed id_permutation - SELECT NEW.id_link, 'id_permutation', OLD.id_permutation, NEW.id_permutation, NEW.id_change_set - WHERE NOT OLD.id_permutation <=> NEW.id_permutation - UNION - -- Changed cost_total_local - SELECT NEW.id_link, 'cost_total_local', OLD.cost_total_local, NEW.cost_total_local, NEW.id_change_set - WHERE NOT OLD.cost_total_local <=> NEW.cost_total_local - UNION - -- Changed id_currency_cost - SELECT NEW.id_link, 'id_currency_cost', OLD.id_currency_cost, NEW.id_currency_cost, NEW.id_change_set - WHERE NOT OLD.id_currency_cost <=> NEW.id_currency_cost - UNION - -- Changed quantity_ordered - SELECT NEW.id_link, 'quantity_ordered', OLD.quantity_ordered, NEW.quantity_ordered, NEW.id_change_set - WHERE NOT OLD.quantity_ordered <=> NEW.quantity_ordered - UNION - -- Changed id_unit_quantity - SELECT NEW.id_link, 'id_unit_quantity', OLD.id_unit_quantity, NEW.id_unit_quantity, NEW.id_change_set - WHERE NOT OLD.id_unit_quantity <=> NEW.id_unit_quantity - UNION - -- Changed quantity_received - SELECT NEW.id_link, 'quantity_received', OLD.quantity_received, NEW.quantity_received, NEW.id_change_set - WHERE NOT OLD.quantity_received <=> NEW.quantity_received - UNION - -- Changed latency_delivery_days - SELECT NEW.id_link, 'latency_delivery_days', OLD.latency_delivery_days, NEW.latency_delivery_days, NEW.id_change_set - WHERE NOT OLD.latency_delivery_days <=> NEW.latency_delivery_days - UNION - -- Changed display_order - SELECT NEW.id_link, 'display_order', OLD.display_order, NEW.display_order, NEW.id_change_set - WHERE NOT OLD.display_order <=> NEW.display_order - UNION - -- Changed active - SELECT NEW.id_link, 'active', OLD.active, NEW.active, NEW.id_change_set - WHERE NOT OLD.active <=> NEW.active - ; - - RETURN NEW; -END; -$$ LANGUAGE plpgsql; - -CREATE OR REPLACE TRIGGER tri_before_update_Shop_Supplier_Purchase_Order_Product_Link -BEFORE UPDATE ON Shop_Supplier_Purchase_Order_Product_Link -FOR EACH ROW -EXECUTE FUNCTION before_update_Shop_Supplier_Purchase_Order_Product_Link(); - --- Shop Manufacturing Purchase Order - -CREATE OR REPLACE FUNCTION before_insert_Shop_Manufacturing_Purchase_Order() -RETURNS TRIGGER AS $$ -BEGIN - IF NEW.created_on IS NULL THEN - NEW.created_on = CURRENT_TIMESTAMP; - END IF; - IF NEW.created_by IS NULL THEN - NEW.created_by = CURRENT_USER; - END IF; - - RETURN NEW; -END; -$$ LANGUAGE plpgsql; - -CREATE OR REPLACE TRIGGER tri_before_insert_Shop_Manufacturing_Purchase_Order -BEFORE INSERT ON Shop_Manufacturing_Purchase_Order -FOR EACH ROW -EXECUTE FUNCTION before_insert_Shop_Manufacturing_Purchase_Order(); - - -CREATE OR REPLACE FUNCTION before_update_Shop_Manufacturing_Purchase_Order() -RETURNS TRIGGER AS $$ -BEGIN - IF OLD.id_change_set IS NOT DISTINCT FROM NEW.id_change_set THEN - RAISE EXCEPTION 'New change Set ID must be provided.' - USING ERRCODE = '45000'; - END IF; - - INSERT INTO Shop_Manufacturing_Purchase_Order_Audit ( - id_order, - name_field, - value_prev, - value_new, - id_change_set - ) - -- Changed cost_total_local - SELECT NEW.id_order, 'cost_total_local', OLD.cost_total_local, NEW.cost_total_local, NEW.id_change_set - WHERE NOT OLD.cost_total_local <=> NEW.cost_total_local - UNION - -- Changed value_produced_total_local - SELECT NEW.id_order, 'value_produced_total_local', OLD.value_produced_total_local, NEW.value_produced_total_local, NEW.id_change_set - WHERE NOT OLD.value_produced_total_local <=> NEW.value_produced_total_local - UNION - -- Changed id_currency_cost - SELECT NEW.id_order, 'id_currency_cost', OLD.id_currency_cost, NEW.id_currency_cost, NEW.id_change_set - WHERE NOT OLD.id_currency_cost <=> NEW.id_currency_cost - UNION - -- Changed active - SELECT NEW.id_order, 'active', OLD.active, NEW.active, NEW.id_change_set - WHERE NOT OLD.active <=> NEW.active - ; - - RETURN NEW; -END; -$$ LANGUAGE plpgsql; - -CREATE OR REPLACE TRIGGER tri_before_update_Shop_Manufacturing_Purchase_Order -BEFORE UPDATE ON Shop_Manufacturing_Purchase_Order -FOR EACH ROW -EXECUTE FUNCTION before_update_Shop_Manufacturing_Purchase_Order(); - --- Shop Manufacturing Purchase Order Product Link - -CREATE OR REPLACE FUNCTION before_insert_Shop_Manufacturing_Purchase_Order_Product_Link() -RETURNS TRIGGER AS $$ -BEGIN - IF NEW.created_on IS NULL THEN - NEW.created_on = CURRENT_TIMESTAMP; - END IF; - IF NEW.created_by IS NULL THEN - NEW.created_by = CURRENT_USER; - END IF; - RETURN NEW; -END; -$$ LANGUAGE plpgsql; - -CREATE OR REPLACE TRIGGER tri_before_insert_Manufacturing_Purch_Order_Product_Link -BEFORE INSERT ON Shop_Manufacturing_Purchase_Order_Product_Link -FOR EACH ROW -EXECUTE FUNCTION before_insert_Shop_Manufacturing_Purchase_Order_Product_Link(); - - -CREATE OR REPLACE FUNCTION before_update_Manufacturing_Purch_Order_Product_Link() -RETURNS TRIGGER AS $$ -BEGIN - IF OLD.id_change_set IS NOT DISTINCT FROM NEW.id_change_set THEN - RAISE EXCEPTION 'New change Set ID must be provided.' - USING ERRCODE = '45000'; - END IF; - - INSERT INTO Shop_Manufacturing_Purchase_Order_Product_Link_Audit ( - id_link, - name_field, - value_prev, - value_new, - id_change_set - ) - -- Changed id_order - SELECT NEW.id_link, 'id_order', OLD.id_order, NEW.id_order, NEW.id_change_set - WHERE NOT OLD.id_order <=> NEW.id_order - UNION - -- Changed id_permutation - SELECT NEW.id_link, 'id_permutation', OLD.id_permutation, NEW.id_permutation, NEW.id_change_set - WHERE NOT OLD.id_permutation <=> NEW.id_permutation - UNION - -- Changed cost_total_local - SELECT NEW.id_link, 'cost_total_local', OLD.cost_total_local, NEW.cost_total_local, NEW.id_change_set - WHERE NOT OLD.cost_total_local <=> NEW.cost_total_local - UNION - -- Changed id_currency_cost - SELECT NEW.id_link, 'id_currency_cost', OLD.id_currency_cost, NEW.id_currency_cost, NEW.id_change_set - WHERE NOT OLD.id_currency_cost <=> NEW.id_currency_cost - UNION - -- Changed quantity_used - SELECT NEW.id_link, 'quantity_used', OLD.quantity_used, NEW.quantity_used, NEW.id_change_set - WHERE NOT OLD.quantity_used <=> NEW.quantity_used - UNION - -- Changed id_unit_quantity - SELECT NEW.id_link, 'id_unit_quantity', OLD.id_unit_quantity, NEW.id_unit_quantity, NEW.id_change_set - WHERE NOT OLD.id_unit_quantity <=> NEW.id_unit_quantity - UNION - -- Changed quantity_produced - SELECT NEW.id_link, 'quantity_produced', OLD.quantity_produced, NEW.quantity_produced, NEW.id_change_set - WHERE NOT OLD.quantity_produced <=> NEW.quantity_produced - UNION - -- Changed latency_manufacture - SELECT NEW.id_link, 'latency_manufacture', OLD.latency_manufacture, NEW.latency_manufacture, NEW.id_change_set - WHERE NOT OLD.latency_manufacture <=> NEW.latency_manufacture - UNION - -- Changed display_order - SELECT NEW.id_link, 'display_order', OLD.display_order, NEW.display_order, NEW.id_change_set - WHERE NOT OLD.display_order <=> NEW.display_order - UNION - -- Changed active - SELECT NEW.id_link, 'active', OLD.active, NEW.active, NEW.id_change_set - WHERE NOT OLD.active <=> NEW.active - ; - - RETURN NEW; -END; -$$ LANGUAGE plpgsql; - -CREATE OR REPLACE TRIGGER tri_before_update_Manufacturing_Purch_Order_Product_Link -BEFORE UPDATE ON Shop_Manufacturing_Purchase_Order_Product_Link -FOR EACH ROW -EXECUTE FUNCTION before_update_Manufacturing_Purch_Order_Product_Link(); - - --- Shop Customer - -CREATE OR REPLACE FUNCTION before_insert_Shop_Customer() -RETURNS TRIGGER AS $$ -BEGIN - IF NEW.created_on IS NULL THEN - NEW.created_on = CURRENT_TIMESTAMP; - END IF; - IF NEW.created_by IS NULL THEN - NEW.created_by = CURRENT_USER; - END IF; - RETURN NEW; -END; -$$ LANGUAGE plpgsql; - -CREATE OR REPLACE TRIGGER tri_before_insert_Shop_Customer -BEFORE INSERT ON Shop_Customer -FOR EACH ROW -EXECUTE FUNCTION before_insert_Shop_Customer(); - - -CREATE OR REPLACE FUNCTION before_update_Shop_Customer() -RETURNS TRIGGER AS $$ -BEGIN - IF OLD.id_change_set IS NOT DISTINCT FROM NEW.id_change_set THEN - RAISE EXCEPTION 'New change Set ID must be provided.' - USING ERRCODE = '45000'; - END IF; - - INSERT INTO Shop_Customer_Audit ( - id_customer, - name_field, - value_prev, - value_new, - id_change_set - ) - -- Changed name_company - SELECT NEW.id_customer, 'name_company', OLD.name_company, NEW.name_company, NEW.id_change_set - WHERE NOT OLD.name_company <=> NEW.name_company - UNION - -- Changed name_contact - SELECT NEW.id_customer, 'name_contact', OLD.name_contact, NEW.name_contact, NEW.id_change_set - WHERE NOT OLD.name_contact <=> NEW.name_contact - UNION - -- Changed department_contact - SELECT NEW.id_customer, 'department_contact', OLD.department_contact, NEW.department_contact, NEW.id_change_set - WHERE NOT OLD.department_contact <=> NEW.department_contact - UNION - -- Changed id_address - SELECT NEW.id_customer, 'id_address', OLD.id_address, NEW.id_address, NEW.id_change_set - WHERE NOT OLD.id_address <=> NEW.id_address - UNION - -- Changed phone_number - SELECT NEW.id_customer, 'phone_number', OLD.phone_number, NEW.phone_number, NEW.id_change_set - WHERE NOT OLD.phone_number <=> NEW.phone_number - UNION - -- Changed email - SELECT NEW.id_customer, 'email', OLD.email, NEW.email, NEW.id_change_set - WHERE NOT OLD.email <=> NEW.email - UNION - -- Changed id_currency - SELECT NEW.id_customer, 'id_currency', OLD.id_currency, NEW.id_currency, NEW.id_change_set - WHERE NOT OLD.id_currency <=> NEW.id_currency - UNION - -- Changed active - SELECT NEW.id_customer, 'active', OLD.active, NEW.active, NEW.id_change_set - WHERE NOT OLD.active <=> NEW.active - ; - - RETURN NEW; -END; -$$ LANGUAGE plpgsql; - -CREATE OR REPLACE TRIGGER tri_before_update_Shop_Customer -BEFORE UPDATE ON Shop_Customer -FOR EACH ROW -EXECUTE FUNCTION before_update_Shop_Customer(); - - --- Shop Customer Sales Order - -CREATE OR REPLACE FUNCTION before_insert_Shop_Customer_Sales_Order() -RETURNS TRIGGER AS $$ -BEGIN - IF NEW.created_on IS NULL THEN - NEW.created_on = CURRENT_TIMESTAMP; - END IF; - IF NEW.created_by IS NULL THEN - NEW.created_by = CURRENT_USER; - END IF; - RETURN NEW; -END; -$$ LANGUAGE plpgsql; - -CREATE OR REPLACE TRIGGER tri_before_insert_Shop_Customer_Sales_Order -BEFORE INSERT ON Shop_Customer_Sales_Order -FOR EACH ROW -EXECUTE FUNCTION before_insert_Shop_Customer_Sales_Order(); - - -CREATE OR REPLACE FUNCTION before_update_Shop_Customer_Sales_Order() -RETURNS TRIGGER AS $$ -BEGIN - IF OLD.id_change_set IS NOT DISTINCT FROM NEW.id_change_set THEN - RAISE EXCEPTION 'New change Set ID must be provided.' - USING ERRCODE = '45000'; - END IF; - - INSERT INTO Shop_Customer_Sales_Order_Audit ( - id_order, - name_field, - value_prev, - value_new, - id_change_set - ) - -- Changed id_customer - SELECT NEW.id_order, 'id_customer', OLD.id_customer, NEW.id_customer, NEW.id_change_set - WHERE NOT OLD.id_customer <=> NEW.id_customer - UNION - -- Changed price_total_local - SELECT NEW.id_order, 'price_total_local', OLD.price_total_local, NEW.price_total_local, NEW.id_change_set - WHERE NOT OLD.price_total_local <=> NEW.price_total_local - UNION - -- Changed id_currency_price - SELECT NEW.id_order, 'id_currency_price', OLD.id_currency_price, NEW.id_currency_price, NEW.id_change_set - WHERE NOT OLD.id_currency_price <=> NEW.id_currency_price - UNION - -- Changed active - SELECT NEW.id_order, 'active', OLD.active, NEW.active, NEW.id_change_set - WHERE NOT OLD.active <=> NEW.active - ; - - RETURN NEW; -END; -$$ LANGUAGE plpgsql; - -CREATE OR REPLACE TRIGGER tri_before_update_Shop_Customer_Sales_Order -BEFORE UPDATE ON Shop_Customer_Sales_Order -FOR EACH ROW -EXECUTE FUNCTION before_update_Shop_Customer_Sales_Order(); - --- Shop Customer Sales Order Product Link - -CREATE OR REPLACE FUNCTION before_insert_Shop_Customer_Sales_Order_Product_Link() -RETURNS TRIGGER AS $$ -BEGIN - IF NEW.created_on IS NULL THEN - NEW.created_on = CURRENT_TIMESTAMP; - END IF; - IF NEW.created_by IS NULL THEN - NEW.created_by = CURRENT_USER; - END IF; - RETURN NEW; -END; -$$ LANGUAGE plpgsql; - -CREATE OR REPLACE TRIGGER tri_before_insert_Shop_Customer_Sales_Order_Product_Link -BEFORE INSERT ON Shop_Customer_Sales_Order_Product_Link -FOR EACH ROW -EXECUTE FUNCTION before_insert_Shop_Customer_Sales_Order_Product_Link(); - - -CREATE OR REPLACE FUNCTION before_update_Shop_Customer_Sales_Order_Product_Link() -RETURNS TRIGGER AS $$ -BEGIN - IF OLD.id_change_set IS NOT DISTINCT FROM NEW.id_change_set THEN - RAISE EXCEPTION 'New change Set ID must be provided.' - USING ERRCODE = '45000'; - END IF; - - INSERT INTO Shop_Customer_Sales_Order_Product_Link_Audit ( - id_link, - name_field, - value_prev, - value_new, - id_change_set - ) - -- Changed id_order - SELECT NEW.id_link, 'id_order', OLD.id_order, NEW.id_order, NEW.id_change_set - WHERE NOT OLD.id_order <=> NEW.id_order - UNION - -- Changed id_permutation - SELECT NEW.id_link, 'id_permutation', OLD.id_permutation, NEW.id_permutation, NEW.id_change_set - WHERE NOT OLD.id_permutation <=> NEW.id_permutation - UNION - -- Changed price_total_local - SELECT NEW.id_link, 'price_total_local', OLD.price_total_local, NEW.price_total_local, NEW.id_change_set - WHERE NOT OLD.price_total_local <=> NEW.price_total_local - UNION - -- Changed id_currency_price - SELECT NEW.id_link, 'id_currency_price', OLD.id_currency_price, NEW.id_currency_price, NEW.id_change_set - WHERE NOT OLD.id_currency_price <=> NEW.id_currency_price - UNION - -- Changed quantity_ordered - SELECT NEW.id_link, 'quantity_ordered', OLD.quantity_ordered, NEW.quantity_ordered, NEW.id_change_set - WHERE NOT OLD.quantity_ordered <=> NEW.quantity_ordered - UNION - -- Changed id_unit_quantity - SELECT NEW.id_link, 'id_unit_quantity', OLD.id_unit_quantity, NEW.id_unit_quantity, NEW.id_change_set - WHERE NOT OLD.id_unit_quantity <=> NEW.id_unit_quantity - UNION - -- Changed quantity_delivered - SELECT NEW.id_link, 'quantity_delivered', OLD.quantity_delivered, NEW.quantity_delivered, NEW.id_change_set - WHERE NOT OLD.quantity_delivered <=> NEW.quantity_delivered - UNION - -- Changed latency_delivery_days - SELECT NEW.id_link, 'latency_delivery_days', OLD.latency_delivery_days, NEW.latency_delivery_days, NEW.id_change_set - WHERE NOT OLD.latency_delivery_days <=> NEW.latency_delivery_days - UNION - -- Changed display_order - SELECT NEW.id_link, 'display_order', OLD.display_order, NEW.display_order, NEW.id_change_set - WHERE NOT OLD.display_order <=> NEW.display_order - UNION - -- Changed active - SELECT NEW.id_link, 'active', OLD.active, NEW.active, NEW.id_change_set - WHERE NOT OLD.active <=> NEW.active - ; - - RETURN NEW; -END; -$$ LANGUAGE plpgsql; - -CREATE OR REPLACE TRIGGER tri_before_update_Shop_Customer_Sales_Order_Product_Link -BEFORE UPDATE ON Shop_Customer_Sales_Order_Product_Link -FOR EACH ROW -EXECUTE FUNCTION before_update_Shop_Customer_Sales_Order_Product_Link(); - -/* - -CALL p_shop_calc_user ( - gen_random_uuid(), -- a_guid - '', -- a_id_user - 0, -- a_get_inactive_users - '1', -- a_ids_permission - '', -- a_ids_access_level - '1' -- a_ids_product -) - -*/ - -CREATE OR REPLACE PROCEDURE p_shop_calc_user ( - IN a_guid UUID, - IN a_id_user INTEGER, - IN a_get_inactive_users BOOLEAN, - IN a_ids_permission INTEGER[], - IN a_ids_access_level INTEGER[], - IN a_ids_product INTEGER[] -- VARCHAR(4000) -- IN a_ids_permutation VARCHAR(4000) - /* - OUT result_errors TABLE ( - guid UUID, - id_type INTEGER, - code VARCHAR(50), - msg VARCHAR(4000) - ) - */ - -- INOUT a_error_msg TEXT -) -AS $$ -DECLARE - v_guid UUID; - v_id_user INTEGER; - v_get_inactive_users BOOLEAN; - v_ids_permission INTEGER[]; - v_ids_access_level INTEGER[]; - v_ids_product INTEGER[]; -- TEXT; -- VARCHAR(4000); -- IN a_ids_permutation VARCHAR(4000) - v_has_filter_user BOOLEAN; - v_has_filter_permission BOOLEAN; - v_has_filter_access_level BOOLEAN; - -- v_has_filter_permutation BOOLEAN; - v_has_filter_product BOOLEAN; - v_id_permission_product INTEGER; - v_id_permission INTEGER; - -- v_ids_product UUID; - v_id_access_level_view INTEGER; - -- v_id_access_level_product_required INTEGER; - v_priority_access_level_view INTEGER; - v_priority_access_level_edit INTEGER; - v_priority_access_level_admin INTEGER; - v_id_access_level INTEGER; - v_priority_access_level INTEGER; - v_now TIMESTAMP; - v_ids_row_delete UUID; - v_code_error_data VARCHAR(200); - v_id_error_data INTEGER; - v_code_error_permission VARCHAR(200); - -- result_errors REFCURSOR; - -- v_error_msg TEXT := NULL; -BEGIN - -- Parse arguments + get default values - v_guid := COALESCE(a_guid, gen_random_uuid()); - v_id_user := CASE WHEN a_id_user IS NULL THEN '' ELSE TRIM(a_id_user) END; - v_get_inactive_users := COALESCE(a_get_inactive_users, FALSE); - v_ids_permission := COALESCE(a_ids_permission, ARRAY[]::INTEGER[]); - v_ids_access_level := COALESCE(a_ids_access_level, ARRAY[]::INTEGER[]); - -- v_ids_permutation := CASE WHEN a_ids_permutation IS NULL THEN '' ELSE TRIM(a_ids_permutation) END; - v_ids_product := COALESCE(a_ids_product, ARRAY[]::INTEGER[]); - - v_id_error_data := 1; - v_code_error_data := (SELECT code FROM Shop_Msg_Error_Type WHERE id_type = v_id_error_data); - - v_code_error_permission := (SELECT code FROM Shop_Msg_Error_Type WHERE id_type = 2); - - v_has_filter_user := (v_id_user <= 0); - v_has_filter_permission := (CARDINALITY(v_ids_permission) > 0); - v_has_filter_access_level := (CARDINALITY(v_ids_access_level) > 0); - /* - v_has_filter_permutation := CASE WHEN v_ids_permutation = '' THEN FALSE ELSE TRUE END; - */ - v_has_filter_product := (CARDINALITY(v_ids_product) = 0); - v_id_access_level_view := (SELECT id_access_level FROM Shop_Access_Level WHERE code = 'VIEW' LIMIT 1); - v_priority_access_level_view := (SELECT priority FROM Shop_Access_Level WHERE id_access_level = v_id_access_level_view); - v_priority_access_level_edit := (SELECT priority FROM Shop_Access_Level WHERE code = 'EDIT' LIMIT 1); - v_priority_access_level_admin := (SELECT priority FROM Shop_Access_Level WHERE code = 'ADMIN' LIMIT 1); - - v_id_permission_product := (SELECT v_id_permission FROM Shop_Permission WHERE code = 'SHOP_PRODUCT' LIMIT 1); - - -- Clear previous proc results - -- DROP TABLE IF EXISTS tmp_User_Role_Link; - -- DROP TEMPORARY TABLE IF EXISTS tmp_User_Role_Link; - DROP TABLE IF EXISTS tmp_Shop_Product_p_shop_calc_user; - -- DROP TABLE IF EXISTS Shop_Calc_User_Temp; - - - -- Permanent Table - CREATE TABLE IF NOT EXISTS Shop_Calc_User_Temp ( - id_row INTEGER NOT NULL PRIMARY KEY GENERATED ALWAYS AS IDENTITY, - guid UUID NOT NULL, - id_user INTEGER, - CONSTRAINT FK_Shop_Calc_User_Temp_id_user - FOREIGN KEY (id_user) - REFERENCES Shop_User (id_user), - id_permission_required INTEGER NOT NULL, - CONSTRAINT FK_Shop_Calc_User_Temp_id_permission_required - FOREIGN KEY (id_permission_required) - REFERENCES Shop_Permission (id_permission), - /* - id_access_level_required INTEGER NOT NULL, - CONSTRAINT FK_Shop_Calc_User_Temp_id_access_level_required - FOREIGN KEY (id_access_level_required) - REFERENCES Shop_Access_Level (id_access_level), - */ - priority_access_level_required INTEGER NOT NULL, - /* - CONSTRAINT FK_Shop_Calc_User_Temp_priority_access_level_required - FOREIGN KEY (priority_access_level_required) - REFERENCES Shop_Access_Level (priority), - */ - id_product INTEGER NULL, - CONSTRAINT FK_Shop_Calc_User_Temp_id_product - FOREIGN KEY (id_product) - REFERENCES Shop_Product (id_product), - /* - id_permutation INTEGER NULL, - CONSTRAINT FK_Shop_Calc_User_Temp_id_permutation - FOREIGN KEY (id_permutation) - REFERENCES parts.Shop_Product_Permutation (id_permutation), - */ - is_super_user BOOLEAN NULL, - priority_access_level_user INTEGER NULL, - /* - CONSTRAINT FK_Shop_Calc_User_Temp_priority_access_level_minimum - FOREIGN KEY (priority_access_level_minimum) - REFERENCES Shop_Access_Level (priority) - */ - can_view BOOLEAN, - can_edit BOOLEAN, - can_admin BOOLEAN, -- DEFAULT 0 - name_error VARCHAR(200) NULL - ); - - -- Temporary tables - CREATE TEMPORARY TABLE tmp_Shop_Product_p_shop_calc_user ( - id_row INTEGER NOT NULL PRIMARY KEY GENERATED ALWAYS AS IDENTITY, - id_product INTEGER NOT NULL, - CONSTRAINT FK_tmp_Shop_Product_p_shop_calc_user_id_product FOREIGN KEY (id_product) - REFERENCES Shop_Product (id_product), - /* - id_permutation INTEGER NOT NULL, - CONSTRAINT FK_tmp_Shop_Product_p_shop_calc_user_id_permutation - FOREIGN KEY (id_permutation) - REFERENCES parts.Shop_Product_Permutation (id_permutation), - */ - id_access_level_required INTEGER NOT NULL, - CONSTRAINT FK_tmp_Shop_Product_p_shop_calc_user_id_access_level_required - FOREIGN KEY (id_access_level_required) - REFERENCES Shop_Access_Level (id_access_level), - guid UUID NOT NULL, - rank_product INTEGER NOT NULL - ); - - /* - CREATE TEMPORARY TABLE IF NOT EXISTS tmp_Msg_Error ( - display_order INTEGER NOT NULL PRIMARY KEY GENERATED ALWAYS AS IDENTITY, - guid UUID NOT NULL, - id_type INTEGER 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 - ); - */ - - - -- Permission IDs - IF v_has_filter_permission THEN - -- CALL p_split(a_guid, v_ids_permission, ','); - - -- Invalid - IF EXISTS ( - SELECT UNNEST(v_ids_permission) AS id_permission - EXCEPT - SELECT id_permission FROM Shop_Permission - ) THEN -- (SELECT PERM.id_permission FROM Split_Temp ST LEFT JOIN Shop_Permission PERM ON ST.substring = PERM.id_permission WHERE ISNULL(PERM.id_permission)) THEN - /* - INSERT INTO tmp_Msg_Error ( - guid, - id_type, - code, - msg - ) - SELECT - v_guid, - (SELECT id_type FROM Shop_Msg_Error_Type WHERE code = v_code_error_data LIMIT 1), - v_code_error_data, - 'Invalid permission IDs: ' || COALESCE(STRING_AGG(ST.substring, ', '), 'NULL') - FROM Split_Temp ST - LEFT JOIN Shop_Permission PERM ON ST.substring = PERM.id_permission - WHERE ISNULL(PERM.id_permission) - ; - */ - RAISE EXCEPTION 'Invalid permission IDs: %', ( - SELECT STRING_AGG(id_permission, ', ') - FROM ( - SELECT UNNEST(v_ids_permission) AS id_permission - EXCEPT - SELECT id_permission FROM Shop_Permission - ) Permission - ) - USING ERRCODE = '22000' - ; - END IF; - - -- Inactive - IF EXISTS ( - SELECT UNNEST(v_ids_permission) AS id_permission - EXCEPT - SELECT id_permission FROM Shop_Permission - WHERE active - ) THEN -- (SELECT PERM.id_permission FROM Split_Temp ST INNER JOIN Shop_Permission PERM ON ST.substring = PERM.id_permission WHERE PERM.active = FALSE) THEN - /* - INSERT INTO tmp_Msg_Error ( - guid, - id_type, - code, - msg - ) - SELECT - v_guid, - (SELECT id_type FROM Shop_Msg_Error_Type WHERE code = v_code_error_data LIMIT 1), - v_code_error_data, - 'The following permissions are not active: ' || COALESCE(STRING_AGG(ST.substring, ', '), 'NULL') - FROM Split_Temp ST - INNER JOIN Shop_Permission PERM ON ST.substring = PERM.id_permission - WHERE PERM.active = FALSE - ; - */ - RAISE EXCEPTION 'Inactive permission IDs: %', ( - SELECT STRING_AGG(id_permission, ', ') - FROM ( - SELECT UNNEST(v_ids_permission) AS id_permission - EXCEPT - SELECT id_permission FROM Shop_Permission - WHERE active - ) Permission - ) - USING ERRCODE = '22000' - ; - END IF; - - -- Get the permission with the highest priority access level required - v_id_permission := ( - SELECT PERMS.id_permission - FROM ( - SELECT PERM2.id_permission - FROM Split_Temp ST - INNER JOIN Shop_Permission PERM2 ON ST.substring = PERM2.id_permission - WHERE PERM.active - UNION - SELECT v_id_permission_product - ) PERMS - INNER JOIN Shop_Permission PERM1 ON PERMS.id_permission = PERM1.id_permission - INNER JOIN Shop_Access_Level AL ON PERM1.id_access_level_required = AL.id_access_level - ORDER BY AL.priority ASC - LIMIT 1 - ); - - -- DROP TABLE Split_Temp; - ELSIF v_has_filter_product THEN - v_id_permission := v_id_permission_product; - ELSE - /* - INSERT INTO tmp_Msg_Error ( - guid, - id_type, - code, - msg - ) - VALUES ( - v_guid, - (SELECT id_type FROM Shop_Msg_Error_Type WHERE code = v_code_error_data LIMIT 1), - v_code_error_data, - 'Permission ID required' - ) - ; - */ - RAISE EXCEPTION 'Permission ID required.' - USING ERRCODE = '22000' - ; - END IF; - - -- access level - IF v_has_filter_access_level THEN - IF EXISTS ( - /* - SELECT ST.substring - FROM Split_Temp ST - LEFT JOIN Shop_Access_Level AL - ON ST.substring = AL.id_access_level - WHERE - ISNULL(AL.id_access_level) - OR AL.active = FALSE - */ - SELECT UNNEST(v_ids_access_level) AS id_access_level - EXCEPT - SELECT id_access_level FROM Shop_Access_Level - ) THEN - /* - INSERT INTO tmp_Msg_Error ( - guid, - id_type, - code, - msg - ) - SELECT - v_guid, - (SELECT id_type FROM Shop_Msg_Error_Type WHERE code = v_code_error_data LIMIT 1), - v_code_error_data, - 'Invalid access level IDs: ' || STRING_AGG(ST.substring, ', ') - FROM Split_Temp ST - LEFT JOIN Shop_Access_Level AL ON ST.substring = AL.id_access_level - WHERE ISNULL(AL.id_access_level) - ; - */ - RAISE EXCEPTION 'Invalid access level IDs: %', ( - SELECT STRING_AGG(id_access_level, ', ') - FROM ( - SELECT UNNEST(v_ids_access_level) AS id_access_level - EXCEPT - SELECT id_access_level FROM Shop_Access_Level - ) AL - ) - USING ERRCODE = '22000' - ; - END IF; - - IF EXISTS ( - SELECT UNNEST(v_ids_access_level) AS id_access_level - EXCEPT - SELECT id_access_level FROM Shop_Access_Level - WHERE active - ) THEN - RAISE EXCEPTION 'Inactive access level IDs: %', ( - SELECT STRING_AGG(id_access_level, ', ') - FROM ( - SELECT UNNEST(v_ids_access_level) AS id_access_level - EXCEPT - SELECT id_access_level FROM Shop_Access_Level - ) AL - ) - USING ERRCODE = '22000' - ; - END IF; - - v_id_access_level := ( - SELECT AL.id_access_level - FROM Shop_Access_Level AL - WHERE - AL.active - AND AL.id_access_level = ANY(v_ids_access_level) - ORDER BY AL.priority ASC - LIMIT 1 - ); - ELSE - v_id_access_level := ( - SELECT id_access_level_required AS id_access_level - FROM ( - SELECT id_access_level - FROM Shop_Permission PERM - WHERE - PERM.id_permission = v_id_permission - UNION - SELECT v_id_access_level_view AS id_access_level - ) PERMS - INNER JOIN Shop_Access_Level AL ON PERMS.id_access_level = AL.id_access_level - ORDER BY AL.priority ASC - LIMIT 1 - ); -- v_id_access_level_view; - END IF; - - v_priority_access_level := (SELECT priority FROM Shop_Access_Level WHERE id_access_level = v_id_access_level); - - -- Invalid user ID - IF v_has_filter_user THEN - IF ISNULL((SELECT id_user FROM Shop_User WHERE id_user = v_id_user)) THEN -- NOT v_has_filter_user THEN - /* - INSERT INTO tmp_Msg_Error ( - guid, - id_type, - code, - msg - ) - VALUES ( - v_guid, - (SELECT id_type FROM Shop_Msg_Error_Type WHERE code = v_code_error_data LIMIT 1), - v_code_error_data, - 'Invalid user ID: ' || COALESCE(v_id_user, 'NULL') - ) - ; - */ - RAISE EXCEPTION 'Invalid user ID: %', v_id_user - USING ERRCODE = '22000' - ; - END IF; - - IF ISNULL((SELECT id_user FROM Shop_User WHERE id_user = v_id_user AND active)) THEN - RAISE EXCEPTION 'Inactive user ID: %', v_id_user - USING ERRCODE = '22000' - ; - END IF; - END IF; - - - -- Invalid products - IF v_has_filter_product THEN - -- Invalid product IDs - IF EXISTS ( - SELECT UNNEST(v_ids_product) AS id_product - EXCEPT - SELECT id_product FROM Shop_Product - ) THEN -- (SELECT * FROM Split_Temp ST LEFT JOIN Shop_Product P ON ST.substring = P.id_product WHERE ISNULL(P.id_product)) THEN - /* - INSERT INTO tmp_Msg_Error ( - guid, - id_type, - code, - msg - ) - SELECT - v_guid, - (SELECT id_type FROM Shop_Msg_Error_Type WHERE code = v_code_error_data LIMIT 1), - v_code_error_data, - 'Invalid product IDs: ' || COALESCE(STRING_AGG(ST.substring, ', '), 'NULL') - FROM Split_Temp ST - LEFT JOIN Shop_Product P ON ST.substring = P.id_product - WHERE ISNULL(P.id_product) - ; - */ - RAISE EXCEPTION 'Invalid product IDs: %', ( - SELECT STRING_AGG(id_product, ', ') - FROM ( - SELECT UNNEST(v_ids_product) AS id_product - EXCEPT - SELECT id_product FROM Shop_Product - ) Product - ) - USING ERRCODE = '22000' - ; - END IF; - - INSERT INTO tmp_Shop_Product_p_shop_calc_user ( - id_product, - -- id_permutation, - id_access_level_required, - guid, - rank_product -- rank_permutation - ) - SELECT - DISTINCT P.id_product, - -- PP.id_permutation, - P.id_access_level_required, - v_guid, - RANK() OVER (ORDER BY C.display_order, P.display_order) AS rank_product - FROM Shop_Product P -- ON ST.substring = P.id_product -- Shop_Product_Permutation PP - INNER JOIN Shop_Product_Category C ON P.id_category = C.id_category - INNER JOIN Shop_Access_Level AL - ON P.id_access_level_required = AL.id_access_level - AND AL.active - WHERE -- FIND_IN_SET(P.id_product, v_ids_product) > 0 -- FIND_IN_SET(PP.id_permutation, v_ids_permutation) > 0 - P.id_product = ANY(v_ids_product) - -- AND P.active -- not worried as we want users to be able to see their order history - ; - /* - DELETE FROM tmp_Shop_Product_p_shop_calc_user - WHERE rank_permutation > 1 - ; - */ - -- v_has_filter_product := EXISTS (SELECT * FROM tmp_Shop_Product_p_shop_calc_user WHERE v_guid = guid); - END IF; - - -- User permissions - /* - IF v_has_filter_product THEN - INSERT INTO Shop_Calc_User_Temp ( - guid, - id_user, - id_permission_required, - id_product, - -- id_permutation, - priority_access_level_required, - priority_access_level_user, - is_super_user, - can_view, - can_edit, - can_admin - ) - SELECT - v_guid, - v_id_user, - v_id_permission AS id_permission_required, - P.id_product, - -- t_P.id_permutation, - CASE WHEN v_priority_access_level <= AL_P.priority THEN v_priority_access_level ELSE AL_P.priority END AS priority_access_level_required, - AL_U.priority AS priority_access_level_user, - U.is_super_user, - CASE WHEN U.is_super_user THEN TRUE ELSE CASE WHEN NOT ISNULL(AL_U.priority) AND AL_U.priority <= v_priority_access_level_view AND AL_U.priority <= priority_access_level_required THEN TRUE ELSE FALSE END END AS can_view, - CASE WHEN U.is_super_user THEN TRUE ELSE CASE WHEN NOT ISNULL(AL_U.priority) AND AL_U.priority <= v_priority_access_level_edit AND AL_U.priority <= priority_access_level_required THEN TRUE ELSE FALSE END END AS can_edit, - CASE WHEN U.is_super_user THEN TRUE ELSE CASE WHEN NOT ISNULL(AL_U.priority) AND AL_U.priority <= v_priority_access_level_admin AND AL_U.priority <= priority_access_level_required THEN TRUE ELSE FALSE END END AS can_admin - FROM Shop_User U - /* - ON U.id_user = v_id_user - AND U.active - */ - LEFT JOIN Shop_User_Role_Link URL - ON U.id_user = URL.id_user - AND URL.active - LEFT JOIN Shop_Role_Permission_Link RPL - ON URL.id_role = RPL.id_role - AND RPL.active - INNER JOIN Shop_Access_Level AL_U - ON RPL.id_access_leveL = AL_U.id_access_level - AND AL_U.active - INNER JOIN tmp_Shop_Product_p_shop_calc_user t_P - ON t_P.guid = v_guid - AND AL.id_access_level = t_P.id_access_leveL_required - INNER JOIN Shop_Access_Level AL_P - ON t_P.id_access_leveL_required = AL_P.id_access_level - AND AL_P.active - WHERE - v_guid = t_P.guid - AND U.active - AND U.id_user = v_id_user - ; - ELSE - INSERT INTO Shop_Calc_User_Temp (--UE_T - guid, - id_user, - id_permission_required, - priority_access_level_required, - priority_access_level_user, - is_super_user, - can_view, - can_edit, - can_admin - ) - SELECT - v_guid, - v_id_user, - v_id_permission AS id_permission_required, - v_priority_access_level AS priority_access_level_required, - AL.priority AS priority_access_level_user, - U.is_super_user, - CASE WHEN U.is_super_user THEN TRUE ELSE CASE WHEN NOT ISNULL(AL.priority) AND AL.priority <= v_priority_access_level_view AND AL.priority <= v_priority_access_level THEN TRUE ELSE FALSE END END AS can_view, - CASE WHEN U.is_super_user THEN TRUE ELSE CASE WHEN NOT ISNULL(AL.priority) AND AL.priority <= v_priority_access_level_edit AND AL.priority <= v_priority_access_level THEN TRUE ELSE FALSE END END AS can_edit, - CASE WHEN U.is_super_user THEN TRUE ELSE CASE WHEN NOT ISNULL(AL.priority) AND AL.priority <= v_priority_access_level_admin AND AL.priority <= v_priority_access_level THEN TRUE ELSE FALSE END END AS can_admin - FROM Shop_User U - INNER JOIN Shop_User_Role_Link URL - ON U.id_user = URL.id_user - AND URL.active - INNER JOIN Shop_Role_Permission_Link RPL - ON URL.id_role = RPL.id_role - AND RPL.active - INNER JOIN Shop_Access_Level AL - ON RPL.id_access_level = AL.id_access_level - AND AL.active - WHERE - U.id_user = v_id_user - AND U.active - AND RPL.id_permission = v_id_permission - ORDER BY AL.priority ASC - ; - END IF; - */ - INSERT INTO Shop_Calc_User_Temp (--UE_T - guid, - id_user, - id_permission_required, - id_product, - priority_access_level_required, - priority_access_level_user, - is_super_user, - can_view, - can_edit, - can_admin, - name_error - ) - SELECT - v_guid, - v_id_user, - v_id_permission AS id_permission_required, - t_P.id_product, - MIN(v_priority_access_level, AL_P.priority) AS priority_access_level_required, - AL_U.priority AS priority_access_level_user, - U.is_super_user, - (U.is_super_user AND NOT ISNULL(priority_access_level_user) AND priority_access_level_user <= v_priority_access_level_view AND priority_access_level_user <= priority_access_level_required) AS can_view, - (U.is_super_user AND NOT ISNULL(priority_access_level_user) AND priority_access_level_user <= v_priority_access_level_edit AND priority_access_level_user <= priority_access_level_required) AS can_edit, - (U.is_super_user AND NOT ISNULL(priority_access_level_user) AND priority_access_level_user <= v_priority_access_level_admin AND priority_access_level_user <= priority_access_level_required) AS can_admin, - Permission.name || ' ' || (SELECT name FROM Shop_Access_Level WHERE priority = priority_access_level_required ORDER BY id_access_level ASC LIMIT 1) || ' permissions' || CASE WHEN ISNULL(t_P.id_product) THEN '' ELSE ' for product ' || P.name END AS name_error - FROM Shop_User U - INNER JOIN Shop_User_Role_Link URL - ON U.id_user = URL.id_user - AND URL.active - INNER JOIN Shop_Role_Permission_Link RPL - ON URL.id_role = RPL.id_role - AND RPL.active - INNER JOIN Shop_Access_Level AL_U - ON RPL.id_access_level = AL_U.id_access_level - AND AL_U.active - INNER JOIN Shop_Permission Permission - ON RPL.id_permission = Permission.id_permission - AND Permission.active - CROSS JOIN tmp_Shop_Product_p_shop_calc_user t_P -- ON t_P.guid = v_guid - INNER JOIN Shop_Product P ON t_P.id_product = P.id_product - INNER JOIN Shop_Access_Level AL_P - ON t_P.id_access_level_required = AL_P.id_access_level - -- AND AL_P.active - WHERE - U.id_user = v_id_user - AND U.active - AND RPL.id_permission = v_id_permission - AND t_P.guid = v_guid - ORDER BY AL_P.priority ASC, t_P.rank_product ASC - ; - - -- IF EXISTS (SELECT * FROM tmp_Msg_Error WHERE GUID = v_guid) THEN - /* - OPEN result_errors FOR - SELECT * - FROM tmp_Msg_Error - WHERE GUID = v_guid - ; - -- RETURN NEXT result_errors; - -- result_errors - a_error_msg := ( - SELECT - -- GUID, id_type, code, - msg - FROM tmp_Msg_Error - WHERE GUID = v_guid - LIMIT 1 - ); - */ - - -- select * from tmp_Shop_Product_p_shop_calc_user; - -- Clean up - DROP TABLE IF EXISTS tmp_Shop_Product_p_shop_calc_user; - -- DROP TEMPORARY TABLE IF EXISTS tmp_User_Role_Link; - -- DROP TABLE IF EXISTS tmp_Msg_Error; -END; -$$ LANGUAGE plpgsql; - - -/* - -CALL p_shop_calc_user ( - '56c9dfc1-e22f-11ee-aab4-b42e9986184a', -- v_guid - '', -- v_id_user -- 'auth0|6582b95c895d09a70ba10fef', - false, -- v_get_inactive_users - '4,5', -- v_ids_permission - '1', -- v_ids_access_level - -- null, -- v_ids_product - '1,2,3' -- v_ids_permutation -); - -SELECT * -FROM Shop_Calc_User_Temp -; - -DROP TABLE Shop_Calc_User_Temp; - -SELECT * -FROM Shop_Permission -; - -SELECT * -FROM Shop_Access_Level -; - -SELECT * -FROM Shop_Product -; - -SELECT * -FROM Shop_Product_Permutation -; - - -*/ - -/* -SELECT 'NOODS' AS guid, - U.id_user AS id_user, - P.id_permission AS id_permission_required, - AL.id_access_level AS id_access_level_required, - /* - v_id_permission, - v_id_access_level, - */ - AL.priority, -- MIN(AL.priority), - U.is_super_user - /* - CASE WHEN U.is_super_user THEN TRUE ELSE CASE WHEN priority_access_level_minimum <= v_priority_access_level_view THEN TRUE ELSE FALSE END END, - CASE WHEN U.is_super_user THEN TRUE ELSE CASE WHEN priority_access_level_minimum <= v_priority_access_level_edit THEN TRUE ELSE FALSE END END, - CASE WHEN U.is_super_user THEN TRUE ELSE CASE WHEN priority_access_level_minimum <= v_priority_access_level_admin THEN TRUE ELSE FALSE END END - */ -FROM parts.Shop_User U -INNER JOIN Shop_User_Role_Link URL - ON U.id_user = URL.id_user - AND URL.active -INNER JOIN Shop_Role_Permission_Link RPL - ON URL.id_role = RPL.id_role - AND RPL.active -INNER JOIN Shop_Permission P - ON RPL.id_permission = P.id_permission - AND P.active -inner JOIN Shop_Access_Level AL - -- ON P.id_access_level_required = AL.id_access_level - ON RPL.id_access_level = AL.id_access_level - AND AL.active -WHERE U.id_user = 'auth0|6582b95c895d09a70ba10fef' - AND U.active - AND FIND_IN_SET(P.id_permission, '1,2') > 0 - -- AND v_id_access_level = AL.id_access_leveld --- GROUP BY U.id_user, P.id_permission, AL.id_access_level -- , is_super_user - -*/ - - - --- DROP TABLE IF EXISTS tmp_Shop_Supplier_Purchase_Order_Product_Link; --- DROP TABLE IF EXISTS tmp_Msg_Error; - -CREATE OR REPLACE PROCEDURE p_shop_save_supplier_purchase_order ( - IN a_guid UUID, - IN a_id_user INTEGER, - IN a_comment UUID, - IN a_id_order INTEGER, - IN a_id_supplier_ordered INTEGER, - IN a_id_currency_cost INTEGER, - IN a_active BOOLEAN -) -AS $$ -DECLARE - v_guid UUID; - v_id_user INTEGER; - v_comment VARCHAR(4000); - v_id_order INTEGER; - v_id_supplier_ordered INTEGER; - v_id_currency_cost INTEGER; - v_active BOOLEAN; - v_id_error_type_bad_data INTEGER; - v_code_error_type_bad_data VARCHAR(50); - v_id_error_type_no_permission INTEGER; - v_code_error_type_no_permission VARCHAR(50); - v_guid_permission UUID; - -- v_id_user VARCHAR(100); - v_id_permission_supplier_purchase_order INTEGER; - v_id_access_level_EDIT INTEGER; - v_ids_product VARCHAR(4000); - v_ids_product_no_permission VARCHAR(4000); - -- v_id_order_new INTEGER; - v_id_change_set INTEGER; - v_is_new_supplier_purchase_order BOOLEAN; - -- result_orders REFCURSOR; - -- result_order_product_links REFCURSOR; - -- result_errors REFCURSOR; -BEGIN - -- SET SESSION sql_mode = sys.list_drop(@@session.sql_mode, 'ONLY_FULL_GROUP_BY'); - - v_guid := COALESCE(a_guid, gen_random_uuid()); - v_id_user := TRIM(COALESCE(a_id_user, '')); - v_comment := TRIM(COALESCE(a_comment, '')); - v_id_order := COALESCE(a_id_order, -1); - v_id_supplier_ordered := a_id_supplier_ordered; - v_id_currency_cost := a_id_currency_cost; - v_active := COALESCE(a_active, FALSE); - - v_code_error_type_bad_data = 'BAD_DATA'; - v_id_error_type_bad_data := (SELECT id_type FROM Shop_Msg_Error_Type WHERE code = v_code_error_type_bad_data LIMIT 1); - v_code_error_type_no_permission = 'NO_PERMISSION'; - v_id_error_type_no_permission := (SELECT id_type FROM Shop_Msg_Error_Type WHERE code = v_code_error_type_no_permission LIMIT 1); - v_guid_permission = gen_random_uuid(); - -- v_id_user = CURRENT_USER; - v_id_permission_supplier_purchase_order := (SELECT id_permission FROM Shop_Permission WHERE code = 'STORE_SUPPLIER_PURCHASE_ORDER' LIMIT 1); - v_id_access_level_EDIT := (SELECT id_access_level FROM Shop_Access_Level WHERE code = 'EDIT'); - - v_is_new_supplier_purchase_order := CASE WHEN v_id_order <= 0 THEN TRUE ELSE FALSE END; - - -- Temporary tables - /* - CREATE TABLE tmp_Shop_Supplier_Purchase_Order ( - id_order INTEGER NOT NULL PRIMARY KEY, - id_supplier_ordered INTEGER NOT NULL, - CONSTRAINT FK_tmp_Shop_Supplier_Purchase_Order_id_supplier_ordered - FOREIGN KEY (id_supplier_ordered) - REFERENCES Shop_Supplier(id_supplier), - cost_total_local REAL NOT NULL, - id_currency_cost INTEGER NOT NULL - ); - */ - - CREATE TABLE tmp_Shop_Supplier_Purchase_Order_Product_Link ( - id_link INTEGER NOT NULL PRIMARY KEY, - id_order INTEGER NOT NULL, - /* - CONSTRAINT FK_tmp_Supplier_Purchase_Order_Product_Link_id_order - FOREIGN KEY (id_order) - REFERENCES Shop_Supplier_Purchase_Order(id_order), - */ - id_permutation INTEGER NOT NULL, - CONSTRAINT FK_tmp_Supplier_Purchase_Order_Product_Link_id_permutation - FOREIGN KEY (id_permutation) - REFERENCES Shop_Product_Permutation(id_permutation), - cost_total_local REAL NOT NULL, - id_currency_cost INTEGER NOT NULL, - quantity_ordered REAL NOT NULL, - id_unit_quantity INTEGER NOT NULL, - CONSTRAINT FK_tmp_Supplier_Purchase_Order_Product_Link_id_unit_quantity - FOREIGN KEY (id_unit_quantity) - REFERENCES Shop_Unit_Measurement(id_unit_measurement), - quantity_received REAL NULL, - latency_delivery_days INTEGER NOT NULL, - display_order INTEGER NOT NULL, - active BOOLEAN NOT NULL, - name_error VARCHAR(200) NOT NULL - ); - - /* - CREATE TABLE IF NOT EXISTS tmp_Msg_Error ( - display_order INTEGER NOT NULL PRIMARY KEY GENERATED ALWAYS AS IDENTITY, - guid UUID NOT NULL, - id_type INTEGER 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 - -- User ID - IF NOT EXISTS (SELECT * FROM Shop_User WHERE id_user = v_id_user) THEN - RAISE EXCEPTION 'Invalid User ID: %', COALESCE(v_id_user, 'NULL') - USING ERRCODE = '22000' - ; - END IF; - - -- Order ID - IF ((v_id_order > 0) AND NOT EXISTS (SELECT * FROM Shop_Supplier_Purchase_Order WHERE id_order = v_id_order)) THEN - RAISE EXCEPTION 'Invalid Supplier Purchase Order ID: %', COALESCE(v_id_order, 'NULL') - USING ERRCODE = '22000' - ; - END IF; - - -- Supplier ID - IF ISNULL(v_id_supplier_ordered) OR NOT EXISTS (SELECT * FROM Shop_Supplier WHERE id_supplier = v_id_supplier_ordered) THEN - RAISE EXCEPTION 'Invalid Supplier ID: %', COALESCE(v_id_supplier_ordered, 'NULL') - USING ERRCODE = '22000' - ; - END IF; - - -- Currency ID - IF ISNULL(v_id_currency_cost) OR NOT EXISTS (SELECT * FROM Shop_Currency WHERE id_currency = v_id_currency_cost) THEN - RAISE EXCEPTION 'Invalid currency ID: %', COALESCE(v_id_currency, 'NULL') - USING ERRCODE = '22000' - ; - END IF; - - -- Comment - IF v_comment = '' THEN - RAISE EXCEPTION 'A comment must be provided.' - USING ERRCODE = '22000' - ; - END IF; - - - -- Get data from Temp table - INSERT INTO tmp_Shop_Supplier_Purchase_Order_Product_Link ( - id_link, - id_order, - id_permutation, - cost_total_local, - id_currency_cost, - quantity_ordered, - id_unit_quantity, - quantity_received, - latency_delivery_days, - display_order, - active, - name_error - ) - SELECT - SPOPL_T.id_link, - SPOPL_T.id_order, - SPOPL_T.id_permutation, - PP.cost_local * quantity_ordered AS cost_total_local, - SPOPL_T.id_currency_cost, - SPOPL_T.quantity_ordered, - SPOPL_T.id_unit_quantity, - SPOPL_T.quantity_received, - SPOPL_T.latency_delivery_days, - SPOPL_T.display_order, - SPOPL_T.active, - CAST(PP.id_permutation AS VARCHAR(10)) || ' - ' || COALESCE(PP.name ,'') AS name_error - FROM Shop_Supplier_Purchase_Order_Product_Link_Temp SPOPL_T - INNER JOIN Shop_Product_Permutation PP ON SPOPL_T.id_permutation = PP.id_permutation - WHERE SPOPL_T.GUID = v_guid - ; - DELETE FROM Shop_Supplier_Purchase_Order_Product_Link_Temp SPOPL_T - WHERE SPOPL_T.GUID = v_guid - ; - - /* - UPDATE tmp_Shop_Supplier_Purchase_Order_Product_Link t_SPOPL - - cost_total_local - */ - - -- Invalid quantity ordered - IF EXISTS ( - SELECT * - FROM tmp_Shop_Supplier_Purchase_Order_Product_Link - WHERE - NOT ISNULL(quantity_ordered) - AND quantity_ordered < 0 - ) THEN - RAISE EXCEPTION 'Invalid quantity ordered property for the following permutations: %', ( - SELECT STRING_AGG(t_SPOPL.name_error, ', ') - FROM tmp_Shop_Supplier_Purchase_Order_Product_Link t_SPOPL - -- INNER JOIN Shop_Product_Permutation PP ON t_SPOPL.id_permutation = PP.id_permutation - WHERE t_SPOPL.quantity_ordered < 0 - ) - USING ERRCODE = '22000' - ; - END IF; - - -- Duplicates - IF EXISTS (SELECT id_permutation, name_error, COUNT(*) FROM tmp_Shop_Supplier_Purchase_Order_Product_Link t_SPOPL GROUP BY id_permutation HAVING COUNT(*) > 1) THEN - RAISE EXCEPTION 'Duplicate records: %', || ( - SELECT STRING_AGG(t_SPOPLC.name_error, ', ') - FROM (SELECT id_permutation, name_error, COUNT(*) FROM tmp_Shop_Supplier_Purchase_Order_Product_Link t_SPOPL GROUP BY id_permutation HAVING COUNT(*) > 1) t_SPOPLC - ) - USING ERRCODE = '22000' - ; - END IF; - - - - -- Permissions - v_ids_product := ( - SELECT STRING_AGG(DISTINCT PP.id_product, ',') - FROM tmp_Shop_Supplier_Purchase_Order_Product_Link t_SPO - INNER JOIN Shop_Product_Permutation PP ON t_SPO.id_permutation = PP.id_permutation - ); - - CALL p_shop_calc_user(v_guid_permission, v_id_user, 0, v_id_permission_supplier_purchase_order, v_id_access_level_edit, v_ids_product); - - /* - UPDATE tmp_Shop_Supplier t_S - INNER JOIN Shop_Calc_User_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; - */ - /* - v_has_permission := ( - SELECT can_edit - FROM Shop_Calc_User_Temp - WHERE - GUID = v_guid_permission - AND can_edit = 0 - ); - - IF v_has_permission = FALSE THEN - 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 - v_guid, - v_id_error_type_no_permission, - CONCAT('You do not have ', name, ' permissions.') - FROM Shop_Permission - WHERE id_permission = v_id_permission_supplier_purchase_order - ; - END IF; - */ - v_ids_product_no_permission := ( - SELECT STRING_AGG(PT.id_product, ',') - FROM Shop_Calc_User_Temp PT - WHERE - PT.can_edit = 0 - AND NOT ISNULL(PT.id_product) - ); - IF NOT ISNULL(v_ids_product_no_permission) THEN - RAISE EXCEPTION 'You do not have permission to edit the following product IDs: %', v_ids_product_no_permission - USING ERRCODE = '42501' - ; - END IF; - - DELETE FROM Shop_Calc_User_Temp - WHERE GUID = v_guid; - - -- Transaction - START TRANSACTION; - INSERT INTO Shop_Sales_And_Purchasing_Change_Set ( - comment, - updated_last_by, - updated_last_on - ) - VALUES ( - 'Save ' - || CASE WHEN v_is_new_supplier_purchase_order = TRUE THEN 'new ' ELSE '' END - || 'Supplier Purchase Order - ' - || v_comment, - v_id_user, - CURRENT_TIMESTAMP - ); - - v_id_change_set := (SELECT id_change_set FROM Shop_Sales_And_Purchasing_Change_Set ORDER BY id_change_set DESC LIMIT 1); - - IF (v_is_new_supplier_purchase_order = 1) THEN - INSERT INTO Shop_Supplier_Purchase_Order ( - id_supplier_ordered, - cost_total_local, - id_currency_cost, - created_by, - id_change_set, - active - ) - SELECT - v_id_supplier_ordered, - SUM(t_SPOPL.cost_total_local), - v_id_currency_cost, - v_id_user, - v_id_change_set, - v_active - FROM tmp_Shop_Supplier_Purchase_Order_Product_Link t_SPOPL - ; - -- v_id_order_new - v_id_order := (SELECT id_order FROM Shop_Supplier_Purchase_Order ORDER BY id_order DESC LIMIT 1); - INSERT INTO Shop_Supplier_Purchase_Order_Product_Link ( - id_order, - id_permutation, - cost_total_local, - id_currency_cost, - quantity_ordered, - id_unit_quantity, - quantity_received, - latency_delivery_days, - display_order, - active, - created_by, - id_change_set - ) - SELECT - v_id_order, -- v_id_order_new, - id_permutation, - cost_total_local, - id_currency_cost, - quantity_ordered, - id_unit_quantity, - quantity_received, - latency_delivery_days, - display_order, - active, - v_id_user, - v_id_change_set - FROM tmp_Shop_Supplier_Purchase_Order_Product_Link t_SPOPL - ; - ELSE - UPDATE Shop_Supplier_Purchase_Order SPO - SET - SPO.id_supplier_ordered = v_id_supplier_ordered, - SPO.cost_total_local = SUM(t_SPOPL.cost_total_local), - SPO.id_currency = v_id_currency_cost, - SPO.id_change_set = v_id_change_set, - SPO.active = v_active - FROM Shop_Supplier_Purchase_Order SPO - INNER JOIN tmp_Shop_Supplier_Purchase_Order_Product_Link t_SPOPL ON SPO.id_order = t_SPOPL.id_order - WHERE SPO.id_order = v_id_order - ; - IF EXISTS (SELECT * FROM tmp_Shop_Supplier_Purchase_Order_Product_Link t_SPOPL INNER JOIN Shop_Supplier_Purchase_Order_Product_Link SPOPL ON t_SPOPL.id_link = SPOPL.id_link) THEN - UPDATE Shop_Supplier_Purchase_Order_Product_Link SPOPL - SET - SPOPL.id_order = t_SPOPL.id_order, - SPOPL.id_permutation = t_SPOPL.id_permutation, - SPOPL.cost_total_local = t_SPOPL.cost_total_local, - SPOPL.id_currency_cost = t_SPOPL.id_currency_cost, - SPOPL.quantity_ordered = t_SPOPL.quantity_ordered, - SPOPL.id_unit_quantity = t_SPOPL.id_unit_quantity, - SPOPL.quantity_received = t_SPOPL.quantity_received, - SPOPL.latency_delivery_days = t_SPOPL.latency_delivery_days, - SPOPL.display_order = t_SPOPL.display_order, - SPOPL.active = t_SPOPL.active, - SPOPL.id_change_set = v_id_change_set - FROM Shop_Supplier_Purchase_Order_Product_Link SPOPL - INNER JOIN tmp_Shop_Supplier_Purchase_Order_Product_Link t_SPOPL - ON SPOPL.id_link = t_SPOPL.id_link - ; - ELSE - INSERT INTO Shop_Supplier_Purchase_Order_Product_Link ( - id_order, - id_permutation, - cost_total_local, - id_currency_cost, - quantity_ordered, - id_unit_quantity, - quantity_received, - latency_delivery_days, - display_order, - active, - created_by, - id_change_set - ) - SELECT - id_order, - id_permutation, - cost_total_local, - id_currency_cost, - quantity_ordered, - id_unit_quantity, - quantity_received, - latency_delivery_days, - display_order, - active, - v_id_user, - v_id_change_set - FROM tmp_Shop_Supplier_Purchase_Order_Product_Link t_SPOPL - WHERE t_SPOPL.id_link < 0 - ; - END IF; - END IF; - - COMMIT; - /* - IF EXISTS (SELECT * FROM tmp_Msg_Error) THEN - ROLLBACK; - ELSE - COMMIT; - END IF; - */ - - -- Returns - -- v_now = CURRENT_TIMESTAMP; - /* - -- Supplier Purchase Orders - OPEN result_orders FOR - SELECT * - FROM Shop_Supplier_Purchase_Order - WHERE id_order = v_id_order - ; - -- RETURN NEXT result_orders; - - -- Supplier Purchase Order Product Links - OPEN result_order_product_links FOR - SELECT * - FROM Shop_Supplier_Purchase_Order_Product_Link - WHERE id_order = v_id_order - ; - -- RETURN NEXT result_order_product_links; - */ - -- Errors - /* - OPEN result_errors FOR - SELECT * - FROM tmp_Msg_Error - ; - -- RETURN NEXT result_errors; - */ - - -- DROP TABLE tmp_Shop_Supplier_Purchase_Order; - DROP TABLE tmp_Shop_Supplier_Purchase_Order_Product_Link; - DROP TABLE tmp_Msg_Error; -END; -$$ LANGUAGE plpgsql; - - -/* - -DELETE FROM Shop_Supplier_Purchase_Order_Product_Link_Audit; -DELETE FROM Shop_Supplier_Purchase_Order_Product_Link; -DELETE FROM Shop_Supplier_Purchase_Order_Product_Link_Temp; -DELETE FROM Shop_Supplier_Purchase_Order_Audit; -DELETE FROM Shop_Supplier_Purchase_Order; - -INSERT INTO Shop_Supplier_Purchase_Order_Product_Link_Temp ( - guid, - id_link, - id_order, - id_permutation, - cost_total_local, - id_currency_cost, - quantity_ordered, - id_unit_quantity, - quantity_received, - latency_delivery_days, - display_order, - active -) -VALUES - ( - 'NIPS', -- guid - -1, -- id_link, - -1, -- id_order, - 1, -- id_permutation, - 100, -- cost_total_local, - 1, -- id_currency_cost, - 1, -- quantity_ordered, - 1, -- id_unit_quantity, - 1, -- quantity_received, - 14, -- latency_delivery_days , - 1, -- display_order - 1 -- active - ) -; - -SELECT * FROM Shop_Supplier_Purchase_Order_Product_Link_Temp; - -CALL p_shop_save_supplier_purchase_order ( - 'NIPS', -- a_guid - 'auth0|6582b95c895d09a70ba10fef', -- a_id_user - -1, -- a_id_order - 1, -- a_id_supplier_ordered - 1 -- a_id_currency_cost -); - -SELECT * FROM Shop_Supplier_Purchase_Order_Product_Link_Temp; - -DELETE FROM Shop_Supplier_Purchase_Order_Product_Link_Audit; -DELETE FROM Shop_Supplier_Purchase_Order_Product_Link; -DELETE FROM Shop_Supplier_Purchase_Order_Product_Link_Temp; -DELETE FROM Shop_Supplier_Purchase_Order_Audit; -DELETE FROM Shop_Supplier_Purchase_Order; - - -*/ - - - - - -CREATE OR REPLACE PROCEDURE p_shop_save_supplier ( - IN a_guid UUID, - IN a_id_user INTEGER, - IN a_comment UUID, - IN a_id_supplier INTEGER, - IN a_name_company VARCHAR(256), - IN a_name_contact VARCHAR(256), - IN a_department_contact VARCHAR(256), - IN a_id_address INTEGER, - IN a_phone_number VARCHAR(20), - IN a_fax VARCHAR(20), - IN a_email VARCHAR(515), - IN a_website VARCHAR(300), - IN a_id_currency INTEGER, - IN a_active BOOLEAN -) -AS $$ -DECLARE - v_guid UUID; - v_id_user INTEGER; - v_comment VARCHAR(4000); - v_id_supplier INTEGER; - v_name_company VARCHAR(256); - v_name_contact VARCHAR(256); - v_department_contact VARCHAR(256); - v_id_address INTEGER; - v_phone_number VARCHAR(256); - v_fax VARCHAR(256); - v_email VARCHAR(256); - v_website VARCHAR(256); - v_id_currency INTEGER; - v_active BOOLEAN; - v_id_error_type_bad_data INTEGER; - v_id_error_type_no_permission INTEGER; - v_guid_permission UUID; - v_id_permission_supplier INTEGER; - -- v_id_access_level_EDIT INTEGER; - v_has_permission BOOLEAN; - v_id_change_set INTEGER; - v_is_new_supplier BOOLEAN; - -- result_errors REFCURSOR; -BEGIN - -- SET SESSION sql_mode = sys.list_drop(@@session.sql_mode, 'ONLY_FULL_GROUP_BY'); - - v_guid := COALESCE(a_guid, gen_random_uuid()); - v_id_user := TRIM(COALESCE(a_id_user, '')); - v_comment := TRIM(COALESCE(a_comment, '')); - v_id_supplier := COALESCE(a_id_supplier, -1); - v_name_company := TRIM(COALESCE(a_name_company, '')); - v_name_contact := TRIM(COALESCE(a_name_contact, '')); - v_department_contact := TRIM(COALESCE(a_department_contact, '')); - v_id_address := a_id_address; - v_phone_number := TRIM(COALESCE(a_phone_number, '')); - v_fax := TRIM(COALESCE(a_fax, '')); - v_email := TRIM(COALESCE(a_email, '')); - v_website := TRIM(COALESCE(a_website, '')); - v_id_currency := a_id_currency; - v_active := COALESCE(a_active, FALSE); - - v_id_error_type_bad_data := (SELECT id_type FROM Shop_Msg_Error_Type WHERE code = 'BAD_DATA'); - v_guid_permission = gen_random_uuid(); - v_id_user = CURRENT_USER; - v_id_permission_supplier = (SELECT id_permission FROM Shop_Permission WHERE code = 'STORE_SUPPLIER' LIMIT 1); - -- v_id_access_level_EDIT = (SELECT id_access_level FROM Shop_Access_Level WHERE code = 'EDIT'); - v_is_new_supplier := CASE WHEN v_id_supplier <= 0 THEN TRUE ELSE FALSE END; - - - -- Temporary tables - /* - CREATE TABLE tmp_Shop_Supplier ( - id_supplier INTEGER NOT NULL, - name_company VARCHAR(255) NOT NULL, - name_contact VARCHAR(255) NULL, - department_contact VARCHAR(255) NULL, - id_address INTEGER NOT NULL, - CONSTRAINT FK_tmp_Shop_Supplier_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 INTEGER NOT NULL, - CONSTRAINT FK_tmp_Shop_Supplier_id_currency - FOREIGN KEY (id_currency) - REFERENCES Shop_Currency(id_currency), - active BOOLEAN NOT NULL, - can_view BOOLEAN NOT NULL, - can_edit BOOLEAN NOT NULL, - can_admin BOOLEAN NOT NULL - ); - */ - - CREATE TABLE IF NOT EXISTS tmp_Msg_Error ( - display_order INTEGER NOT NULL PRIMARY KEY GENERATED ALWAYS AS IDENTITY, - guid UUID NOT NULL, - id_type INTEGER 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 v_name_company = '' THEN - /* - INSERT INTO tmp_Msg_Error ( - guid, id_type, msg - ) - VALUES - (v_guid, v_id_error_type_bad_data, 'Supplier company name must be provided') - ; - */ - RAISE EXCEPTION 'Supplier company name must be provided' - USING ERRCODE = '22000' - ; - END IF; - - IF v_id_address IS NULL THEN - /* - INSERT INTO tmp_Msg_Error ( - guid, id_type, msg - ) - VALUES - (v_guid, v_id_error_type_bad_data, 'Address ID must be provided') - ; - */ - RAISE EXCEPTION 'Address ID must be provided' - USING ERRCODE = '22000' - ; - END IF; - - IF v_email = '' THEN - /* - INSERT INTO tmp_Msg_Error ( - guid, id_type, msg - ) - VALUES - (v_guid, v_id_error_type_bad_data, 'Email must be provided') - ; - */ - RAISE EXCEPTION 'Email must be provided.' - USING ERRCODE = '22000' - ; - END IF; - - IF v_comment = '' THEN - RAISE EXCEPTION 'A comment must be provided.' - USING ERRCODE = '22000' - ; - END IF; - - - IF (v_is_new_supplier = FALSE AND NOT EXISTS (SELECT * FROM Shop_Supplier S WHERE S.id_supplier = v_id_supplier)) THEN - RAISE EXCEPTION 'Invalid supplier ID: %', v_id_supplier - USING ERRCODE = '22000' - ; - END IF; - - /* - IF NOT EXISTS (SELECT * FROM tmp_Msg_Error) THEN - INSERT INTO tmp_Shop_Supplier ( - id_supplier, name_company, name_contact, department_contact, id_address, phone_number, fax, email, website, id_currency, active - ) - VALUES - (v_id_supplier, v_name_company, v_name_contact, v_department_contact, v_id_address, v_phone_number, v_fax, v_email, v_website, v_id_currency, v_active) - /* - FROM Shop_Supplier S - WHERE (NOT v_has_filter_category OR C.id_category LIKE '%' || v_ids_category || '%') - AND (v_get_inactive_categories OR C.active) - */ - ; - END IF; - */ - - -- Permissions - CALL p_shop_calc_user(v_guid_permission, v_id_user, v_id_permission_supplier, ''); - - /* - UPDATE tmp_Shop_Supplier t_S - INNER JOIN Shop_Calc_User_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; - */ - v_has_permission := (SELECT can_edit FROM Shop_Calc_User_Temp WHERE GUID = v_guid_permission); - - IF v_has_permission = FALSE THEN - 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 - v_guid, - v_id_error_type_no_permission, - 'You do not have %' || name || ' permissions.' - FROM Shop_Permission - WHERE id_permission = v_id_permission_supplier - ; - */ - RAISE EXCEPTION 'No permission: %', ( - SELECT name_error - FROM Shop_Calc_User_Temp - WHERE GUID = v_guid_permission - ) - USING ERRCODE = '42501' - ; - END IF; - - -- CALL p_shop_clear_calc_user(v_guid_permission); - - DELETE FROM Shop_Calc_User_Temp - WHERE GUID = v_guid; - - - -- Transaction - INSERT INTO Shop_Sales_And_Purchasing_Change_Set ( - comment, - updated_last_by, - updated_last_on - ) - VALUES ( - 'Save ' - || CASE WHEN v_is_new_supplier = TRUE THEN 'new ' ELSE '' END - || 'Supplier - ' - || v_comment, - v_id_user, - CURRENT_TIMESTAMP - ); - - 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_supplier = TRUE) THEN - INSERT INTO Shop_Supplier ( - -- id_supplier, - name_company, name_contact, department_contact, id_address, phone_number, fax, email, website, id_currency, active, id_change_set - ) - VALUES - ( - -- v_id_supplier, - v_name_company, v_name_contact, v_department_contact, v_id_address, v_phone_number, v_fax, v_email, v_website, v_id_currency, v_active, v_id_change_set - ) - /* - FROM Shop_Supplier S - WHERE (NOT v_has_filter_category OR C.id_category LIKE '%' || v_ids_category || '%') - AND (v_get_inactive_categories OR C.active) - */ - ; - ELSE - UPDATE Shop_Supplier S - -- INNER JOIN tmp_Shop_Supplier t_S ON S.id_supplier = t_S.id_supplier - 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 - */ - S.name_company = v_name_company, - S.name_contact = v_name_contact, - S.department_contact = v_department_contact, - S.id_address = v_id_address, - S.phone_number = v_phone_number, - S.fax = v_fax, - S.email = v_email, - S.website = v_website, - S.id_currency = v_id_currency, - S.active = v_active, - S.id_change_set = v_id_change_set - ; - END IF; - COMMIT; - - -- Returns - -- v_now = CURRENT_TIMESTAMP; - - -- Errors - /* - OPEN result_errors FOR - SELECT * - FROM tmp_Msg_Error - ; - -- RETURN NEXT result_errors; - */ - - DROP TABLE tmp_Shop_Supplier; - -- DROP TABLE tmp_Msg_Error; -END; -$$ LANGUAGE plpgsql; - - - - - - --- DROP TABLE IF EXISTS tmp_Shop_Manufacturing_Purchase_Order_Product_Link; --- DROP TABLE IF EXISTS tmp_Msg_Error; - -CREATE OR REPLACE PROCEDURE p_shop_save_manufacturing_purchase_order ( - IN a_guid UUID, - IN a_id_user INTEGER, - IN a_id_order INTEGER, - -- IN a_id_supplier_ordered INTEGER, - IN a_id_currency_cost INTEGER, - IN a_active BOOLEAN, - IN a_comment UUID -) -AS $$ -DECLARE - v_guid UUID; - v_id_user INTEGER; - v_comment VARCHAR(4000); - v_id_order INTEGER; - v_id_currency_cost INTEGER; - v_active BOOLEAN; - v_id_error_type_bad_data INTEGER; - v_code_error_type_bad_data VARCHAR(50); - v_id_error_type_no_permission INTEGER; - v_code_error_type_no_permission VARCHAR(50); - v_guid_permission UUID; - -- v_id_user VARCHAR(100); - v_id_permission_manufacturing_purchase_order INTEGER; - v_id_access_level_EDIT INTEGER; - v_ids_product VARCHAR(4000); - v_ids_product_no_permission VARCHAR(4000); - -- v_id_order_new INTEGER; - v_id_change_set INTEGER; - v_is_new_manufacturing_purchase_order BOOLEAN; - result_errors REFCURSOR; -BEGIN - -- SET SESSION sql_mode = sys.list_drop(@@session.sql_mode, 'ONLY_FULL_GROUP_BY'); - - v_guid := COALESCE(a_guid, gen_random_uuid()); - v_id_user := TRIM(COALESCE(a_id_user, '')); - v_comment := TRIM(COALESCE(a_comment, '')); - v_id_order := COALESCE(a_id_order, -1); - v_id_currency_cost := a_id_currency_cost; - v_active := COALESCE(a_active, FALSE); - - v_code_error_type_bad_data = 'BAD_DATA'; - v_id_error_type_bad_data := (SELECT id_type FROM Shop_Msg_Error_Type WHERE code = v_code_error_type_bad_data LIMIT 1); - v_code_error_type_no_permission = 'NO_PERMISSION'; - v_id_error_type_no_permission := (SELECT id_type FROM Shop_Msg_Error_Type WHERE code = v_code_error_type_no_permission LIMIT 1); - v_guid_permission = gen_random_uuid(); - -- v_id_user = CURRENT_USER; - v_id_permission_manufacturing_purchase_order := (SELECT id_permission FROM Shop_Permission WHERE code = 'STORE_MANUFACTURING_PURCHASE_ORDER' LIMIT 1); - v_id_access_level_EDIT := (SELECT id_access_level FROM Shop_Access_Level WHERE code = 'EDIT'); - v_is_new_manufacturing_purchase_order := CASE WHEN v_id_order <= 0 THEN TRUE ELSE FALSE END; - - -- Temporary tables - /* - CREATE TABLE tmp_Shop_Supplier_Purchase_Order ( - id_order INTEGER NOT NULL PRIMARY KEY, - id_supplier_ordered INTEGER NOT NULL, - CONSTRAINT FK_tmp_Shop_Supplier_Purchase_Order_id_supplier_ordered - FOREIGN KEY (id_supplier_ordered) - REFERENCES Shop_Supplier(id_supplier), - cost_total_local REAL NOT NULL, - id_currency_cost INTEGER NOT NULL - ); - */ - - CREATE TABLE tmp_Shop_Manufacturing_Purchase_Order_Product_Link ( - id_link INTEGER NOT NULL PRIMARY KEY, - id_order INTEGER NOT NULL, - /* - CONSTRAINT FK_tmp_Supplier_Purchase_Order_Product_Link_id_order - FOREIGN KEY (id_order) - REFERENCES Shop_Manufacturing_Purchase_Order(id_order), - */ - id_permutation INTEGER NOT NULL, - CONSTRAINT FK_tmp_Manuf_Purch_Order_Product_Link_id_permutation - FOREIGN KEY (id_permutation) - REFERENCES Shop_Product_Permutation(id_permutation), - cost_total_local REAL NOT NULL, - id_currency_cost INTEGER NOT NULL, - value_produced_total_local REAL NOT NULL, - quantity_used REAL NOT NULL, - id_unit_quantity INTEGER NOT NULL, - CONSTRAINT FK_tmp_Manuf_Purch_Order_Product_Link_id_unit_quantity - FOREIGN KEY (id_unit_quantity) - REFERENCES Shop_Unit_Measurement(id_unit_measurement), - quantity_produced REAL NULL, - latency_manufacture INTEGER NOT NULL, - display_order INTEGER NOT NULL, - active BOOLEAN NOT NULL, - name_error VARCHAR(200) NOT NULL - ); - - /* - CREATE TABLE IF NOT EXISTS tmp_Msg_Error ( - display_order INTEGER NOT NULL PRIMARY KEY GENERATED ALWAYS AS IDENTITY, - guid UUID NOT NULL, - id_type INTEGER 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 - -- User ID - IF NOT EXISTS (SELECT * FROM Shop_User WHERE id_user = v_id_user) THEN - RAISE EXCEPTION 'Invalid User ID: %', COALESCE(v_id_user, 'NULL') - USING ERRCODE = '22000' - ; - END IF; - - -- Order ID - IF ((v_id_order > 0) AND NOT EXISTS (SELECT * FROM Shop_Manufacturing_Purchase_Order WHERE id_order = v_id_order)) THEN - RAISE EXCEPTION 'Invalid Manufacturing Purchase Order ID: %', COALESCE(v_id_order, 'NULL') - USING ERRCODE = '22000' - ; - END IF; - - /* - -- Supplier ID - IF NOT EXISTS (SELECT * FROM tmp_Msg_Error) THEN - IF ISNULL(v_id_supplier_ordered) OR NOT EXISTS (SELECT * FROM Shop_Supplier WHERE id_supplier = v_id_supplier_ordered) THEN - INSERT INTO tmp_Msg_Error ( - guid, id_type, code, msg - ) - VALUES - (v_guid, v_id_error_type_bad_data, v_code_error_type_bad_data, CONCAT('Invalid supplier ID: ', COALESCE(v_id_supplier_ordered, 'NULL'))) - ; - END IF; - END IF; - */ - - -- Currency ID - IF ISNULL(v_id_currency_cost) OR NOT EXISTS (SELECT * FROM Shop_Currency WHERE id_currency = v_id_currency_cost) THEN - RAISE EXCEPTION 'Invalid currency ID: %', COALESCE(v_id_currency, 'NULL') - USING ERRCODE = '22000' - ; - END IF; - - -- Comment - IF v_comment = '' THEN - /* - INSERT INTO tmp_Msg_Error ( - guid, id_type, code, msg - ) - VALUES - (v_guid, v_id_error_type_bad_data, v_code_error_type_bad_data, 'A comment must be provided.') - ; - */ - RAISE EXCEPTION 'A comment must be provided.' - USING ERRCODE = '22000' - ; - END IF; - - - -- Get data from Temp table - INSERT INTO tmp_Shop_Manufacturing_Purchase_Order_Product_Link ( - id_link, - id_order, - id_permutation, - cost_total_local, - id_currency_cost, - quantity_used, - id_unit_quantity, - quantity_produced, - value_produced_total_local, - latency_manufacture, - display_order, - active, - name_error - ) - SELECT - MPOPL_T.id_link, - MPOPL_T.id_order, - MPOPL_T.id_permutation, - PP.cost_local * MPOPL_T.quantity_used AS cost_total_local, - MPOPL_T.id_currency_cost, - MPOPL_T.quantity_used, - MPOPL_T.id_unit_quantity, - MPOPL_T.quantity_produced, - (PP.cost_local + PP.profit_local_min) * MPOPL_T.quantity_produced AS value_produced_total_local, - MPOPL_T.latency_manufacture, - MPOPL_T.display_order, - MPOPL_T.active, - PP.id_permutation, ' - ' || COALESCE(P.name ,'') AS name_error - FROM Shop_Manufacturing_Purchase_Order_Product_Link_Temp MPOPL_T - INNER JOIN Shop_Product_Permutation PP ON MPOPL_T.id_permutation = PP.id_permutation - INNER JOIN Shop_Product P ON PP.id_product = P.id_product - WHERE MPOPL_T.GUID = v_guid - -- GROUP BY MPOPL_T.id_order, name_error, MPOPL_T.id_link - /* - group by - MPOPL_T.id_link, - MPOPL_T.id_order, - MPOPL_T.id_permutation, - cost_total_local, - MPOPL_T.id_currency_cost, - MPOPL_T.quantity_used, - MPOPL_T.id_unit_quantity, - MPOPL_T.quantity_produced, - value_produced_total_local, - MPOPL_T.latency_manufacture, - MPOPL_T.display_order, - MPOPL_T.active, - name_error - */ - -- GROUP BY id_link, P.id_product, PP.id_permutation - -- GROUP BY name_error, ID_LINK, cost_total_local, value_produced_total_local - ; - DELETE FROM Shop_Manufacturing_Purchase_Order_Product_Link_Temp MPOPL_T - WHERE MPOPL_T.GUID = v_guid - ; - - -- Invalid quantity used - IF EXISTS ( - SELECT * - FROM tmp_Shop_Manufacturing_Purchase_Order_Product_Link - WHERE - NOT ISNULL(quantity_used) - AND quantity_used < 0 - ) THEN - /* - INSERT INTO tmp_Msg_Error ( - guid, id_type, code, msg - ) - SELECT - v_guid, - v_id_error_type_bad_data, - v_code_error_type_bad_data, - 'Invalid quantity used property for the following permutations: ' || STRING_AGG(t_MPOPL.name_error, ', ') - FROM tmp_Shop_Manufacturing_Purchase_Order_Product_Link t_MPOPL - WHERE t_MPOPL.quantity_used < 0 - ; - */ - RAISE EXCEPTION 'Invalid quantity used property for the following permutations: %', ( - SELECT STRING_AGG(t_MPOPL.name_error, ', ') - FROM tmp_Shop_Manufacturing_Purchase_Order_Product_Link t_MPOPL - WHERE t_MPOPL.quantity_used < 0 - ) - USING ERRCODE = '22000' - ; - END IF; - - -- Invalid quantity produced - IF EXISTS ( - SELECT * - FROM tmp_Shop_Manufacturing_Purchase_Order_Product_Link - WHERE - NOT ISNULL(quantity_produced) - AND quantity_produced < 0 - ) THEN - /* - INSERT INTO tmp_Msg_Error ( - guid, id_type, code, msg - ) - SELECT - v_guid, - v_id_error_type_bad_data, - v_code_error_type_bad_data, - 'Invalid quantity produced property for the following permutations: ' || STRING_AGG(t_MPOPL.name_error, ', ') - FROM tmp_Shop_Manufacturing_Purchase_Order_Product_Link t_MPOPL - WHERE t_MPOPL.quantity_produced < 0 - ; - */ - RAISE EXCEPTION 'Invalid quantity produced property for the following permutations: %', ( - SELECT STRING_AGG(t_MPOPL.name_error, ', ') - FROM tmp_Shop_Manufacturing_Purchase_Order_Product_Link t_MPOPL - WHERE t_MPOPL.quantity_produced < 0 - ) - USING ERRCODE = '22000' - ; - END IF; - - -- Duplicates - IF EXISTS (SELECT id_permutation, name_error, COUNT(*) FROM tmp_Shop_Manufacturing_Purchase_Order_Product_Link t_MPOPL GROUP BY id_permutation HAVING COUNT(*) > 1) THEN - /* - INSERT INTO tmp_Msg_Error ( - guid, id_type, code, msg - ) - SELECT - v_guid, - v_id_error_type_bad_data, - v_code_error_type_bad_data, - 'Duplicate records: ' || STRING_AGG(t_MPOPLC.name_error, ', ') - FROM (SELECT id_permutation, name_error, COUNT(*) FROM tmp_Shop_Manufacturing_Purchase_Order_Product_Link t_MPOPL GROUP BY id_permutation HAVING COUNT(*) > 1) t_MPOPLC - ; - */ - RAISE EXCEPTION 'Duplicate records: %', ( - SELECT STRING_AGG(t_MPOPLC.name_error, ', ') - FROM (SELECT id_permutation, name_error, COUNT(*) FROM tmp_Shop_Manufacturing_Purchase_Order_Product_Link t_MPOPL GROUP BY id_permutation HAVING COUNT(*) > 1) t_MPOPLC - ) - USING ERRCODE = '22000' - ; - END IF; - - - -- Permissions - v_ids_product := ( - SELECT STRING_AGG(DISTINCT PP.id_product, ',') - FROM tmp_Shop_Manufacturing_Purchase_Order_Product_Link t_MPO - INNER JOIN Shop_Product_Permutation PP ON t_MPO.id_permutation = PP.id_permutation - ); - - CALL p_shop_calc_user(v_guid_permission, v_id_user, 0, v_id_permission_manufacturing_purchase_order, v_id_access_level_edit, v_ids_product); - - /* - UPDATE tmp_Shop_Supplier t_S - INNER JOIN Shop_Calc_User_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; - */ - /* - v_has_permission := ( - SELECT can_edit - FROM Shop_Calc_User_Temp - WHERE - GUID = v_guid_permission - AND can_edit = 0 - ); - - IF v_has_permission = FALSE THEN - 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 - v_guid, - v_id_error_type_no_permission, - CONCAT('You do not have ', name, ' permissions.') - FROM Shop_Permission - WHERE id_permission = v_id_permission_manufacturing_purchase_order - ; - END IF; - */ - v_ids_product_no_permission := ( - SELECT STRING_AGG(PT.id_product, ',') - FROM Shop_Calc_User_Temp PT - WHERE - PT.can_edit = 0 - AND NOT ISNULL(PT.id_product) - ); - IF NOT ISNULL(v_ids_product_no_permission) THEN - /* - INSERT INTO tmp_Msg_Error ( - guid, id_type, code, msg - ) - VALUES ( - v_guid, - v_id_error_type_no_permission, - v_code_error_type_no_permission, - */ - RAISE EXCEPTION 'You do not have permission to edit the following product IDs: %', v_ids_product_no_permission - USING ERRCODE = '42501' - ; - END IF; - - -- Transaction - START TRANSACTION; - INSERT INTO Shop_Sales_And_Purchasing_Change_Set ( - comment, - updated_last_by, - updated_last_on - ) - VALUES ( - 'Save ' - || CASE WHEN v_is_new_manufacturing_purchase_order = TRUE THEN 'new ' ELSE '' END - || 'Manufacturing Purchase Order - ' - || v_comment, - v_id_user, - CURRENT_TIMESTAMP - ); - - v_id_change_set := (SELECT id_change_set FROM Shop_Sales_And_Purchasing_Change_Set ORDER BY id_change_set DESC LIMIT 1); - - IF (v_is_new_manufacturing_purchase_order = 1) THEN - INSERT INTO Shop_Manufacturing_Purchase_Order ( - -- id_supplier_ordered, - cost_total_local, - id_currency_cost, - value_produced_total_local, - created_by, - id_change_set, - active - ) - SELECT - -- v_id_supplier_ordered, - SUM(t_MPOPL.cost_total_local), - v_id_currency_cost, - SUM(t_MPOPL.value_produced_total_local), - v_id_user, - v_id_change_set, - v_active - FROM tmp_Shop_Manufacturing_Purchase_Order_Product_Link t_MPOPL - ; - -- v_id_order_new - v_id_order := (SELECT id_order FROM Shop_Manufacturing_Purchase_Order ORDER BY id_order DESC LIMIT 1); - - INSERT INTO Shop_Manufacturing_Purchase_Order_Product_Link ( - id_order, - id_permutation, - cost_total_local, - value_produced_total_local, - id_currency_cost, - quantity_used, - id_unit_quantity, - quantity_produced, - latency_manufacture, - display_order, - active, - created_by, - id_change_set - ) - SELECT - v_id_order, -- v_id_order_new, - id_permutation, - cost_total_local, - value_produced_total_local, - id_currency_cost, - quantity_used, - id_unit_quantity, - quantity_produced, - latency_manufacture, - display_order, - active, - v_id_user, - v_id_change_set - FROM tmp_Shop_Manufacturing_Purchase_Order_Product_Link t_MPOPL - ; - ELSE - UPDATE Shop_Manufacturing_Purchase_Order MPO - SET - -- MPO.id_supplier_ordered = v_id_supplier_ordered, - MPO.cost_total_local = SUM(t_MPOPL.cost_total_local), - MPO.value_produced_total_local = SUM(t_MPOPL.value_produced_total_local), - MPO.id_currency = v_id_currency_cost, - MPO.id_change_set = v_id_change_set, - MPO.active = v_active - FROM Shop_Manufacturing_Purchase_Order MPO - INNER JOIN tmp_Shop_Manufacturing_Purchase_Order_Product_Link t_MPOPL ON MPO.id_order = t_MPOPL.id_order - WHERE MPO.id_order = v_id_order - ; - IF EXISTS (SELECT * FROM tmp_Shop_Manufacturing_Purchase_Order_Product_Link t_MPOPL INNER JOIN Shop_Manufacturing_Purchase_Order_Product_Link MPOPL ON t_MPOPL.id_link = MPOPL.id_link) THEN - UPDATE Shop_Manufacturing_Purchase_Order_Product_Link MPOPL - SET - MPOPL.id_order = t_MPOPL.id_order, - MPOPL.id_permutation = t_MPOPL.id_permutation, - MPOPL.cost_total_local = t_MPOPL.cost_total_local, - MPOPL.value_produced_total_local = t_MPOPL.value_produced_total_local, - MPOPL.id_currency_cost = t_MPOPL.id_currency_cost, - MPOPL.quantity_used = t_MPOPL.quantity_used, - MPOPL.id_unit_quantity = t_MPOPL.id_unit_quantity, - MPOPL.quantity_produced = t_MPOPL.quantity_produced, - MPOPL.latency_manufacture = t_MPOPL.latency_manufacture, - MPOPL.display_order = t_MPOPL.display_order, - MPOPL.active = t_MPOPL.active, - MPOPL.id_change_set = v_id_change_set - FROM Shop_Manufacturing_Purchase_Order_Product_Link MPOPL - INNER JOIN tmp_Shop_Manufacturing_Purchase_Order_Product_Link t_MPOPL - ON MPOPL.id_link = t_MPOPL.id_link - ; - ELSE - INSERT INTO Shop_Manufacturing_Purchase_Order_Product_Link ( - id_order, - id_permutation, - cost_total_local, - value_produced_total_local, - id_currency_cost, - quantity_used, - id_unit_quantity, - quantity_produced, - latency_manufacture, - display_order, - active, - created_by, - id_change_set - ) - SELECT - id_order, - id_permutation, - cost_total_local, - value_produced_total_local, - id_currency_cost, - quantity_used, - id_unit_quantity, - quantity_produced, - latency_manufacture, - display_order, - active, - v_id_user, - v_id_change_set - FROM tmp_Shop_Manufacturing_Purchase_Order_Product_Link t_MPOPL - WHERE t_MPOPL.id_link < 0 - ; - END IF; - END IF; - - COMMIT; - - -- Returns - -- v_now = CURRENT_TIMESTAMP; - /* - -- Manufacturing Purchase Orders - SELECT * - FROM Shop_Manufacturing_Purchase_Order - WHERE - id_order = v_id_order - -- GUID = v_guid - ; - - -- Manufacturing Purchase Order Product Links - SELECT * - FROM Shop_Manufacturing_Purchase_Order_Product_Link - WHERE - id_order = v_id_order - -- GUID = v_guid - ; - */ - - -- Errors - /* - OPEN result_errors FOR - SELECT * - FROM tmp_Msg_Error - ; - -- RETURN NEXT result_errors; - */ - - -- DROP TABLE tmp_Shop_Manufacturing_Purchase_Order; - DROP TABLE tmp_Shop_Manufacturing_Purchase_Order_Product_Link; - -- DROP TABLE tmp_Msg_Error; -END; -$$ LANGUAGE plpgsql; - - -/* - -DELETE FROM Shop_Manufacturing_Purchase_Order_Product_Link_Audit; -DELETE FROM Shop_Manufacturing_Purchase_Order_Product_Link; -DELETE FROM Shop_Manufacturing_Purchase_Order_Product_Link_Temp; -DELETE FROM Shop_Manufacturing_Purchase_Order_Audit; -DELETE FROM Shop_Manufacturing_Purchase_Order; - -INSERT INTO Shop_Manufacturing_Purchase_Order_Product_Link_Temp ( - guid, - id_link, - id_order, - id_permutation, - cost_total_local, - id_currency_cost, - quantity_used, - id_unit_quantity, - quantity_produced, - latency_manufacture, - display_order, - active -) -VALUES - ( - 'NIPS', -- guid - -1, -- id_link, - -1, -- id_order, - 1, -- id_permutation, - 100, -- cost_total_local, - 1, -- id_currency_cost, - 1, -- quantity_used, - 1, -- id_unit_quantity, - 1, -- quantity_produced, - 14, -- latency_manufacture , - 1, -- display_order - 1 -- active - ) -; - -SELECT * FROM Shop_Manufacturing_Purchase_Order_Product_Link_Temp; - -CALL p_shop_save_manufacturing_purchase_order ( - 'NIPS', -- a_guid - 'auth0|6582b95c895d09a70ba10fef', -- a_id_user - -1, -- a_id_order - 1, -- a_id_currency_cost - 1, -- a_active - 'Initial data' -- a_comment -); - -SELECT * FROM Shop_Manufacturing_Purchase_Order_Product_Link_Temp; - -DELETE FROM Shop_Manufacturing_Purchase_Order_Product_Link_Audit; -DELETE FROM Shop_Manufacturing_Purchase_Order_Product_Link; -DELETE FROM Shop_Manufacturing_Purchase_Order_Product_Link_Temp; -DELETE FROM Shop_Manufacturing_Purchase_Order_Audit; -DELETE FROM Shop_Manufacturing_Purchase_Order; - - -*/ - - - - - -CREATE OR REPLACE PROCEDURE p_shop_save_customer ( - IN a_guid UUID, - IN a_id_user INTEGER, - IN a_comment UUID, - IN a_id_customer INTEGER, - IN a_name_company VARCHAR(256), - IN a_name_contact VARCHAR(256), - IN a_department_contact VARCHAR(256), - IN a_id_address INTEGER, - IN a_phone_number VARCHAR(20), - IN a_email VARCHAR(515), - IN a_id_currency INTEGER, - IN a_active BOOLEAN -) -AS $$ -DECLARE - v_guid UUID; - v_id_user INTEGER; - v_comment VARCHAR(4000); - v_id_customer INTEGER; - v_name_company VARCHAR(256); - v_name_contact VARCHAR(256); - v_department_contact VARCHAR(256); - v_id_address INTEGER; - v_phone_number VARCHAR(256); - v_email VARCHAR(256); - v_id_currency INTEGER; - v_active BOOLEAN; - v_id_error_type_bad_data INTEGER; - v_id_error_type_no_permission INTEGER; - v_guid_permission UUID; - v_id_permission_customer INTEGER; - v_id_access_level_EDIT INTEGER; - v_has_permission BOOLEAN; - v_id_change_set INTEGER; - v_is_new_customer BOOLEAN; - -- result_errors REFCURSOR; -BEGIN - -- SET SESSION sql_mode = sys.list_drop(@@session.sql_mode, 'ONLY_FULL_GROUP_BY'); - - v_guid := COALESCE(a_guid, gen_random_uuid()); - v_id_user := TRIM(COALESCE(a_id_user, '')); - v_comment := TRIM(COALESCE(a_comment, '')); - v_id_customer := COALESCE(a_id_customer, -1); - v_name_company := TRIM(COALESCE(a_name_company, '')); - v_name_contact := TRIM(COALESCE(a_name_contact, '')); - v_department_contact := TRIM(COALESCE(a_department_contact, '')); - v_id_address := a_id_address; - v_phone_number := TRIM(COALESCE(a_phone_number, '')); - v_email := TRIM(COALESCE(a_email, '')); - v_id_currency := a_id_currency; - v_active := COALESCE(a_active, FALSE); - - v_id_error_type_bad_data := (SELECT id_type FROM Shop_Msg_Error_Type WHERE code = 'BAD_DATA'); - v_guid_permission = gen_random_uuid(); - v_id_permission_customer = (SELECT id_permission FROM Shop_Permission WHERE code = 'STORE_CUSTOMER' LIMIT 1); - v_id_access_level_EDIT = (SELECT id_access_level FROM Shop_Access_Level WHERE code = 'EDIT'); - v_is_new_customer := CASE WHEN v_id_customer <= 0 THEN TRUE ELSE FALSE END; - - -- Temporary tables - /* - CREATE TABLE tmp_Shop_Customer ( - id_customer INTEGER NOT NULL, - name_company VARCHAR(255) NOT NULL, - name_contact VARCHAR(255) NULL, - department_contact VARCHAR(255) NULL, - id_address INTEGER 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 INTEGER NOT NULL, - CONSTRAINT FK_tmp_Shop_Customer_id_currency - FOREIGN KEY (id_currency) - REFERENCES Shop_Currency(id_currency), - active BOOLEAN NOT NULL, - can_view BOOLEAN NOT NULL, - can_edit BOOLEAN NOT NULL, - can_admin BOOLEAN NOT NULL - ); - */ - /* - CREATE TABLE IF NOT EXISTS tmp_Msg_Error ( - display_order INTEGER NOT NULL PRIMARY KEY GENERATED ALWAYS AS IDENTITY, - guid UUID NOT NULL, - id_type INTEGER 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 v_name_company = '' THEN - RAISE EXCEPTION 'Customer company name must be provided' - USING ERRCODE = '22000' - ; - END IF; - IF v_id_address IS NULL THEN - /* - INSERT INTO tmp_Msg_Error ( - guid, id_type, msg - ) - VALUES - (v_guid, v_id_error_type_bad_data, 'Customer address ID must be provided') - ; - */ - RAISE EXCEPTION 'Customer address ID must be provided' - USING ERRCODE = '22000' - ; - END IF; - IF v_email = '' THEN - /* - INSERT INTO tmp_Msg_Error ( - guid, id_type, msg - ) - VALUES - (v_guid, v_id_error_type_bad_data, 'Customer email must be provided') - ; - */ - RAISE EXCEPTION 'Customer email must be provided' - USING ERRCODE = '22000' - ; - END IF; - - - IF NOT EXISTS (SELECT * FROM tmp_Msg_Error) THEN - /* - IF (v_is_new_customer = FALSE AND NOT EXISTS (SELECT * FROM Shop_Customer C WHERE C.id_customer = v_id_customer)) THEN - INSERT INTO tmp_Msg_Error ( - guid, id_type, msg - ) - VALUES - (v_guid, v_id_error_type_bad_data, 'Invalid customer ID: ' || v_id_customer) - ; - END IF; - */ - RAISE EXCEPTION 'Invalid customer ID: %', v_id_customer - USING ERRCODE = '22000' - ; - 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 - (v_id_customer, v_name_company, v_name_contact, v_department_contact, v_id_address, v_phone_number, v_fax, v_email, v_website, v_id_currency, v_active) - /* - FROM Shop_Customer S - WHERE (NOT v_has_filter_category OR C.id_category LIKE '%' || v_ids_category || '%') - AND (v_get_inactive_categories OR C.active) - */ - ; - END IF; - */ - - -- Permissions - CALL p_shop_calc_user(v_guid_permission, v_id_user, 0, v_id_permission_customer, v_id_access_level_edit, ''); - - /* - UPDATE tmp_Shop_Customer t_S - INNER JOIN Shop_Calc_User_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; - */ - v_has_permission := (SELECT can_edit FROM Shop_Calc_User_Temp WHERE GUID = v_guid_permission); - - IF v_has_permission = FALSE THEN - 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 - v_guid, - v_id_error_type_no_permission, - 'You do not have ' || name || ' permissions.' - FROM Shop_Permission - WHERE id_permission = v_id_permission_customer - ; - RAISE EXCEPTION 'You do not have ' || name || ' permissions.' - FROM Shop_Permission - WHERE id_permission = v_id_permission_customer - USING ERRCODE = '22000' - ; - */ - END IF; - - -- CALL p_shop_clear_calc_user(v_guid_permission); - - DELETE FROM Shop_Calc_User_Temp - WHERE GUID = v_guid; - - - -- Transaction - INSERT INTO Shop_Sales_And_Purchasing_Change_Set ( - comment, - updated_last_by, - updated_last_on - ) - VALUES ( - 'Save ' - || CASE WHEN v_is_new_customer = TRUE THEN 'new ' ELSE '' END - || 'Customer - ' - || v_comment, - v_id_user, - CURRENT_TIMESTAMP - ); - - 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 = TRUE) 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 - ( - -- v_id_customer, - v_name_company, v_name_contact, v_department_contact, v_id_address, v_phone_number, v_email, v_id_currency, v_active, v_id_change_set - ) - /* - FROM Shop_Customer S - WHERE (NOT v_has_filter_category OR C.id_category LIKE '%' || v_ids_category || '%') - AND (v_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 = v_name_company, - C.name_contact = v_name_contact, - C.department_contact = v_department_contact, - C.id_address = v_id_address, - C.phone_number = v_phone_number, - C.email = v_email, - C.id_currency = v_id_currency, - C.active = v_active, - C.id_change_set = v_id_change_set - ; - END IF; - - COMMIT; - - -- Returns - -- v_now = CURRENT_TIMESTAMP; - - -- Errors - /* - OPEN result_errors FOR - SELECT * - FROM tmp_Msg_Error - ; - -- RETURN NEXT result_errors; - */ - - -- DROP TABLE tmp_Shop_Customer; - -- DROP TABLE tmp_Msg_Error; -END; -$$ LANGUAGE plpgsql; - - -/* - -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 -; - -*/ - --- DROP TABLE IF EXISTS tmp_Shop_Customer_Sales_Order_Product_Link; --- DROP TABLE IF EXISTS tmp_Msg_Error; - -CREATE OR REPLACE PROCEDURE p_shop_save_customer_sales_order ( - IN a_guid UUID, - IN a_id_user INTEGER, - IN a_comment VARCHAR(4000), - IN a_id_order INTEGER, - IN a_id_customer INTEGER, - IN a_id_currency_price INTEGER, - IN a_active BOOLEAN -) -AS $$ -DECLARE - v_guid UUID; - v_id_user INTEGER; - v_comment VARCHAR(4000); - v_id_order INTEGER; - v_id_customer INTEGER; - v_id_currency_price INTEGER; - v_active BOOLEAN; - v_id_error_type_bad_data INTEGER; - v_code_error_type_bad_data VARCHAR(50); - v_id_error_type_no_permission INTEGER; - v_code_error_type_no_permission VARCHAR(50); - -- v_guid_permission UUID; - v_id_permission_Customer_Sales_order INTEGER; - v_id_access_level_EDIT INTEGER; - v_ids_product VARCHAR(4000); - v_ids_product_no_permission VARCHAR(4000); - -- v_id_order_new INTEGER; - v_id_change_set INTEGER; - v_is_new_Customer_Sales_order BOOLEAN; - result_errors REFCURSOR; -BEGIN - -- SET SESSION sql_mode = sys.list_drop(@@session.sql_mode, 'ONLY_FULL_GROUP_BY'); - - v_guid := COALESCE(a_guid, gen_random_uuid()); - v_id_user := TRIM(COALESCE(a_id_user, '')); - v_comment := TRIM(COALESCE(a_comment, '')); - v_id_order := COALESCE(a_id_order, -1); - v_id_customer := a_id_customer; - v_id_currency_price := a_id_currency_price; - v_active := COALESCE(a_active, FALSE); - - v_code_error_type_bad_data := 'BAD_DATA'; - v_id_error_type_bad_data := (SELECT id_type FROM Shop_Msg_Error_Type WHERE code = v_code_error_type_bad_data LIMIT 1); - v_code_error_type_no_permission := 'NO_PERMISSION'; - v_id_error_type_no_permission := (SELECT id_type FROM Shop_Msg_Error_Type WHERE code = v_code_error_type_no_permission LIMIT 1); - -- v_guid_permission := gen_random_uuid(); - v_id_permission_Customer_Sales_order := (SELECT id_permission FROM Shop_Permission WHERE code = 'STORE_CUSTOMER_SALES_ORDER' LIMIT 1); - v_id_access_level_EDIT := (SELECT id_access_level FROM Shop_Access_Level WHERE code = 'EDIT'); - - v_is_new_Customer_Sales_order := CASE WHEN v_id_order <= 0 THEN TRUE ELSE FALSE END; - - -- Temporary tables - /* - CREATE TABLE tmp_Shop_Customer_Sales_Order ( - id_order INTEGER NOT NULL PRIMARY KEY, - id_supplier_ordered INTEGER NOT NULL, - CONSTRAINT FK_tmp_Shop_Customer_Sales_Order_id_supplier_ordered - FOREIGN KEY (id_supplier_ordered) - REFERENCES Shop_Supplier(id_supplier), - price_total_local REAL NOT NULL, - id_currency_price INTEGER NOT NULL - ); - */ - - CREATE TABLE tmp_Shop_Customer_Sales_Order_Product_Link ( - id_link INTEGER NOT NULL PRIMARY KEY, - id_order INTEGER NOT NULL, - /* - CONSTRAINT FK_tmp_Supplier_Purchase_Order_Product_Link_id_order - FOREIGN KEY (id_order) - REFERENCES Shop_Customer_Sales_Order(id_order), - */ - id_permutation INTEGER NOT NULL, - CONSTRAINT FK_tmp_Supplier_Purchase_Order_Product_Link_id_permutation - FOREIGN KEY (id_permutation) - REFERENCES Shop_Product_Permutation(id_permutation), - price_total_local REAL NOT NULL, - id_currency_price INTEGER NOT NULL, - quantity_ordered REAL NOT NULL, - id_unit_quantity INTEGER NOT NULL, - CONSTRAINT FK_tmp_Supplier_Purchase_Order_Product_Link_id_unit_quantity - FOREIGN KEY (id_unit_quantity) - REFERENCES Shop_Unit_Measurement(id_unit_measurement), - quantity_delivered REAL NULL, - latency_delivery_days INTEGER NOT NULL, - display_order INTEGER NOT NULL, - active BOOLEAN NOT NULL, - name_error VARCHAR(200) NOT NULL - ); - - CREATE TABLE IF NOT EXISTS tmp_Msg_Error ( - display_order INTEGER NOT NULL PRIMARY KEY GENERATED ALWAYS AS IDENTITY, - guid UUID NOT NULL, - id_type INTEGER 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 - -- User ID - IF NOT EXISTS (SELECT * FROM tmp_Msg_Error) THEN - IF NOT EXISTS (SELECT * FROM Shop_User WHERE id_user = v_id_user) THEN - INSERT INTO tmp_Msg_Error ( - guid, id_type, code, msg - ) - VALUES - (v_guid, v_id_error_type_bad_data, v_code_error_type_bad_data, CONCAT('Invalid User ID: ', COALESCE(v_id_user, 'NULL'))) - ; - END IF; - END IF; - - -- Order ID - IF NOT EXISTS (SELECT * FROM tmp_Msg_Error) THEN - IF (v_id_order > 0) AND NOT EXISTS (SELECT * FROM Shop_Customer_Sales_Order WHERE id_order = v_id_order) THEN - INSERT INTO tmp_Msg_Error ( - guid, id_type, code, msg - ) - VALUES - (v_guid, v_id_error_type_bad_data, v_code_error_type_bad_data, CONCAT('Invalid Customer Sales Order ID: ', COALESCE(v_id_order, 'NULL'))) - ; - END IF; - END IF; - - -- Customer ID - IF NOT EXISTS (SELECT * FROM tmp_Msg_Error) THEN - IF ISNULL(v_id_customer) OR NOT EXISTS (SELECT * FROM Shop_Customer WHERE id_customer = v_id_customer) THEN - INSERT INTO tmp_Msg_Error ( - guid, id_type, code, msg - ) - VALUES - (v_guid, v_id_error_type_bad_data, v_code_error_type_bad_data, CONCAT('Invalid Customer ID: ', COALESCE(v_id_customer, 'NULL'))) - ; - END IF; - END IF; - - -- Currency ID - IF NOT EXISTS (SELECT * FROM tmp_Msg_Error) THEN - IF ISNULL(v_id_currency_price) OR NOT EXISTS (SELECT * FROM Shop_Currency WHERE id_currency = v_id_currency_price) THEN - INSERT INTO tmp_Msg_Error ( - guid, id_type, code, msg - ) - VALUES - (v_guid, v_id_error_type_bad_data, v_code_error_type_bad_data, CONCAT('Invalid currency ID: ', COALESCE(v_id_currency, 'NULL'))) - ; - END IF; - END IF; - - -- Comment - IF NOT EXISTS (SELECT * FROM tmp_Msg_Error) THEN - IF v_comment = '' THEN - INSERT INTO tmp_Msg_Error ( - guid, id_type, code, msg - ) - VALUES - (v_guid, v_id_error_type_bad_data, v_code_error_type_bad_data, 'A comment must be provided.') - ; - END IF; - END IF; - - - -- Get data from Temp table - IF NOT EXISTS (SELECT * FROM tmp_Msg_Error) THEN - INSERT INTO tmp_Shop_Customer_Sales_Order_Product_Link ( - id_link, - id_order, - id_permutation, - price_total_local, - id_currency_price, - quantity_ordered, - id_unit_quantity, - quantity_delivered, - latency_delivery_days, - display_order, - active, - name_error - ) - SELECT - CSOPL_T.id_link, - CSOPL_T.id_order, - CSOPL_T.id_permutation, - (PP.cost_local + PP.profit_local_min) * quantity_ordered AS price_total_local, - CSOPL_T.id_currency_price, - CSOPL_T.quantity_ordered, - CSOPL_T.id_unit_quantity, - CSOPL_T.quantity_delivered, - CSOPL_T.latency_delivery_days, - CSOPL_T.display_order, - CSOPL_T.active, - PP.id_permutation || ' - ' || COALESCE(P.name ,'') AS name_error - FROM Shop_Customer_Sales_Order_Product_Link_Temp CSOPL_T - INNER JOIN Shop_Product_Permutation PP ON CSOPL_T.id_permutation = PP.id_permutation - INNER JOIN Shop_Product P ON PP.id_product = P.id_product - WHERE CSOPL_T.GUID = v_guid - ; - DELETE FROM Shop_Customer_Sales_Order_Product_Link_Temp CSOPL_T - WHERE CSOPL_T.GUID = v_guid - ; - - /* - UPDATE tmp_Shop_Customer_Sales_Order_Product_Link t_CSOPL - SET - price_total_local - */ - END IF; - - -- Invalid quantity ordered - IF NOT EXISTS (SELECT * FROM tmp_Msg_Error) THEN - IF EXISTS ( - SELECT * - FROM tmp_Shop_Customer_Sales_Order_Product_Link - WHERE - NOT ISNULL(quantity_ordered) - AND quantity_ordered < 0 - ) THEN - INSERT INTO tmp_Msg_Error ( - guid, id_type, code, msg - ) - SELECT - v_guid, - v_id_error_type_bad_data, - v_code_error_type_bad_data, - 'Invalid quantity ordered property for the following permutations: ' || STRING_AGG(t_CSOPL.name_error, ', ') - FROM tmp_Shop_Customer_Sales_Order_Product_Link t_CSOPL - -- INNER JOIN Shop_Product_Permutation PP ON t_CSOPL.id_permutation = PP.id_permutation - WHERE t_CSOPL.quantity_ordered < 0 - ; - END IF; - END IF; - - -- Duplicates - IF NOT EXISTS (SELECT * FROM tmp_Msg_Error) THEN - IF EXISTS (SELECT id_permutation, name_error, COUNT(*) FROM tmp_Shop_Customer_Sales_Order_Product_Link t_CSOPL GROUP BY id_permutation HAVING COUNT(*) > 1) THEN - INSERT INTO tmp_Msg_Error ( - guid, id_type, code, msg - ) - SELECT - v_guid, - v_id_error_type_bad_data, - v_code_error_type_bad_data, - 'Duplicate records: ' || STRING_AGG(t_CSOPLC.name_error, ', ') - FROM (SELECT id_permutation, name_error, COUNT(*) FROM tmp_Shop_Customer_Sales_Order_Product_Link t_CSOPL GROUP BY id_permutation HAVING COUNT(*) > 1) t_CSOPLC - ; - END IF; - END IF; - - - - -- Permissions - IF NOT EXISTS (SELECT * FROM tmp_Msg_Error) THEN - v_ids_product := ( - SELECT STRING_AGG(DISTINCT PP.id_product, ',') - FROM tmp_Shop_Customer_Sales_Order_Product_Link t_SPO - INNER JOIN Shop_Product_Permutation PP ON t_SPO.id_permutation = PP.id_permutation - ); - - CALL p_shop_calc_user(v_guid_permission, v_id_user, 0, v_id_permission_Customer_Sales_order, v_id_access_level_edit, v_ids_product); - - /* - UPDATE tmp_Shop_Supplier t_S - INNER JOIN Shop_Calc_User_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_Calc_User_Temp - WHERE - GUID = v_guid_permission - AND can_edit = 0 - ); - - IF v_has_permission = FALSE THEN - 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 - v_guid, - v_id_error_type_no_permission, - CONCAT('You do not have ', name, ' permissions.') - FROM Shop_Permission - WHERE id_permission = v_id_permission_Customer_Sales_order - ; - END IF; - */ - v_ids_product_no_permission := ( - SELECT STRING_AGG(PT.id_product, ',') - FROM Shop_Calc_User_Temp PT - WHERE - PT.can_edit = 0 - AND NOT ISNULL(PT.id_product) - ); - IF NOT ISNULL(v_ids_product_no_permission) THEN - INSERT INTO tmp_Msg_Error ( - guid, id_type, code, msg - ) - VALUES ( - v_guid, - v_id_error_type_no_permission, - v_code_error_type_no_permission, - 'You do not have permission to edit the following product IDs: ' || v_ids_product_no_permission - ) - ; - END IF; - - DELETE FROM Shop_Calc_User_Temp - WHERE GUID = v_guid; - END IF; - - -- Transaction - IF NOT EXISTS (SELECT * FROM tmp_Msg_Error) THEN - START TRANSACTION; - INSERT INTO Shop_Sales_And_Purchasing_Change_Set ( - comment, - updated_last_by, - updated_last_on - ) - VALUES ( - 'Save ' - || CASE WHEN v_is_new_Customer_Sales_order = TRUE THEN 'new ' ELSE '' END - || 'Customer Sales Order - ' - || v_comment, - v_id_user, - CURRENT_TIMESTAMP - ); - - v_id_change_set := (SELECT id_change_set FROM Shop_Sales_And_Purchasing_Change_Set ORDER BY id_change_set DESC LIMIT 1); - - IF (v_is_new_Customer_Sales_order = 1) THEN - INSERT INTO Shop_Customer_Sales_Order ( - id_customer, - price_total_local, - id_currency_price, - created_by, - id_change_set, - active - ) - SELECT - v_id_customer, - SUM(t_CSOPL.price_total_local), - v_id_currency_price, - v_id_user, - v_id_change_set, - v_active - FROM tmp_Shop_Customer_Sales_Order_Product_Link t_CSOPL - ; - -- v_id_order_new - v_id_order := (SELECT id_order FROM Shop_Customer_Sales_Order ORDER BY id_order DESC LIMIT 1); - INSERT INTO Shop_Customer_Sales_Order_Product_Link ( - id_order, - id_permutation, - price_total_local, - id_currency_price, - quantity_ordered, - id_unit_quantity, - quantity_delivered, - latency_delivery_days, - display_order, - active, - created_by, - id_change_set - ) - SELECT - v_id_order, -- v_id_order_new, - id_permutation, - price_total_local, - id_currency_price, - quantity_ordered, - id_unit_quantity, - quantity_delivered, - latency_delivery_days, - display_order, - active, - v_id_user, - v_id_change_set - FROM tmp_Shop_Customer_Sales_Order_Product_Link t_CSOPL - ; - ELSE - UPDATE Shop_Customer_Sales_Order CSO - SET - CSO.id_customer = v_id_customer, - CSO.price_total_local = SUM(t_CSOPL.price_total_local), - CSO.id_currency = v_id_currency_price, - CSO.id_change_set = v_id_change_set, - CSO.active = v_active - FROM Shop_Customer_Sales_Order CSO - INNER JOIN tmp_Shop_Customer_Sales_Order_Product_Link t_CSOPL ON CSO.id_order = t_CSOPL.id_order - WHERE SPO.id_order = v_id_order - ; - IF EXISTS (SELECT * FROM tmp_Shop_Customer_Sales_Order_Product_Link t_CSOPL INNER JOIN Shop_Customer_Sales_Order_Product_Link CSOPL ON t_CSOPL.id_link = CSOPL.id_link) THEN - UPDATE Shop_Customer_Sales_Order_Product_Link CSOPL - SET - CSOPL.id_order = t_CSOPL.id_order, - CSOPL.id_permutation = t_CSOPL.id_permutation, - CSOPL.price_total_local = t_CSOPL.price_total_local, - CSOPL.id_currency_price = t_CSOPL.id_currency_price, - CSOPL.quantity_ordered = t_CSOPL.quantity_ordered, - CSOPL.id_unit_quantity = t_CSOPL.id_unit_quantity, - CSOPL.quantity_delivered = t_CSOPL.quantity_delivered, - CSOPL.latency_delivery_days = t_CSOPL.latency_delivery_days, - CSOPL.display_order = t_CSOPL.display_order, - CSOPL.active = t_CSOPL.active, - CSOPL.id_change_set = v_id_change_set - FROM Shop_Customer_Sales_Order_Product_Link CSOPL - INNER JOIN tmp_Shop_Customer_Sales_Order_Product_Link t_CSOPL - ON CSOPL.id_link = t_CSOPL.id_link - ; - ELSE - INSERT INTO Shop_Customer_Sales_Order_Product_Link ( - id_order, - id_permutation, - price_total_local, - id_currency_price, - quantity_ordered, - id_unit_quantity, - quantity_delivered, - latency_delivery_days, - display_order, - active, - created_by, - id_change_set - ) - SELECT - id_order, - id_permutation, - price_total_local, - id_currency_price, - quantity_ordered, - id_unit_quantity, - quantity_delivered, - latency_delivery_days, - display_order, - active, - v_id_user, - v_id_change_set - FROM tmp_Shop_Customer_Sales_Order_Product_Link t_CSOPL - WHERE t_CSOPL.id_link < 0 - ; - END IF; - END IF; - - COMMIT; - /* - IF EXISTS (SELECT * FROM tmp_Msg_Error) THEN - ROLLBACK; - ELSE - COMMIT; - END IF; - */ - END IF; - - -- Returns - -- v_now := CURRENT_TIMESTAMP; - /* - -- Supplier Purchase Orders - SELECT * - FROM Shop_Customer_Sales_Order - WHERE id_order = v_id_order - ; - - -- Supplier Purchase Order Product Links - SELECT * - FROM Shop_Customer_Sales_Order_Product_Link - WHERE id_order = v_id_order - ; - */ - - -- Errors - OPEN result_errors FOR - SELECT * - FROM tmp_Msg_Error - ; - -- RETURN NEXT result_errors; - - -- DROP TABLE tmp_Shop_Customer_Sales_Order; - DROP TABLE tmp_Shop_Customer_Sales_Order_Product_Link; - DROP TABLE tmp_Msg_Error; -END; -$$ LANGUAGE plpgsql; - - -/* - -DELETE FROM Shop_Customer_Sales_Order_Product_Link_Audit; -DELETE FROM Shop_Customer_Sales_Order_Product_Link; -DELETE FROM Shop_Customer_Sales_Order_Product_Link_Temp; -DELETE FROM Shop_Customer_Sales_Order_Audit; -DELETE FROM Shop_Customer_Sales_Order; - -INSERT INTO Shop_Customer_Sales_Order_Product_Link_Temp ( - guid, - id_link, - id_order, - id_permutation, - price_total_local, - id_currency_price, - quantity_ordered, - id_unit_quantity, - quantity_delivered, - latency_delivery_days, - display_order, - active -) -VALUES - ( - 'NIPS', -- guid - -1, -- id_link, - -1, -- id_order, - 1, -- id_permutation, - 100, -- price_total_local, - 1, -- id_currency_price, - 1, -- quantity_ordered, - 1, -- id_unit_quantity, - 1, -- quantity_delivered, - 14, -- latency_delivery_days , - 1, -- display_order - 1 -- active - ) -; - -SELECT * FROM Shop_Customer_Sales_Order_Product_Link_Temp; - -CALL p_shop_save_customer_sales_order ( - 'NIPS', -- a_guid - 'auth0|6582b95c895d09a70ba10fef', -- a_id_user - 'Initial customer', -- a_comment - -1, -- a_id_order - 4, -- a_id_customer - 1, -- a_id_currency_price - 1 -- a_active -); - -SELECT * FROM Shop_Customer_Sales_Order_Product_Link_Temp; - -DELETE FROM Shop_Customer_Sales_Order_Product_Link_Audit; -DELETE FROM Shop_Customer_Sales_Order_Product_Link; -DELETE FROM Shop_Customer_Sales_Order_Product_Link_Temp; -DELETE FROM Shop_Customer_Sales_Order_Audit; -DELETE FROM Shop_Customer_Sales_Order; - - -*/ - - - - -/* - -CALL p_shop_save_user ( - 'auth0|6582b95c895d09a70ba10fef', -- a_id_user - '', -- a_name - '', -- a_email - 0 -- a_email_verified -) - -*/ - - -CREATE OR REPLACE PROCEDURE p_shop_save_user ( - IN a_id_user INTEGER, - IN a_name VARCHAR(255), - IN a_email VARCHAR(254), - IN a_email_verified BIT -) -AS $$ -DECLARE - v_id_user INTEGER; - v_name VARCHAR(255); - v_email VARCHAR(254); - v_email_verified BIT; - v_has_filter_user BOOLEAN; - result_errors REFCURSOR; -BEGIN - v_id_user := TRIM(COALESCE(a_id_user, '')); - v_name := TRIM(COALESCE(a_name, '')); - v_email := TRIM(COALESCE(a_email, '')); - v_email_verified := COALESCE(a_email_verified, FALSE); - - v_has_filter_user = CASE WHEN v_id_user = '' THEN FALSE ELSE TRUE END; - - -- Temporary tables - DROP TABLE IF EXISTS tmp_Msg_Error; - DROP TABLE IF EXISTS tmp_Shop_User; - - CREATE TABLE tmp_Shop_User ( - id_user INTEGER, - CONSTRAINT FK_tmp_Shop_User_id_user - FOREIGN KEY (id_user) - REFERENCES Shop_User(id_user), - active BOOLEAN NOT NULL - ); - - CREATE TABLE tmp_Msg_Error ( - display_order INTEGER NOT NULL PRIMARY KEY GENERATED ALWAYS AS IDENTITY, - id_type INTEGER NOT NULL, - -- code VARCHAR(50) NOT NULL, - -- CONSTRAINT chk_tmp_Msg_Error_code CHECK (code IN (SELECT code FROM Shop_Msg_Error_Type)), - CONSTRAINT FK_tmp_Msg_Error_id_type - FOREIGN KEY (id_type) - REFERENCES Shop_Msg_Error_Type(id_type), - msg VARCHAR(4000) NOT NULL - ); - - - -- Parse filters - - - -- User - IF v_has_filter_user THEN - INSERT INTO tmp_Shop_User ( - id_user, - active - ) - SELECT id_user, - active - FROM Shop_User - WHERE id_user = v_id_user - AND active - LIMIT 1 - ; - - IF NOT EXISTS (SELECT id_user FROM tmp_Shop_User LIMIT 1) THEN - INSERT INTO Shop_User ( - id_user, - name, - email, - email_verified - ) - VALUES ( - v_id_user, - v_name, - v_email, - v_email_verified - ); - - INSERT INTO tmp_Shop_User ( - id_user, - active - ) - SELECT id_user, - active - FROM Shop_User - WHERE id_user = v_id_user - AND active - LIMIT 1 - ; - END IF; - - v_id_user := (SELECT id_user FROM tmp_Shop_User LIMIT 1); - ELSE - INSERT INTO tmp_Msg_Error ( - id_type, - msg - ) - VALUES ( - (SELECT id_type FROM Shop_Msg_Error_Type WHERE code = 'BAD_DATA' LIMIT 1), - 'No user ID provided.' - ) - ; - END IF; - - - /* - IF NOT EXISTS (SELECT msg FROM tmp_Msg_Error LIMIT 1) THEN - END IF; - */ - - - -- Returns - /* - -- User - SELECT * - FROM tmp_Shop_User - ; - */ - - -- Errors - OPEN result_errors FOR - SELECT * - FROM tmp_Msg_Error - ; - -- RETURN NEXT result_errors; - - /* - -- Return arguments for test - SELECT a_id_user, - a_name, - a_email, - a_email_verified - ; - */ - - -- Clean up - DROP TABLE IF EXISTS tmp_Msg_Error; - DROP TABLE IF EXISTS tmp_Shop_User; -END; -$$ LANGUAGE plpgsql; - - -/* - -CALL p_shop_save_user ( - '', - '', - '', - 0 -) - -*/ - - - -/* - -CALL p_shop_edit_user_basket ( - '', -- a_id_user - '', -- a_ids_permutation_basket - '', -- a_quantities_permutation_basket - 1, -- a_id_permutation_edit - NULL, -- a_quantity_permutation_edit - 1, -- a_sum_not_edit - 1, -- a_id_currency_edit - 1 -- a_id_region_purchase -) - -* - - -CREATE OR REPLACE PROCEDURE p_shop_edit_user_basket ( - IN a_id_user INTEGER, - IN a_ids_permutation_basket VARCHAR(4000), - IN a_quantities_permutation_basket VARCHAR(4000), - IN a_id_permutation_edit INTEGER, - IN a_quantity_permutation_edit INTEGER, - IN a_sum_not_edit BOOLEAN, - IN a_id_currency INTEGER, - IN a_id_region_purchase INT -) -AS $$ -DECLARE - v_guid UUID; - v_id_user INTEGER; - v_ids_permutation_basket BOOLEAN; - v_quantities_permutation_basket VARCHAR -- REMAKE WITH TEMP TABLE -BEGIN - -- Argument redeclaration - -- Variable declaration - DECLARE v_has_filter_user BOOLEAN; - DECLARE v_has_filter_permutation_basket BOOLEAN; - DECLARE v_has_filter_permutation_edit BOOLEAN; - DECLARE v_has_filter_region BOOLEAN; - DECLARE v_has_filter_currency BOOLEAN; - DECLARE v_n_id_permutation_basket INTEGER; - DECLARE v_n_quantity_permutation_basket INTEGER; - DECLARE v_row_number INTEGER; - DECLARE v_guid UUID; - -- DECLARE v_id_user VARCHAR(100); - DECLARE v_id_permission_product INTEGER; - DECLARE v_ids_permutation_permission VARCHAR(4000); - DECLARE v_now TIMESTAMP; - -- DECLARE v_quantity_new INTEGER; - DECLARE v_change_set_used BOOLEAN; - DECLARE v_id_change_set INTEGER; - - SET v_guid = gen_random_uuid(); - - -- Argument validation + default values - IF a_id_user IS NULL THEN - SET a_id_user = ''; - ELSE - SET a_id_user = TRIM(a_id_user); - END IF; - IF a_ids_permutation_basket IS NULL THEN - SET a_ids_permutation_basket = ''; - ELSE - SET a_ids_permutation_basket = TRIM(a_ids_permutation_basket); - END IF; - IF a_quantities_permutation_basket IS NULL THEN - SET a_quantities_permutation_basket = ''; - ELSE - SET a_quantities_permutation_basket = TRIM(a_quantities_permutation_basket); - END IF; - IF a_sum_not_edit IS NULL THEN - SET a_sum_not_edit = TRUE; - END IF; - - -- Temporary tables - DROP TABLE IF EXISTS tmp_Msg_Error; - DROP TABLE IF EXISTS tmp_Shop_Basket; - DROP TEMPORARY TABLE IF EXISTS tmp_Shop_Quantity; - DROP TABLE IF EXISTS tmp_Shop_Product; - DROP TABLE IF EXISTS tmp_Shop_User; - - CREATE TABLE tmp_Shop_User ( - id_user INTEGER, - CONSTRAINT FK_tmp_Shop_User_id_user - FOREIGN KEY (id_user) - REFERENCES Shop_User(id_user), - active BOOLEAN NOT NULL - ); - - CREATE TABLE tmp_Shop_Product ( - id_product INTEGER NOT NULL, - CONSTRAINT FK_tmp_Shop_Product_id_product - FOREIGN KEY (id_product) - REFERENCES Shop_Product(id_product), - id_permutation INTEGER NOT NULL, - CONSTRAINT FK_tmp_Shop_Product_id_permutation - FOREIGN KEY (id_permutation) - REFERENCES Shop_Product_Permutation(id_permutation), - display_order INTEGER NOT NULL, - active INTEGER NOT NULL DEFAULT 1 - ); - - CREATE TEMPORARY TABLE tmp_Shop_Quantity( - quantity INTEGER NOT NULL, - display_order INTEGER NOT NULL, - active INTEGER NOT NULL DEFAULT 1 - ); - - CREATE TABLE tmp_Shop_Basket ( - id_category INTEGER NOT NULL, - CONSTRAINT FK_tmp_Shop_Basket_id_category - FOREIGN KEY (id_category) - REFERENCES Shop_Product_Category(id_category), - id_product INTEGER NOT NULL, - CONSTRAINT FK_tmp_Shop_Basket_id_product - FOREIGN KEY (id_product) - REFERENCES Shop_Product(id_product), - id_permutation INTEGER NOT NULL, - CONSTRAINT FK_tmp_Shop_Basket_id_permutation - FOREIGN KEY (id_permutation) - REFERENCES Shop_Product_Permutation(id_permutation), - id_region_purchase INTEGER NOT NULL, - CONSTRAINT FK_tmp_Shop_Basket_id_region_purchase - FOREIGN KEY (id_region_purchase) - REFERENCES Shop_Region(id_region), - id_currency INTEGER NOT NULL, - CONSTRAINT FK_tmp_Shop_Basket_id_currency - FOREIGN KEY (id_currency) - REFERENCES Shop_Currency(id_currency), - quantity INTEGER NOT NULL, - active BOOLEAN NOT NULL DEFAULT TRUE - /* - display_order_category INTEGER NOT NULL, - display_order_product INTEGER NOT NULL - */ - ); - - CREATE TABLE IF NOT EXISTS tmp_Msg_Error ( - display_order INTEGER NOT NULL PRIMARY KEY GENERATED ALWAYS AS IDENTITY, - guid UUID NOT NULL, - id_type INTEGER NOT NULL, - -- code VARCHAR(50) NOT NULL, - -- CONSTRAINT chk_tmp_Msg_Error_code CHECK (code IN (SELECT code FROM Shop_Msg_Error_Type)), - CONSTRAINT FK_tmp_Msg_Error_id_type - FOREIGN KEY (id_type) - REFERENCES Shop_Msg_Error_Type(id_type), - msg VARCHAR(4000) NOT NULL - ); - - - -- Parse filters - SET v_has_filter_user = NOT (a_id_user = ''); - SET v_has_filter_permutation_basket = NOT (a_ids_permutation_basket = ''); - SET v_has_filter_permutation_edit = NOT ISNULL(a_id_permutation_edit); - SET v_has_filter_currency = NOT ISNULL(a_id_currency); - SET v_has_filter_region = NOT ISNULL(a_id_region_purchase); - -- SET v_quantity_new = CASE WHEN a_sum_not_edit THEN quantity + a_quantity_product_edit ELSE a_quantity_product_edit END; - /* - SELECT v_has_filter_user, v_has_filter_basket - ; - - */ - - -- Currency - IF NOT v_has_filter_currency THEN - INSERT INTO tmp_Msg_Error ( - id_type, - guid, - msg - ) - VALUES ( - (SELECT id_type FROM Shop_Msg_Error_Type WHERE code = 'BAD_DATA' LIMIT 1), - v_guid, - 'Currency ID not provided.' - ) - ; - END IF; - IF v_has_filter_currency AND NOT EXISTS ( SELECT * FROM Shop_Currency WHERE id_currency = a_id_currency) THEN - INSERT INTO tmp_Msg_Error ( - id_type, - guid, - msg - ) - VALUES ( - (SELECT id_type FROM Shop_Msg_Error_Type WHERE code = 'BAD_DATA' LIMIT 1), - v_guid, - CONCAT('Currency ID not found: ', a_id_currency, '.') - ) - ; - END IF; - - -- Region - IF NOT v_has_filter_region THEN - INSERT INTO tmp_Msg_Error ( - id_type, - guid, - msg - ) - VALUES ( - (SELECT id_type FROM Shop_Msg_Error_Type WHERE code = 'BAD_DATA' LIMIT 1), - v_guid, - 'Region ID not provided.' - ) - ; - END IF; - IF v_has_filter_region AND NOT EXISTS ( SELECT * FROM Shop_Region WHERE id_region = a_id_region_purchase) THEN - INSERT INTO tmp_Msg_Error ( - id_type, - guid, - msg - ) - VALUES ( - (SELECT id_type FROM Shop_Msg_Error_Type WHERE code = 'BAD_DATA' LIMIT 1), - v_guid, - CONCAT('Region ID not found: ', a_id_region_purchase, '.') - ) - ; - END IF; - - -- User - IF v_has_filter_user THEN - INSERT INTO tmp_Shop_User ( - id_user, - active - ) - SELECT id_user, - active - FROM Shop_User - WHERE id_user LIKE CONCAT('%', a_id_user, '%') - AND active - LIMIT 1 - ; - - IF NOT EXISTS (SELECT id_user FROM tmp_Shop_User LIMIT 1) THEN - SET v_has_filter_user = FALSE; - - INSERT INTO tmp_Msg_Error ( - id_type, - guid, - msg - ) - VALUES ( - (SELECT id_type FROM Shop_Msg_Error_Type WHERE code = 'BAD_DATA' LIMIT 1), - v_guid, - CONCAT('User ID not found: ', a_id_user, '.') - ) - ; - END IF; - - SET a_id_user := (SELECT id_user FROM tmp_Shop_User LIMIT 1); - END IF; - - IF v_has_filter_user AND NOT EXISTS (SELECT msg FROM tmp_Msg_Error WHERE guid = v_guid LIMIT 1) THEN - SET v_change_set_used = FALSE; - INSERT INTO Shop_User_Change_Set ( - comment - ) - VALUES ( - 'edit basket' - ); - SET v_id_change_set := (SELECT id_change_set FROM Shop_User_Change_Set ORDER BY id_change_set DESC LIMIT 1); - END IF; - - -- Get basket - -- User - IF v_has_filter_user AND NOT EXISTS (SELECT msg FROM tmp_Msg_Error WHERE guid = v_guid LIMIT 1) THEN - INSERT INTO tmp_Shop_Basket ( - id_category, - id_product, - id_permutation, - id_region_purchase, - id_currency, - quantity, - active - /* - display_order_category, - display_order_product - */ - ) - SELECT - C.id_category, - UB.id_product, - UB.id_permutation, - UB.id_region_purchase, - UB.id_currency, - UB.quantity, - UB.active - /* - C.display_order, - P.display_order - */ - FROM Shop_User_Basket UB - /* - INNER JOIN tmp_Shop_User t_U - ON UB.id_user = t_U.id_user - */ - INNER JOIN Shop_Product_Permutation PP - ON UB.id_product = PP.id_product - AND PP.active - INNER JOIN Shop_Product P - ON PP.id_product = P.id_product - AND P.active - INNER JOIN Shop_Product_Category C - ON P.id_category = C.id_category - AND C.active - WHERE UB.id_user = a_id_user - ; - END IF; - - -- Currency - IF EXISTS (SELECT * FROM tmp_Shop_Basket WHERE active LIMIT 1) - AND NOT EXISTS (SELECT msg FROM tmp_Msg_Error WHERE guid = v_guid LIMIT 1) THEN - IF EXISTS (SELECT * FROM tmp_Shop_Basket WHERE active AND id_currency != a_id_currency) THEN - INSERT INTO tmp_Msg_Error ( - id_type, - guid, - msg - ) - VALUES ( - (SELECT id_type FROM Shop_Msg_Error_Type WHERE code = 'BAD_DATA' LIMIT 1), - v_guid, - CONCAT( - 'Currency ID does not match currency of other items in basket. Basket currency: ', - (SELECT code FROM Shop_Currency WHERE id_currency = ( - SELECT - id_currency - FROM tmp_Shop_Basket - WHERE active - AND id_currency != a_id_currency - LIMIT 1 - )), - ', new currency: ', - (SELECT code FROM Shop_Currency WHERE id_currency = a_id_currency), - '.' - ) - ) - ; - END IF; - END IF; - - -- Region - IF EXISTS (SELECT * FROM tmp_Shop_Basket WHERE active LIMIT 1) - AND NOT EXISTS (SELECT msg FROM tmp_Msg_Error WHERE guid = v_guid LIMIT 1) THEN - IF EXISTS ( - SELECT * - FROM tmp_Shop_Basket - WHERE - active - AND id_region_purchase != a_id_region_purchase - ) THEN - INSERT INTO tmp_Msg_Error ( - id_type, - guid, - msg - ) - VALUES ( - (SELECT id_type FROM Shop_Msg_Error_Type WHERE code = 'BAD_DATA' LIMIT 1), - v_guid, - CONCAT('Purchase region ID does not match region of other items in basket. Basket currency: ', - (SELECT code FROM Shop_Region WHERE id_region = ( - SELECT - id_region_purchase - FROM tmp_Shop_Basket - WHERE active - AND id_region != a_id_region_purchase - LIMIT 1 - )), - ', new currency: ', - (SELECT code FROM Shop_Region WHERE id_region = a_id_region_purchase), - '.' - ) - ) - ; - END IF; - END IF; - - -- String product id, permutation id, quantity list - IF NOT EXISTS (SELECT * FROM tmp_Shop_Basket WHERE active LIMIT 1) AND NOT EXISTS (SELECT msg FROM tmp_Msg_Error WHERE guid = v_guid LIMIT 1) THEN -- NOT v_has_filter_user AND - -- Get product ids - CALL p_split(a_guid, a_ids_permutation_basket, ','); - INSERT INTO tmp_Shop_Product ( - id_product, id_permutation, display_order - ) - SELECT PP.id_product, ST.substring, ST.display_order - FROM Split_Temp ST - INNER JOIN Shop_Product_Permutation PP - ON ST.substring = PP.id_permutation - -- AND PP.active - ; - /* - SELECT substring as id_product, display_order - FROM Split_Temp - ; - */ - DROP TABLE Split_Temp; - - -- Get product quantities - CALL p_split(a_guid, a_quantities_permutation_basket, ','); - INSERT INTO tmp_Shop_Quantity ( - quantity, display_order - ) - SELECT substring, display_order - FROM Split_Temp - ; - /* - SELECT substring AS quantity_product, display_order - FROM Split_Temp - ; - */ - DROP TABLE Split_Temp; - - -- Compare number of product ids to number of quantities - SET v_n_id_permutation_basket := (SELECT display_order FROM tmp_Shop_Product ORDER BY display_order DESC LIMIT 1); - SET v_n_quantity_permutation_basket := (SELECT display_order FROM tmp_Shop_Quantity ORDER BY display_order DESC LIMIT 1); - IF NOT v_n_id_permutation_basket = v_n_quantity_permutation_basket THEN - INSERT INTO tmp_Msg_Error ( - id_type, - guid, - msg - ) - VALUES ( - (SELECT id_type FROM Shop_Msg_Error_Type WHERE code = 'BAD_DATA' LIMIT 1), - v_guid, - CONCAT('Number of permutations (', v_n_id_permutation_basket, ') does not equal number of quantities (', v_n_quantity_permutation_basket, ') for basket.') - ) - ; - ELSE - INSERT INTO tmp_Shop_Basket ( - id_category, - id_product, - id_permutation, - id_region_purchase, - id_currency, - quantity - ) - SELECT - C.id_category, - P.id_product, - t_P.id_permutation, - a_id_region_purchase, - a_id_currency, - t_Q.quantity - FROM tmp_Shop_Product t_P - INNER JOIN tmp_Shop_Quantity t_Q - ON t_P.display_order = t_Q.display_order - INNER JOIN Shop_Product_Permutation PP - ON t_P.id_permutation = PP.id_permutation - AND PP.active - INNER JOIN Shop_Product P - ON PP.id_product = P.id_product - AND P.active - INNER JOIN Shop_Product_Category C - ON P.id_category = C.id_category - AND C.active - -- RIGHT JOIN tmp_Shop_Basket t_UB ON ISNULL(t_UB.id_product) - -- WHERE t_P.id_product NOT IN (SELECT id_product FROM tmp_Shop_Basket) - ; - - /* - IF EXISTS( - SELECT * - FROM Shop_Product P - INNER JOIN Shop_Product_Category C - ON P.id_category = C.id_category - INNER JOIN tmp_Shop_Basket t_B - ON P.id_product = t_B.id_product - WHERE C.active = FALSE OR P.active = FALSE LIMIT 1 - ) THEN - INSERT INTO tmp_Msg_Error ( - id_type, - guid, - msg - ) - VALUES ( - (SELECT id_type FROM Shop_Msg_Error_Type WHERE code = 'BAD_DATA' LIMIT 1), - v_guid, - CONCAT('No valid product IDs in list: ', a_ids_permutation_basket, '.') - ) - ; - END IF; - */ - END IF; - END IF; - - /* - select v_has_filter_edit; - select * from tmp_Shop_Basket; - select * from tmp_Msg_Error; - */ - - - -- Edit basket product - IF v_has_filter_permutation_edit AND NOT EXISTS (SELECT msg FROM tmp_Msg_Error WHERE guid = v_guid LIMIT 1) THEN - IF EXISTS ( - SELECT * - FROM Shop_Product_Permutation PP - INNER JOIN Shop_Product P - ON PP.id_product = P.id_product - INNER JOIN Shop_Product_Category C - ON P.id_category = C.id_category - WHERE - ( - C.active = FALSE - OR P.active = FALSE - OR PP.active = FALSE - ) - AND PP.id_permutation = a_id_permutation_edit - LIMIT 1 - ) THEN - INSERT INTO tmp_Msg_Error ( - id_type, - guid, - msg - ) - VALUES ( - (SELECT id_type FROM Shop_Msg_Error_Type WHERE code = 'BAD_DATA' LIMIT 1), - v_guid, - CONCAT('Invalid product ID to edit: ', a_id_product_edit, '.') - ) - ; - END IF; - END IF; - IF v_has_filter_permutation_edit AND NOT EXISTS (SELECT msg FROM tmp_Msg_Error WHERE guid = v_guid LIMIT 1) THEN - IF EXISTS ( - SELECT * - FROM tmp_Shop_Basket - WHERE - id_permutation = a_id_permutation_edit - ) THEN - UPDATE tmp_Shop_Basket - SET quantity = CASE WHEN a_sum_not_edit = TRUE THEN COALESCE(quantity, 0) + a_quantity_permutation_edit ELSE a_quantity_permutation_edit END, - active = CASE WHEN CASE WHEN a_sum_not_edit = TRUE THEN COALESCE(quantity, 0) + a_quantity_permutation_edit ELSE a_quantity_permutation_edit END = FALSE THEN FALSE ELSE TRUE END - WHERE id_permutation = a_id_permutation_edit - ; - - IF EXISTS ( - SELECT * - FROM tmp_Shop_Basket t_B - WHERE t_B.quantity < 0 - ) THEN - INSERT INTO tmp_Msg_Error ( - id_type, - guid, - msg - ) - VALUES ( - (SELECT id_type FROM Shop_Msg_Error_Type WHERE code = 'BAD_DATA' LIMIT 1), - v_guid, - 'Invalid basket quantity.' - ) - ; - END IF; - - IF v_has_filter_user AND NOT EXISTS (SELECT msg FROM tmp_Msg_Error WHERE guid = v_guid LIMIT 1) THEN - SET v_change_set_used = TRUE; - - UPDATE Shop_User_Basket UB - INNER JOIN tmp_Shop_Basket t_UB - ON UB.id_permutation = a_id_permutation_edit - SET UB.quantity = t_UB.quantity, - UB.active = t_UB.active, - UB.id_change_set_user = v_id_change_set - WHERE UB.id_permutation = a_id_permutation_edit - AND id_user = a_id_user - ; - END IF; - ELSE - IF a_quantity_permutation_edit < 0 THEN - INSERT INTO tmp_Msg_Error ( - id_type, - guid, - msg - ) - VALUES ( - (SELECT id_type FROM Shop_Msg_Error_Type WHERE code = 'BAD_DATA' LIMIT 1), - v_guid, - 'Invalid basket quantity.' - ) - ; - ELSE - INSERT INTO tmp_Shop_Basket ( - id_category, - id_product, - id_permutation, - id_region_purchase, - id_currency, - quantity, - active - ) - SELECT - P.id_category, - P.id_product, - PP.id_permutation, - a_id_region_purchase, - a_id_currency, - a_quantity_permutation_edit, - CASE WHEN a_quantity_permutation_edit > 0 THEN TRUE ELSE FALSE END - FROM Shop_Product_Permutation PP - INNER JOIN Shop_Product P - ON PP.id_product = P.id_product - WHERE id_permutation = a_id_permutation_edit - ; - IF v_has_filter_user THEN - IF EXISTS ( - SELECT * - FROM Shop_User_Basket UB - WHERE - UB.id_permutation = a_id_permutation_edit - ) THEN - SET v_change_set_used = TRUE; - - UPDATE Shop_User_Basket - INNER JOIN tmp_Shop_Basket t_UB ON UB.id_permutation = t_UB.id_permutation - SET UB.quantity = t_UB.quantity, - UB.active = t_UB.active, - UB.id_change_set_user = v_id_change_set - WHERE UB.id_permutation = a_id_permutation_edit - AND id_user = a_id_user - ; - ELSE - INSERT INTO Shop_User_Basket ( - id_user, - id_product, - id_permutation, - id_region_purchase, - id_currency, - quantity, - active - ) - SELECT a_id_user, - t_UB.id_product, - t_UB.id_permutation, - t_UB.id_region_purchase, - t_UB.id_currency, - t_UB.quantity, - t_UB.active - FROM tmp_Shop_Basket t_UB - WHERE id_permutation = a_id_permutation_edit - ; - END IF; - END IF; - END IF; - END IF; - END IF; - - - -- Checks - /* - SELECT * FROM tmp_Shop_Basket; - SELECT - STRING_AGG(t_UB.id_product, ',') AS basket_product_ids - FROM tmp_Shop_Basket t_UB - -- WHERE ISNULL(t_UB.id_permutation) - ; - SELECT - STRING_AGG(t_UB.id_permutation, ',') AS basket_permutation_ids - FROM tmp_Shop_Basket t_UB - WHERE NOT ISNULL(t_UB.id_permutation) - ; - */ - -- Returns - CALL p_shop_get_many_product ( - a_id_user, -- a_id_user - 1, -- a_get_all_categories - '', -- a_ids_category - 0, -- a_get_inactive_categories - 0, -- a_get_all_products - ( - SELECT - STRING_AGG(t_B.id_product, ',') - FROM tmp_Shop_Basket t_B - WHERE active = TRUE - ), -- a_ids_product - 0, -- a_get_inactive_products - 0, -- a_get_first_product_only - 0, -- a_get_all_product_permutations - ( - SELECT - STRING_AGG(t_B.id_permutation, ',') - FROM tmp_Shop_Basket t_B - WHERE NOT ISNULL(t_B.id_permutation) - AND active = TRUE - ), -- a_ids_permutation - 0, -- a_get_inactive_permutations - 0, -- a_get_all_images - '', -- a_ids_image - 0, -- a_get_inactive_images - 1, -- a_get_first_image_only - 0, -- a_get_all_delivery_region - a_id_region_purchase, -- a_ids_delivery_region - 0, -- a_get_inactive_delivery_region - 0, -- a_get_all_currency - a_id_currency, -- a_ids_currency - 0, -- a_get_inactive_currency - 1, -- a_get_all_discount - '', -- a_ids_discount - 0 -- a_get_inactive_discount - ); - - -- Basket - SELECT t_UB.id_category, - t_UB.id_product, - t_UB.id_permutation, - P.name, - PCL.price_local_VAT_incl, - PCL.price_local_VAT_excl, - PCL.id_currency, - t_UB.quantity - FROM tmp_Shop_Basket t_UB - INNER JOIN Shop_Product_Permutation PP - ON t_UB.id_permutation = PP.id_permutation - INNER JOIN Shop_Product P - ON PP.id_product = P.id_product - INNER JOIN Shop_Product_Category C - ON P.id_category = C.id_category - INNER JOIN Shop_Product_Currency_Link PCL - ON PP.id_permutation = PCL.id_permutation - AND PCL.id_region_purchase = a_id_region_purchase - AND PCL.id_currency = a_id_currency - WHERE t_UB.active = TRUE - ORDER BY C.display_order, P.display_order - ; - - -- Errors - /* Completed by product get many */ - SELECT - t_ME.display_order, - t_ME.guid, - t_ME.id_type, - t_ME.msg, - MET.code, - MET.name, - MET.description - FROM tmp_Msg_Error t_ME - INNER JOIN Shop_Msg_Error_Type MET - ON t_ME.id_type = MET.id_type - WHERE GUID = v_guid - ; - - /* - -- Return arguments for test - SELECT - a_ids_category, - a_get_inactive_categories, - a_ids_product, - a_get_inactive_products, - a_get_first_product_only, - a_get_all_products, - a_ids_image, - a_get_inactive_images, - a_get_first_image_only, - a_get_all_images - ; - */ - - -- Clean up - IF NOT v_change_set_used THEN - DELETE FROM Shop_User_Change_Set - WHERE id_change_set = v_id_change_set - ; - END IF; - - -- DROP TABLE IF EXISTS tmp_Msg_Error; - DELETE FROM tmp_Msg_Error WHERE guid = v_guid; - IF NOT EXISTS (SELECT * FROM tmp_Msg_Error) THEN - DROP TABLE tmp_Msg_Error; - END IF; - DROP TABLE IF EXISTS tmp_Shop_Basket; - DROP TEMPORARY TABLE IF EXISTS tmp_Shop_Quantity; - DROP TABLE IF EXISTS tmp_Shop_Product; - DROP TABLE IF EXISTS tmp_Shop_User; -END; -$$ LANGUAGE plpgsql; - -*/ - - -/* - -CALL p_shop_edit_user_basket ( - '', -- a_id_user - '', -- a_ids_permutation_basket - '', -- a_quantities_permutation_basket - 2, -- a_id_permutation_edit - 1, -- a_quantity_permutation_edit - 1, -- a_sum_not_edit - 2, -- a_id_currency_edit - 1 -- a_id_region_purchase -); - -CALL p_shop_edit_user_basket ( - '', -- a_id_user - '1', -- a_ids_permutation_basket - '9', -- a_quantities_permutation_basket - 1, -- a_id_permutation_edit - 69, -- a_quantity_permutation_edit - 1, -- a_sum_not_edit - 1, -- a_id_currency_edit - 1 -- a_id_region_purchase -); -CALL p_shop_edit_user_basket ( - 'auth0|6582b95c895d09a70ba10feF', -- a_id_user - '2', -- a_ids_permutation_basket - '7', -- a_quantities_permutation_basket - 2, -- a_id_permutation_edit - NULL, -- a_quantity_permutation_edit - 1, -- a_sum_not_edit - 1, -- a_id_currency_edit - 1 -- a_id_region_purchase -); - - - {'a_id_user': 'auth0|6582b95c895d09a70ba10fef', - 'a_ids_permutation_basket': '1', - '7', -- a_quantities_permutation_basket - 'a_id_permutation_edit': 1, - 'a_quantity_permutation_edit': 1, - 'a_sum_not_edit': 1} - - select * from shop_user_basket; - insert into shop_user_change_set (comment) - values( 'deactivate duplicates'); - update SHOP_USER_BASKET - set active = FALSE, - id_change_set_user = (select id_change_set from shop_user_change_set order by id_change_set desc limit 1) - where id_user = 'auth0|6582b95c895d09a70ba10fef' - and id_product = 1 - ; - select * from shop_user_basket; -*/ - - -CREATE OR REPLACE FUNCTION p_shop_get_many_product ( - IN a_id_user INTEGER, - IN a_get_all_category BOOLEAN, - IN a_get_inactive_category BOOLEAN, - IN a_get_first_category_only BOOLEAN, - IN a_ids_category INTEGER[], - IN a_get_all_product BOOLEAN, - IN a_get_inactive_product BOOLEAN, - IN a_get_first_product_only BOOLEAN, - IN a_ids_product INTEGER[], - IN a_get_all_product_permutation BOOLEAN, - IN a_get_inactive_permutation BOOLEAN, - IN a_get_first_permutation_only BOOLEAN, - IN a_ids_permutation INTEGER[], - IN a_get_all_image BOOLEAN, - IN a_get_inactive_image BOOLEAN, - IN a_get_first_image_only BOOLEAN, - IN a_ids_image INTEGER[], - IN a_get_all_delivery_region BOOLEAN, - IN a_get_inactive_delivery_region BOOLEAN, - IN a_ids_delivery_region INTEGER[], - IN a_get_all_currency BOOLEAN, - IN a_get_inactive_currency BOOLEAN, - IN a_ids_currency INTEGER[], - IN a_get_all_discount BOOLEAN, - IN a_get_inactive_discount BOOLEAN, - IN a_ids_discount INTEGER[] -) -RETURNS SETOF REFCURSOR -- categories, SETOF products, SETOF variations, SETOF prices, SETOF images, SETOF delivery_options, SETOF discounts -AS $$ -DECLARE - v_id_user INTEGER; - v_get_all_category BOOLEAN; - v_get_inactive_category BOOLEAN; - v_get_first_category_only BOOLEAN; - v_ids_category INTEGER[]; - v_get_all_product BOOLEAN; - v_get_inactive_product BOOLEAN; - v_get_first_product_only BOOLEAN; - v_ids_product INTEGER[]; - v_get_all_product_permutation BOOLEAN; - v_get_inactive_permutation BOOLEAN; - v_get_first_permutation_only BOOLEAN; - v_ids_permutation INTEGER[]; - v_get_all_image BOOLEAN; - v_get_inactive_image BOOLEAN; - v_get_first_image_only BOOLEAN; - v_ids_image INTEGER[]; - v_get_all_delivery_region BOOLEAN; - v_get_inactive_delivery_region BOOLEAN; - v_ids_delivery_region INTEGER[]; - v_get_all_currency BOOLEAN; - v_get_inactive_currency BOOLEAN; - v_ids_currency INTEGER[]; - v_get_all_discount BOOLEAN; - v_get_inactive_discount BOOLEAN; - v_ids_discount INTEGER[]; - - v_has_filter_category BOOLEAN; - v_has_filter_product BOOLEAN; - v_has_filter_permutation BOOLEAN; - v_has_filter_image BOOLEAN; - v_has_filter_delivery_region BOOLEAN; - v_has_filter_currency BOOLEAN; - v_has_filter_discount BOOLEAN; - v_guid UUID; - -- v_id_user VARCHAR(100); - v_ids_permutation_unavailable VARCHAR(4000); - v_id_permission_product INTEGER; - v_ids_product_permission VARCHAR(4000); - -- v_ids_permutation_permission VARCHAR(4000); - v_id_access_level_view INTEGER; - -- v_now TIMESTAMP; - v_id_minimum INTEGER; - - result_categories REFCURSOR; - result_products REFCURSOR; - result_variations REFCURSOR; - result_prices REFCURSOR; - result_images REFCURSOR; - result_delivery_options REFCURSOR; - result_discounts REFCURSOR; - /* - -- result_errors REFCURSOR; - */ -BEGIN - v_id_user := a_id_user; - v_get_all_category := COALESCE(a_get_all_category, FALSE); - v_get_inactive_category := COALESCE(a_get_inactive_category, FALSE); - v_get_first_category_only := COALESCE(a_get_first_category_only, TRUE); - v_ids_category := COALESCE(a_ids_category, ARRAY[]::INTEGER[]); - v_get_all_product := COALESCE(a_get_all_product, FALSE); - v_get_inactive_product := COALESCE(a_get_inactive_product, FALSE); - v_get_first_product_only := COALESCE(a_get_first_product_only, TRUE); - v_ids_product := COALESCE(a_ids_product, ARRAY[]::INTEGER[]); - v_get_all_product_permutation := COALESCE(a_get_all_product_permutation, FALSE); - v_get_inactive_permutation := COALESCE(a_get_inactive_permutation, FALSE); - v_get_first_permutation_only := COALESCE(a_get_first_permutation_only, TRUE); - v_ids_permutation := COALESCE(a_ids_permutation, ARRAY[]::INTEGER[]); - v_get_all_image := COALESCE(a_get_all_image, TRUE); - v_get_inactive_image := COALESCE(a_get_inactive_image, FALSE); - v_get_first_image_only := COALESCE(a_get_first_image_only, FALSE); - v_ids_image := COALESCE(a_ids_image, ARRAY[]::INTEGER[]); - v_get_all_delivery_region := COALESCE(a_get_all_delivery_region, TRUE); - v_get_inactive_delivery_region := COALESCE(a_get_inactive_delivery_region, FALSE); - v_ids_delivery_region := COALESCE(a_ids_delivery_region, ARRAY[]::INTEGER[]); - v_get_all_currency := COALESCE(a_get_all_currency, TRUE); - v_get_inactive_currency := COALESCE(a_get_inactive_currency, FALSE); - v_ids_currency := COALESCE(a_ids_currency, ARRAY[]::INTEGER[]); - v_get_all_discount := COALESCE(a_get_all_discount, TRUE); - v_get_inactive_discount := COALESCE(a_get_inactive_discount, FALSE); - v_ids_discount := COALESCE(a_ids_discount, ARRAY[]::INTEGER[]); - /* - ROLLBACK; - */ - v_guid := gen_random_uuid(); - v_id_access_level_view := (SELECT id_access_level FROM Shop_Access_Level WHERE code = 'VIEW'); - - v_has_filter_category = (CARDINALITY(v_ids_category) > 0); - v_has_filter_product = (CARDINALITY(v_ids_product) > 0); - v_has_filter_permutation = (CARDINALITY(v_ids_permutation) > 0); - v_has_filter_image = (CARDINALITY(v_ids_image) > 0); - v_has_filter_delivery_region = (CARDINALITY(v_ids_delivery_region) > 0); - v_has_filter_currency = (CARDINALITY(v_ids_currency) > 0); - v_has_filter_discount = (CARDINALITY(v_ids_discount) > 0); - - /* - SELECT v_id_user, v_get_all_category, v_ids_category, v_get_inactive_category, v_get_all_product, - v_ids_product, v_get_inactive_product, v_get_first_product_only, v_get_all_product_permutation, v_ids_permutation, - v_get_inactive_permutation, v_get_all_image, v_ids_image, v_get_inactive_image, v_get_first_image_only, - v_get_all_delivery_region, v_ids_delivery_region, v_get_inactive_delivery_region, v_get_all_currency, v_ids_currency, - v_get_inactive_currency, v_get_all_discount, v_ids_discount, v_get_inactive_discount - ; - */ - - -- Temporary tables - /* - DROP TEMPORARY TABLE IF EXISTS tmp_Discount; - DROP TEMPORARY TABLE IF EXISTS tmp_Currency; - DROP TEMPORARY TABLE IF EXISTS tmp_Delivery_Region; - DROP TEMPORARY TABLE IF EXISTS tmp_Shop_Image; - DROP TEMPORARY TABLE IF EXISTS tmp_Shop_Variation; - DROP TEMPORARY TABLE IF EXISTS tmp_Shop_Product; - DROP TEMPORARY TABLE IF EXISTS tmp_Shop_Product_Category; - */ - DROP TABLE IF EXISTS tmp_Discount; - DROP TABLE IF EXISTS tmp_Currency; - DROP TABLE IF EXISTS tmp_Delivery_Region; - DROP TABLE IF EXISTS tmp_Shop_Image; - DROP TABLE IF EXISTS tmp_Shop_Variation; - DROP TABLE IF EXISTS tmp_Shop_Product; - DROP TABLE IF EXISTS tmp_Shop_Product_Category; - - CREATE TEMPORARY TABLE tmp_Shop_Product_Category ( - id_category INTEGER NOT NULL, - /* - CONSTRAINT FK_tmp_Shop_Product_Category_id_category - FOREIGN KEY (id_category) - REFERENCES Shop_Product_Category(id_category), - */ - active BOOLEAN NOT NULL, - display_order INTEGER NOT NULL, - can_view BOOLEAN, - can_edit BOOLEAN, - can_admin BIT - ); - - CREATE TEMPORARY TABLE tmp_Shop_Product ( - id_category INTEGER NOT NULL, - /* - CONSTRAINT FK_tmp_Shop_Product_id_category - FOREIGN KEY (id_category) - REFERENCES Shop_Product_Category(id_category), - */ - id_product INTEGER NOT NULL, - /* - CONSTRAINT FK_tmp_Shop_Product_id_product - FOREIGN KEY (id_product) - REFERENCES Shop_Product(id_product), - */ - -- product_has_variations BOOLEAN NOT NULL, - id_permutation INTEGER NULL, - /* - CONSTRAINT FK_tmp_Shop_Product_id_permutation - FOREIGN KEY (id_permutation) - REFERENCES Shop_Product_Permutation(id_permutation), - */ - active_category BOOLEAN NOT NULL, - active_product BOOLEAN NOT NULL, - active_permutation BOOLEAN NULL, - display_order_category INTEGER NOT NULL, - display_order_product INTEGER NOT NULL, - display_order_permutation INTEGER NULL, - -- rank_permutation INTEGER NOT NULL, -- _in_category - rank_category INTEGER NOT NULL, - rank_product INTEGER NOT NULL, - rank_permutation INTEGER NOT NULL, - name VARCHAR(255) NOT NULL, - description VARCHAR(4000) NOT NULL, - /* - price_GBP_full REAL NOT NULL, - price_GBP_min REAL NOT NULL, - */ - latency_manufacture INTEGER NOT NULL, - quantity_min REAL NOT NULL, - quantity_max REAL NOT NULL, - quantity_step REAL NOT NULL, - quantity_stock REAL NOT NULL, - is_subscription BOOLEAN NOT NULL, - id_unit_measurement_interval_recurrence INTEGER, - /* - CONSTRAINT FK_tmp_Shop_Product_id_unit_measurement_interval_recurrence - FOREIGN KEY (id_unit_measurement_interval_recurrence) - REFERENCES Shop_Interval_Recurrence(id_interval), - */ - count_interval_recurrence INTEGER, - id_stripe_product VARCHAR(100), - product_has_variations BOOLEAN NOT NULL, - can_view BOOLEAN, - can_edit BOOLEAN, - can_admin BOOLEAN - ); - - /* - CREATE TEMPORARY TABLE tmp_Shop_Variation ( - id_variation INTEGER NOT NULL, - id_product INTEGER NOT NULL, - display_order INTEGER NOT NULL - ); - */ - - CREATE TEMPORARY TABLE tmp_Shop_Image ( - id_image INTEGER NOT NULL, - /* - CONSTRAINT FK_tmp_Shop_Image_id_image - FOREIGN KEY (id_image) - REFERENCES Shop_Image(id_image), - */ - id_product INTEGER NOT NULL, - /* - CONSTRAINT FK_tmp_Shop_Image_id_product - FOREIGN KEY (id_product) - REFERENCES Shop_Product(id_product), - */ - id_permutation INTEGER NULL, - /* - CONSTRAINT FK_tmp_Shop_Image_id_permutation - FOREIGN KEY (id_permutation) - REFERENCES Shop_Product_Permutation(id_permutation), - */ - active BOOLEAN NOT NULL, - display_order INTEGER NOT NULL, - rank_in_product_permutation INTEGER NOT NULL - ); - - CREATE TEMPORARY TABLE tmp_Delivery_Region ( - id_region INTEGER NOT NULL, - /* - CONSTRAINT FK_tmp_Delivery_Region_id_region - FOREIGN KEY (id_region) - REFERENCES Shop_Region(id_region), - */ - active BOOLEAN NOT NULL, - display_order INTEGER NOT NULL, - requires_delivery_option BOOLEAN NOT NULL DEFAULT FALSE - ); - - CREATE TEMPORARY TABLE tmp_Currency ( - id_currency INTEGER NOT NULL, - /* - CONSTRAINT FK_tmp_Shop_Currency_id_currency - FOREIGN KEY (id_currency) - REFERENCES Shop_Currency(id_currency), - */ - active BOOLEAN NOT NULL, - display_order INTEGER NOT NULL - ); - - CREATE TEMPORARY TABLE tmp_Discount ( - id_discount INTEGER NOT NULL, - /* - CONSTRAINT FK_tmp_Discount_id_discount - FOREIGN KEY (id_discount) - REFERENCES Shop_Discount(id_discount), - */ - active BOOLEAN NOT NULL, - display_order INTEGER NOT NULL - ); - - /* - CREATE TEMPORARY TABLE IF NOT EXISTS tmp_Msg_Error ( - display_order INTEGER NOT NULL PRIMARY KEY GENERATED ALWAYS AS IDENTITY, - guid UUID NOT NULL, - id_type INTEGER 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 - ); - */ - - - INSERT INTO tmp_Shop_Product ( - id_category, - id_product, - id_permutation, - active_category, - active_product, - active_permutation, - display_order_category, - display_order_product, - display_order_permutation, - -- rank_permutation, - rank_category, - rank_product, - rank_permutation, - name, - description, - /* - price_GBP_VAT_incl, - price_GBP_VAT_excl, - price_GBP_min, - */ - latency_manufacture, - quantity_min, - quantity_max, - quantity_step, - quantity_stock, - is_subscription, - id_unit_measurement_interval_recurrence, - count_interval_recurrence, - id_stripe_product, - product_has_variations - ) - SELECT - P.id_category, - P.id_product, - -- P.has_variations AS product_has_variations, - PP.id_permutation, - C.active AS active_category, - P.active AS active_product, - PP.active AS active_permutation, - C.display_order AS display_order_category, - P.display_order AS display_order_product, - PP.display_order AS display_order_permutation, - -- RANK() OVER (ORDER BY C.display_order, P.display_order, PP.display_order) AS rank_permutation, -- PARTITION BY P.id_category -- _in_category - RANK() OVER (ORDER BY C.display_order) AS rank_category, - RANK() OVER (PARTITION BY P.id_category ORDER BY P.display_order) AS rank_product, - RANK() OVER (PARTITION BY P.id_category, P.id_product ORDER BY PP.display_order) AS rank_permutation, - P.name, - PP.description, - /* - PP.price_GBP_VAT_incl, - PP.price_GBP_VAT_excl, - PP.price_GBP_min, - */ - PP.latency_manufacture, - PP.quantity_min, - PP.quantity_max, - PP.quantity_step, - PP.quantity_stock, - PP.is_subscription, - PP.id_unit_measurement_interval_recurrence, - PP.count_interval_recurrence, - PP.id_stripe_product, - P.has_variations - FROM Shop_Product P - INNER JOIN Shop_Product_Permutation PP - ON P.id_product = PP.id_product - INNER JOIN Shop_Product_Category C - ON P.id_category = C.id_category - WHERE - -- permutations - ( - ( - v_get_all_product_permutation - OR ( - v_has_filter_permutation - -- AND FIND_IN_SET(PP.id_permutation, v_ids_permutation) > 0 - AND PP.id_permutation = ANY(v_ids_permutation) - ) - ) - AND (v_get_inactive_permutation OR PP.active) - ) - -- categories - AND ( - ( - v_get_all_category - OR ( - v_has_filter_category - -- AND FIND_IN_SET(P.id_category, v_ids_category) > 0 - AND C.id_category = ANY(v_ids_category) - ) - ) - AND (v_get_inactive_category OR C.active) - ) - -- products - AND ( - ( - v_get_all_product - OR ( - v_has_filter_product - -- AND FIND_IN_SET(P.id_product, v_ids_product) > 0 - AND P.id_product = ANY(v_ids_product) - ) - ) - AND (v_get_inactive_product OR P.active) - ) - ; - - -- select * from tmp_Shop_Product; - - IF v_get_first_category_only THEN - DELETE FROM tmp_Shop_Product t_P - WHERE t_P.rank_category > 1 - ; - END IF; - - IF v_get_first_product_only THEN - DELETE FROM tmp_Shop_Product t_P - WHERE t_P.rank_product > 1 - ; - END IF; - - IF v_get_first_permutation_only THEN - DELETE FROM tmp_Shop_Product t_P - WHERE t_P.rank_permutation > 1 - ; - END IF; - - - INSERT INTO tmp_Shop_Product_Category ( - id_category, - active, - display_order - ) - SELECT DISTINCT C.id_category, - C.active, - C.display_order - FROM tmp_Shop_Product t_P - INNER JOIN Shop_Product_Category C - ON t_P.id_category = C.id_category - ORDER BY C.display_order - ; - - /* - INSERT INTO tmp_Shop_Variation ( - id_variation, id_product -- , display_order - ) - SELECT P.id_variation, P.id_product -- , P.display_order - FROM Shop_Variation V - INNER JOIN tmp_Shop_Product t_P - ON V.id_product = t_P.id_product - WHERE V.active; - */ - - -- Product Images - INSERT INTO tmp_Shop_Image ( - id_product, - id_permutation, - id_image, - active, - display_order, - rank_in_product_permutation - ) - SELECT id_product, - id_permutation, - id_image, - active, - ROW_NUMBER() OVER (ORDER BY display_order_product_temp, display_order_image), - RANK() OVER (PARTITION BY id_product, id_permutation ORDER BY display_order_product_temp, display_order_image) - FROM ( - SELECT t_P.id_product, - I.id_permutation, - I.id_image, - I.active, - I.display_order AS display_order_image, - t_P.rank_permutation AS display_order_product_temp - FROM Shop_Image I - INNER JOIN tmp_Shop_Product t_P - ON I.id_product = t_P.id_product - AND NOT t_P.product_has_variations - UNION - SELECT t_P.id_product, - I.id_permutation, - I.id_image, - I.active, - I.display_order AS display_order_image, - t_P.rank_permutation AS display_order_product_temp - FROM Shop_Image I - INNER JOIN tmp_Shop_Product t_P - ON I.id_permutation = t_P.id_permutation - AND t_P.product_has_variations - ) IPP - WHERE - ( - v_get_all_image - OR v_get_first_image_only - -- OR FIND_IN_SET(id_image, v_ids_image) > 0 - OR IPP.id_image = ANY(v_ids_image) - ) - AND (v_get_inactive_image OR IPP.active) - ; - - IF v_get_first_image_only THEN - DELETE FROM tmp_Shop_Image - WHERE rank_in_product_permutation > 1 - ; - END IF; - - /* - IF v_has_filter_image THEN - DELETE FROM tmp_Shop_Product - WHERE id_product NOT IN (SELECT DISTINCT id_product FROM tmp_Shop_Image); - DELETE FROM tmp_Shop_Product_Category - WHERE id_category NOT IN (SELECT DISTINCT id_category FROM tmp_Shop_Product); - END IF; - */ - - -- Delivery Regions - INSERT INTO tmp_Delivery_Region ( - id_region, - active, - display_order, - requires_delivery_option - ) - WITH RECURSIVE Recursive_CTE_Delivery_Region AS ( - SELECT - CAST(NULL AS INTEGER) AS id_region_parent, - DR.id_region AS id_region_child, - -- CASE WHEN FIND_IN_SET(DR.id_region, v_ids_delivery_region) > 0 THEN TRUE ELSE FALSE END AS requires_delivery_option - (DR.id_region = ANY(v_ids_delivery_region)) AS requires_delivery_option - FROM Shop_Product_Currency_Region_Link PCRL - INNER JOIN Shop_Currency C ON PCRL.id_currency = C.id_currency - INNER JOIN tmp_Shop_Product t_P - ON PCRL.id_product = t_P.id_product - AND PCRL.id_permutation = t_P.id_permutation - INNER JOIN Shop_Region DR ON PCRL.id_region_purchase = DR.id_region - WHERE - ( - v_get_all_delivery_region - -- OR FIND_IN_SET(DR.id_region, v_ids_delivery_region) > 0 - OR DR.id_region = ANY(v_ids_delivery_region) - ) - AND ( - v_get_inactive_delivery_region - OR DR.active = TRUE - ) - UNION - SELECT - DRB.id_region_parent, - DRB.id_region_child, - FALSE AS requires_delivery_option - FROM Shop_Region_Branch DRB - INNER JOIN Recursive_CTE_Delivery_Region r_DR - ON DRB.id_region_parent = r_DR.id_region_child - WHERE ( - v_get_inactive_delivery_region - OR DRB.active = TRUE - ) - ) - SELECT - DR.id_region, - DR.active, - DR.display_order, - requires_delivery_option - FROM Shop_Region DR - INNER JOIN Recursive_CTE_Delivery_Region r_DR - ON DR.id_region = r_DR.id_region_parent - OR DR.id_region = r_DR.id_region_child - ; - /* - select * from tmp_delivery_region; - SELECT * - FROM tmp_Shop_Product t_P - WHERE - /*( - v_get_all_category - OR v_get_all_product - OR v_get_all_product_permutation - ) */ - FIND_IN_SET(t_P.id_category, v_ids_category) > 0 - OR FIND_IN_SET(t_P.id_product, v_ids_product) > 0 - OR FIND_IN_SET(t_P.id_permutation, v_ids_permutation) > 0 - ; - */ - - IF v_has_filter_delivery_region THEN - v_ids_permutation_unavailable = ( - SELECT STRING_AGG(t_P.id_permutation, ', ') - FROM ( - SELECT * - FROM tmp_Shop_Product t_P - WHERE - /*( - v_get_all_category - OR v_get_all_produc - OR v_get_all_product_permutation - ) - FIND_IN_SET(t_P.id_category, v_ids_category) > 0 - OR FIND_IN_SET(t_P.id_product, v_ids_product) > 0 - OR FIND_IN_SET(t_P.id_permutation, v_ids_permutation) > 0 - */ - t_P.id_category = ANY(v_ids_category) - OR t_P.id_product = ANY(v_ids_product) - OR t_P.id_permutation = ANY(v_ids_permutation) - ) t_P - LEFT JOIN ( - SELECT * - FROM Shop_Product_Currency_Region_Link PCRL - WHERE - v_get_all_delivery_region - -- OR FIND_IN_SET(PCRL.id_region_purchase, v_ids_delivery_region) > 0 - OR PCRL.id_region_purchase = ANY(v_ids_delivery_region) - ) PCRL - ON t_P.id_product = PCRL.id_product - AND t_P.id_permutation = PCRL.id_permutation - LEFT JOIN tmp_Delivery_Region t_DR - ON PCRL.id_region_purchase = t_DR.id_region - AND t_DR.requires_delivery_option - WHERE - ISNULL(t_DR.id_region) - ); - IF NOT ISNULL(v_ids_permutation_unavailable) THEN - /* - INSERT INTO tmp_Msg_Error ( - guid, - id_type, - code, - msg - ) - VALUES ( - v_guid, - (SELECT id_type FROM Shop_Msg_Error_Type WHERE code = 'PRODUCT_AVAILABILITY' LIMIT 1), - 'PRODUCT_AVAILABILITY', - 'Error: The following permutation IDs are not available in this region: ' || COALESCE(v_ids_permutation_unavailable, 'NULL') - ); - */ - RAISE EXCEPTION 'The following permutation IDs are not available in this region: %', COALESCE(v_ids_permutation_unavailable, 'NULL') - USING ERRCODE = '22000'; - END IF; - /* - DELETE FROM tmp_Shop_Product t_P - WHERE t_P.id_permutation NOT IN ( - SELECT - id_permutation - FROM Shop_Product_Currency_Region_Link PCL - INNER JOIN tmp_Delivery_Region t_DR - ON PCRL.id_region_purchase = t_DR.id_region - ); - */ - END IF; - - -- select * from tmp_Shop_Product; - - -- Currencies - INSERT INTO tmp_Currency ( - id_currency, - active, - display_order - ) - SELECT - C.id_currency, - C.active, - C.display_order - FROM Shop_Product_Currency_Region_Link PCRL - INNER JOIN Shop_Currency C ON PCRL.id_currency = C.id_currency - INNER JOIN tmp_Shop_Product t_P - ON PCRL.id_product = t_P.id_product - AND PCRL.id_permutation = t_P.id_permutation - INNER JOIN tmp_Delivery_Region t_DR ON PCRL.id_region_purchase = t_DR.id_region - WHERE - ( - v_get_all_currency - -- R FIND_IN_SET(C.id_currency, v_ids_currency) > 0 - OR C.id_currency = ANY(v_ids_currency) - ) - AND ( - v_get_inactive_currency - OR ( - C.active - AND PCRL.active - ) - ) - ; - - -- select * from tmp_Currency; - - IF v_has_filter_currency THEN - v_ids_permutation_unavailable = ( - SELECT STRING_AGG(t_P.id_permutation, ', ') - FROM ( - SELECT * - FROM tmp_Shop_Product t_P - WHERE - /*( - v_get_all_category - OR v_get_all_product - OR v_get_all_product_permutation - ) - FIND_IN_SET(t_P.id_category, v_ids_category) > 0 - OR FIND_IN_SET(t_P.id_product, v_ids_product) > 0 - OR FIND_IN_SET(t_P.id_permutation, v_ids_permutation) > 0 - */ - t_P.id_category = ANY(v_ids_category) - OR t_P.id_product = ANY(v_ids_product) - OR t_P.id_permutation = ANY(v_ids_permutation) - ) t_P - INNER JOIN ( - SELECT * - FROM Shop_Product_Currency_Region_Link PCRL - WHERE - ( - v_get_all_currency - -- OR FIND_IN_SET(PCRL.id_currency, v_ids_currency) > 0 - OR PCRL.id_currency = ANY(v_ids_currency) - ) - ) PCRL - ON t_P.id_permutation = PCRL.id_permutation - LEFT JOIN tmp_Currency t_C - ON PCRL.id_currency = t_C.id_currency - WHERE ISNULL(t_C.id_currency) - ); - IF NOT ISNULL(v_ids_permutation_unavailable) THEN - /* - INSERT INTO tmp_Msg_Error ( - guid, - id_type, - code, - msg - ) - VALUES ( - v_guid, - (SELECT id_type FROM Shop_Msg_Error_Type WHERE code = 'PRODUCT_AVAILABILITY' LIMIT 1), - 'PRODUCT_AVAILABILITY', - 'Error: The following permutation IDs are not available in this currency: ' || COALESCE(v_ids_permutation_unavailable, 'NULL') - ); - */ - RAISE EXCEPTION 'The following permutation IDs are not available in this currency: %', COALESCE(v_ids_permutation_unavailable, 'NULL') - USING ERRCODE = '22000'; - END IF; - /* - DELETE FROM tmp_Shop_Product t_P - WHERE t_P.id_permutation NOT IN ( - SELECT - id_permutation - FROM Shop_Product_Currency_Region_Link PCL - INNER JOIN tmp_Currency t_C - ON PCRL.id_currency = t_C.id_currency - ); - */ - END IF; - - -- Discounts - INSERT INTO tmp_Discount ( - id_discount, - active, - display_order - ) - SELECT - D.id_discount, - D.active, - D.display_order - FROM Shop_Discount D - INNER JOIN tmp_Shop_Product t_P - ON D.id_product = t_P.id_product - AND D.id_permutation = t_P.id_permutation - WHERE - ( - v_get_all_discount - -- OR FIND_IN_SET(D.id_discount, v_ids_discount) > 0 - OR D.id_discount = ANY(v_ids_discount) - ) - AND ( - v_get_inactive_discount - OR D.active - ) - ; - -- select 'pre-permission results'; - -- select * from tmp_Shop_Product; - - -- Permissions - IF EXISTS (SELECT * FROM tmp_Shop_Product_Category LIMIT 1) THEN - -- v_id_user := (SELECT id_user FROM Shop_User WHERE name = CURRENT_USER); - v_id_permission_product := (SELECT id_permission FROM Shop_Permission WHERE code = 'STORE_PRODUCT' LIMIT 1); - v_ids_product_permission := (SELECT STRING_AGG(id_product, ',') FROM tmp_Shop_Product WHERE NOT ISNULL(id_product)); - -- v_ids_permutation_permission := (SELECT STRING_AGG(id_permutation, ',') FROM tmp_Shop_Product WHERE NOT ISNULL(id_permutation)); - - -- SELECT v_guid, v_id_user, false, v_id_permission_product, v_id_access_level_view, v_ids_product_permission; - -- select * from Shop_Calc_User_Temp; - - CALL p_shop_calc_user(v_guid, v_id_user, false, v_id_permission_product, v_id_access_level_view, v_ids_product_permission); - - -- select * from Shop_Calc_User_Temp; - - UPDATE tmp_Shop_Product t_P - SET t_P.can_view = UE_T.can_view, - t_P.can_edit = UE_T.can_edit, - t_P.can_admin = UE_T.can_admin - FROM tmp_Shop_Product t_P - INNER JOIN Shop_Calc_User_Temp UE_T - ON t_P.id_product = UE_T.id_product - AND UE_T.GUID = v_guid - ; - -- select * from Shop_Calc_User_Temp; - -- select * from tmp_Shop_Product; - - DELETE FROM tmp_Shop_Product t_P - WHERE - -- FIND_IN_SET(t_P.id_product, (SELECT STRING_AGG(UET.id_product, ',') FROM Shop_Calc_User_Temp UET)) = FALSE -- id_product NOT LIKE CONCAT('%', (SELECT STRING_AGG(id_product, '|') FROM Shop_Calc_User_Temp), '%'); - t_P.id_product NOT IN ( - SELECT id_product - FROM Shop_Calc_User_Temp UET - WHERE UET.GUID = v_guid - ) - OR ISNULL(t_P.can_view) - OR t_P.can_view = FALSE - ; - - -- CALL p_shop_clear_calc_user(v_guid); - -- DROP TABLE IF EXISTS Shop_Calc_User_Temp; - DELETE FROM Shop_Calc_User_Temp - WHERE GUID = v_guid - ; - END IF; - - - -- select * from tmp_Shop_Product; - - -- Returns - -- v_now := CURRENT_TIMESTAMP; - - -- Categories - OPEN result_categories FOR - -- RETURN QUERY - SELECT - DISTINCT t_C.id_category, - C.name, - C.description, - C.display_order - FROM tmp_Shop_Product_Category t_C - INNER JOIN Shop_Product_Category C - ON t_C.id_category = C.id_category - INNER JOIN tmp_Shop_Product t_P - ON t_C.id_category = t_P.id_category - ORDER BY C.display_order - ; - RETURN NEXT result_categories; - -- CLOSE result_categories; - - -- Products - OPEN result_products FOR - -- RETURN QUERY - SELECT - t_P.id_product, - t_P.id_permutation, - t_P.name, - t_P.description, - P.has_variations, - P.id_category, - PP.cost_local, - PP.id_currency_cost, - PP.profit_local_min, - t_P.latency_manufacture, - t_P.quantity_min, - t_P.quantity_max, - t_P.quantity_step, - t_P.quantity_stock, - t_P.id_stripe_product, - t_P.is_subscription, - RI.name AS name_interval_recurrence, - RI.name_plural AS name_plural_interval_recurrence, - t_P.count_interval_recurrence, - t_P.display_order_category, - t_P.display_order_product, - t_P.display_order_permutation, - COALESCE(t_P.can_view, FALSE), - COALESCE(t_P.can_edit, FALSE), - COALESCE(t_P.can_admin, FALSE) - FROM tmp_Shop_Product t_P - INNER JOIN Shop_Product P ON t_P.id_product = P.id_product - INNER JOIN Shop_Product_Permutation PP ON t_P.id_permutation = PP.id_permutation - LEFT JOIN Shop_Interval_Recurrence RI ON t_P.id_unit_measurement_interval_recurrence = RI.id_interval - ORDER BY t_P.rank_permutation - ; - RETURN NEXT result_products; - -- CLOSE result_products; - - -- Variations - OPEN result_variations FOR - -- RETURN QUERY - SELECT - V.id_variation, - t_P.id_product, - t_P.id_permutation, - t_P.id_category, - VT.code AS code_variation_type, - VT.name AS name_variation_type, - V.code AS code_variation, - V.name AS name_variation, - RANK() OVER (ORDER BY t_P.rank_permutation, PPVL.display_order) AS display_order - FROM Shop_Variation V - INNER JOIN Shop_Variation_Type VT - ON V.id_type = VT.id_type - INNER JOIN Shop_Product_Permutation_Variation_Link PPVL ON V.id_variation = PPVL.id_variation - INNER JOIN tmp_Shop_Product t_P ON PPVL.id_permutation = t_P.id_permutation - WHERE V.active - AND PPVL.active - ; - RETURN NEXT result_variations; - -- CLOSE result_variations; - - /* - -- Permutation variations output - SELECT t_P.id_permutation, - t_P.id_product, - t_P.id_category, - id_variation - FROM Shop_Product_Permutation_Variation_Link PPVL - INNER JOIN tmp_Shop_Product t_P - ON t_P.id_permutation = PPVL.id_permutation - ORDER BY t_P.display_order - ; - */ - -- select * from Shop_Product_Currency_Region_Link; - -- select * from shop_currency; - /* - select * from tmp_Currency; - select * from tmp_delivery_region; - select * from tmp_shop_product; - */ - - -- Product Price - OPEN result_prices FOR - -- RETURN QUERY - SELECT - PCRL.id_link AS id_price, - t_P.id_permutation, - t_P.id_product, - t_P.id_category, - t_C.id_currency, - C.code AS code_currency, - C.name AS name_currency, - C.symbol AS symbol_currency, - t_DR.id_region, - PCRL.price_local_VAT_incl, - PCRL.price_local_VAT_excl, - ROW_NUMBER() OVER(ORDER BY t_P.rank_permutation, C.display_order) AS display_order - FROM Shop_Product_Currency_Region_Link PCRL - INNER JOIN tmp_Shop_Product t_P - ON PCRL.id_product = t_P.id_product - AND PCRL.id_permutation = t_P.id_permutation - -- INNER JOIN Shop_Product P ON PCRL.id_product = P.id_product - INNER JOIN tmp_Currency t_C ON PCRL.id_currency = t_C.id_currency - INNER JOIN Shop_Currency C ON t_C.id_currency = C.id_currency - INNER JOIN tmp_Delivery_Region t_DR ON PCRL.id_region_purchase = t_DR.id_region - WHERE ( - v_get_inactive_product - AND v_get_inactive_permutation - AND v_get_inactive_currency - AND v_get_inactive_delivery_region - OR PCRL.active - ) - ORDER BY t_P.rank_permutation - ; - RETURN NEXT result_prices; - -- CLOSE result_prices; - - /* - -- Currency - SELECT - DISTINCT C.id_currency, - C.code, - C.name, - C.factor_from_GBP, - t_C.display_order - FROM Shop_Currency C - INNER JOIN tmp_Currency t_C ON C.id_currency = t_C.id_currency - GROUP BY C.id_currency, t_C.display_order - ORDER BY t_C.display_order - ; - */ - - -- Images - OPEN result_images FOR - -- RETURN QUERY - SELECT - t_I.id_image, - t_I.id_product, - t_I.id_permutation, - t_P.id_category, - I.url, - I.active, - I.display_order - FROM tmp_Shop_Image t_I - INNER JOIN Shop_Image I - ON t_I.id_image = I.id_image - INNER JOIN tmp_Shop_Product t_P - ON t_I.id_product = t_P.id_product - AND t_I.id_permutation = t_P.id_permutation - ORDER BY t_P.rank_permutation, I.display_order - ; - RETURN NEXT result_images; - -- CLOSE result_images; - - -- Delivery options - OPEN result_delivery_options FOR - -- RETURN QUERY - SELECT - _DO.id_option, - PDOL.id_product, - PDOL.id_permutation, - t_P.id_category, - _DO.code, - _DO.name, - _DO.latency_delivery_min, - _DO.latency_delivery_max, - _DO.quantity_min, - _DO.quantity_max, - STRING_AGG(DR.code, ',') AS codes_region, - STRING_AGG(DR.name, ',') AS names_region, - PDOL.price_local, - PDOL.display_order - FROM Shop_Delivery_Option _DO - INNER JOIN Shop_Product_Permutation_Delivery_Option_Link PDOL - ON _DO.id_option = PDOL.id_delivery_option - AND ( - v_get_inactive_delivery_region - OR PDOL.active - ) - INNER JOIN tmp_Shop_Product t_P - ON PDOL.id_product = t_P.id_product - AND PDOL.id_permutation = t_P.id_permutation - INNER JOIN tmp_Delivery_Region t_DR ON PDOL.id_region = t_DR.id_region - INNER JOIN Shop_Region DR ON t_DR.id_region = DR.id_region - WHERE ( - v_get_inactive_delivery_region - OR _DO.active - ) - GROUP BY t_P.id_category, t_P.id_product, PDOL.id_permutation, t_P.rank_permutation, DR.id_region, _DO.id_option, PDOL.id_link - ORDER BY t_P.rank_permutation, PDOL.display_order - ; - RETURN NEXT result_delivery_options; - -- CLOSE result_delivery_options; - - -- Discounts - OPEN result_discounts FOR - -- RETURN QUERY - SELECT - D.id_discount, - P.id_category, - D.id_product, - D.id_permutation, - DR.id_region, - C.id_currency, - D.code AS code_discount, - D.name AS name_discount, - D.multiplier, - D.subtractor, - D.apply_multiplier_first, - D.quantity_min, - D.quantity_max, - D.date_start, - D.date_end, - STRING_AGG(DR.code, ', ') OVER(PARTITION BY D.id_discount) AS codes_region, - STRING_AGG(DR.name, ', ') OVER(PARTITION BY D.id_discount) AS names_region, - STRING_AGG(C.code, ', ') OVER(PARTITION BY D.id_discount) AS codes_currency, - STRING_AGG(C.name, ', ') OVER(PARTITION BY D.id_discount) AS names_currency, - ROW_NUMBER() OVER(ORDER BY D.display_order) AS display_order - FROM tmp_Discount t_D - INNER JOIN Shop_Discount D ON t_D.id_discount = D.id_discount - INNER JOIN Shop_Product P ON D.id_product = P.id_product - INNER JOIN tmp_Shop_Product t_P - ON D.id_product = t_P.id_product - -- AND D.id_permutation = t_P.id_permutation - INNER JOIN Shop_Discount_Region_Currency_Link DRCL - ON D.id_discount = DRCL.id_discount - INNER JOIN tmp_Delivery_Region t_DR ON DRCL.id_region = t_DR.id_region - INNER JOIN Shop_Region DR ON t_DR.id_region = DR.id_region - INNER JOIN tmp_Currency t_C ON DRCL.id_currency = t_C.id_currency - INNER JOIN Shop_Currency C ON t_C.id_currency = C.id_currency - GROUP BY D.id_discount, DR.id_region, C.id_currency, P.id_category, P.id_product, D.id_permutation - ORDER BY D.display_order, DR.display_order, C.display_order - ; - RETURN NEXT result_discounts; - -- CLOSE result_discounts; - /* - -- Delivery Regions - SELECT - t_DR.id_region, - t_P.id_category, - t_P.id_product, - t_P.id_permutation, - DR.code, - DR.name - FROM tmp_Delivery_Region t_DR - INNER JOIN Shop_Delivery_Region DR ON t_DR.id_region = DR.id_region - INNER JOIN Shop_Product_Region_Currency_Link PDRL - ON DR.id_region = PDRL.id_region - AND ( - v_get_inactive_delivery_region - OR PDRL.active - ) - INNER JOIN tmp_Shop_Product t_P - ON PDRL.id_product = t_P.id_product - AND PDRL.id_permutation = t_P.id_permutation - INNER JOIN tmp_Currency t_C ON PDRL.id_currency = t_C.id_currency - ORDER BY t_DR.display_order - ; - */ - - -- Errors - /* - OPEN result_errors FOR - RETURN QUERY - SELECT - t_ME.display_order, - t_ME.guid, - t_ME.id_type, - t_ME.msg, - MET.code, - MET.name, - MET.description - FROM tmp_Msg_Error t_ME - INNER JOIN Shop_Msg_Error_Type MET - ON t_ME.id_type = MET.id_type - WHERE guid = v_guid - ; - RETURN NEXT result_errors; - */ - - /* - -- Return arguments for test - SELECT - v_ids_category, - v_get_inactive_category, - v_ids_product, - v_get_inactive_product, - v_get_first_product_only, - v_get_all_product, - v_ids_image, - v_get_inactive_image, - v_get_first_image_only, - v_get_all_image - ; - */ - - -- select 'other outputs'; - -- select * from tmp_Shop_Product; - - -- Clean up - /* - DROP TEMPORARY TABLE IF EXISTS tmp_Discount; - DROP TEMPORARY TABLE IF EXISTS tmp_Currency; - DROP TEMPORARY TABLE IF EXISTS tmp_Delivery_Region; - DROP TEMPORARY TABLE IF EXISTS tmp_Shop_Image; - DROP TEMPORARY TABLE IF EXISTS tmp_Shop_Variation; - DROP TEMPORARY TABLE IF EXISTS tmp_Shop_Product; - DROP TEMPORARY TABLE IF EXISTS tmp_Shop_Product_Category; - DROP TABLE IF EXISTS tmp_Discount; - DROP TABLE IF EXISTS tmp_Currency; - DROP TABLE IF EXISTS tmp_Delivery_Region; - DROP TABLE IF EXISTS tmp_Shop_Image; - DROP TABLE IF EXISTS tmp_Shop_Variation; - DROP TABLE IF EXISTS tmp_Shop_Product; - DROP TABLE IF EXISTS tmp_Shop_Product_Category; - */ -END; -$$ LANGUAGE plpgsql; - - -/* - -DROP FUNCTION IF EXISTS fetch_results; - -CREATE OR REPLACE FUNCTION fetch_results() -RETURNS VOID AS $$ -DECLARE - curs refcursor; - rec record; - curs1 refcursor; - rec1 record; - curs2 refcursor; - rec2 record; -BEGIN - FOR curs IN SELECT p_shop_get_many_product ( - 1, -- a_id_user - TRUE, -- a_get_all_category - FALSE, -- a_get_inactive_category - FALSE, -- a_get_first_category_only - ARRAY[]::INTEGER[], -- a_ids_category - TRUE, -- a_get_all_product - FALSE, -- a_get_inactive_product - FALSE, -- a_get_first_product_only - ARRAY[]::INTEGER[], -- a_ids_product - TRUE, -- a_get_all_product_permutation - FALSE, -- a_get_inactive_permutation - FALSE, -- a_get_first_permutation_only - ARRAY[1, 2, 3, 4, 5]::INTEGER[], -- a_ids_permutation - FALSE, -- a_get_all_image - FALSE, -- a_get_inactive_image - TRUE, -- a_get_first_image_only - ARRAY[]::INTEGER[], -- a_ids_image - FALSE, -- a_get_all_delivery_region - FALSE, -- a_get_inactive_delivery_region - ARRAY[]::INTEGER[], -- a_ids_delivery_region - FALSE, -- a_get_all_currency - FALSE, -- a_get_inactive_currency - ARRAY[]::INTEGER[], -- a_ids_currency - TRUE, -- a_get_all_discount - FALSE, -- a_get_inactive_discount - ARRAY[]::INTEGER[] -- a_ids_discount - ) LOOP - RAISE NOTICE 'Fetching from cursor: %', curs; - LOOP - FETCH curs INTO rec; - EXIT WHEN NOT FOUND; - RAISE NOTICE 'Record: %', rec; - END LOOP; - END LOOP; -END; -$$ LANGUAGE plpgsql; - -SELECT fetch_results(); - -*/ - - -CREATE OR REPLACE FUNCTION p_shop_get_many_currency ( - IN a_get_inactive_currency BOOLEAN -) -RETURNS SETOF REFCURSOR -AS $$ -DECLARE - v_get_inactive_currency BOOLEAN; - result_currency REFCURSOR; -BEGIN - v_get_inactive_currency := COALESCE(a_get_inactive_currency, FALSE); - - OPEN result_currency FOR - SELECT - C.id_currency, - C.code, - C.name, - C.factor_from_GBP, - C.active, - C.display_order - FROM Shop_Currency C - WHERE v_get_inactive_currency - OR C.active - ORDER BY C.display_order - ; - RETURN NEXT result_currency; -END; -$$ LANGUAGE plpgsql; - - -/* - -DROP FUNCTION IF EXISTS fetch_results; - -CREATE OR REPLACE FUNCTION fetch_results() -RETURNS VOID AS $$ -DECLARE - curs refcursor; - rec record; -BEGIN - FOR curs IN SELECT p_shop_get_many_currency ( - FALSE -- a_get_inactive_currency - ) LOOP - RAISE NOTICE 'Fetching from cursor: %', curs; - LOOP - FETCH curs INTO rec; - EXIT WHEN NOT FOUND; - RAISE NOTICE 'Record: %', rec; - END LOOP; - END LOOP; -END; -$$ LANGUAGE plpgsql; - -SELECT fetch_results(); - -*/ - - -CREATE OR REPLACE FUNCTION p_shop_get_many_region ( - IN a_get_inactive_region BOOLEAN -) -RETURNS SETOF REFCURSOR -AS $$ -DECLARE - v_get_inactive_region BOOLEAN; - result_region REFCURSOR; -BEGIN - v_get_inactive_region := COALESCE(a_get_inactive_region, FALSE); - - OPEN result_region FOR - SELECT - R.id_region, - R.code, - R.name, - R.active, - R.display_order - FROM Shop_Region R - WHERE v_get_inactive_region - OR R.active - ORDER BY R.display_order - ; - -- RETURN NEXT result_region; -END; -$$ LANGUAGE plpgsql; - - -/* - -DROP FUNCTION IF EXISTS fetch_results; - -CREATE OR REPLACE FUNCTION fetch_results() -RETURNS VOID AS $$ -DECLARE - curs refcursor; - rec record; - curs1 refcursor; - rec1 record; - curs2 refcursor; - rec2 record; -BEGIN - FOR curs IN SELECT p_shop_get_many_region ( - FALSE -- a_get_inactive_region - ) LOOP - RAISE NOTICE 'Fetching from cursor: %', curs; - LOOP - FETCH curs INTO rec; - EXIT WHEN NOT FOUND; - RAISE NOTICE 'Record: %', rec; - END LOOP; - END LOOP; -END; -$$ LANGUAGE plpgsql; - -SELECT fetch_results(); - -*/ - - -CREATE OR REPLACE FUNCTION p_shop_get_many_user_order ( - IN a_id_user INTEGER, - IN a_ids_order VARCHAR(4000), - IN a_n_order_max INTEGER, - IN a_id_checkout_session VARCHAR(200) -) -RETURNS SETOF REFCURSOR -AS $$ -DECLARE - v_id_user INTEGER; - v_ids_order VARCHAR(4000); - v_n_order_max INTEGER; - v_id_checkout_session VARCHAR(200); - v_has_filter_user BOOLEAN; - v_has_filter_order BOOLEAN; - v_has_filter_session BOOLEAN; - v_code_error_data VARCHAR(200); - v_code_error_permission VARCHAR(200); - v_guid UUID; - result_orders REFCURSOR; - -- result_errors REFCURSOR; -BEGIN - v_id_user := TRIM(COALESCE(a_id_user, '')); - v_ids_order := TRIM(COALESCE(a_ids_order, '')); - v_n_order_max := a_n_order_max; - v_id_checkout_session := TRIM(COALESCE(a_id_checkout_session, '')); - - v_code_error_data := (SELECT code FROM Shop_Msg_Error_Type WHERE id_type = 1); - v_code_error_permission := (SELECT code FROM Shop_Msg_Error_Type WHERE id_type = 2); - v_guid = gen_random_uuid(); - - v_has_filter_user = CASE WHEN v_id_user = '' THEN FALSE ELSE TRUE END; - v_ids_order = REPLACE(v_ids_order, '|', ','); - v_has_filter_order = CASE WHEN v_ids_order = '' THEN FALSE ELSE TRUE END; - v_has_filter_session = CASE WHEN v_id_checkout_session = '' THEN FALSE ELSE TRUE END; - - - -- Temporary tables - DROP TABLE IF EXISTS tmp_Shop_User; - DROP TABLE IF EXISTS tmp_Shop_Order; - - /* - CREATE TABLE tmp_Shop_User( - id_user INTEGER PRIMARY KEY, - CONSTRAINT FK_tmp_Shop_User_id_user - FOREIGN KEY (id_user) - REFERENCES Shop_User(id_user), - active BOOLEAN NOT NULL - ); - */ - - CREATE TEMPORARY TABLE tmp_Shop_Order ( - id_order INTEGER NOT NULL PRIMARY KEY, - CONSTRAINT FK_tmp_Shop_Order_id_order - FOREIGN KEY (id_order) - REFERENCES Shop_User_Order(id_order), - active BOOLEAN NOT NULL - ); - - /* - CREATE TABLE IF NOT EXISTS tmp_Msg_Error ( - display_order INTEGER NOT NULL PRIMARY KEY GENERATED ALWAYS AS IDENTITY, - guid UUID NOT NULL, - -- id_type INTEGER NOT NULL, - -- CONSTRAINT FK_tmp_Msg_Error_id_type FOREIGN KEY (id_type) - -- REFERENCES Shop_Msg_Error_Type (id_type), - code VARCHAR(50), - msg VARCHAR(4000) NOT NULL - ); - */ - - -- User - IF v_has_filter_user THEN - INSERT INTO tmp_Shop_User ( - id_user, - active - ) - SELECT id_user, - active - FROM Shop_User - WHERE id_user = v_id_user - AND active - LIMIT 1 - ; - - v_has_filter_user = EXISTS (SELECT id_user FROM tmp_Shop_User LIMIT 1); - v_id_user := (SELECT id_user FROM tmp_Shop_User LIMIT 1); - ELSE - RAISE EXCEPTION 'Valid user ID must be provided.' - USING ERRCODE = '22000' - ; - END IF; - - -- Permissions - CALL p_shop_calc_user ( - v_guid, -- a_guid - a_id_user, -- a_id_user - 0, -- a_get_inactive_users - CONVERT((SELECT id_permission FROM Shop_Permission WHERE 'STORE_USER' = code), CHAR), -- a_ids_permission - (SELECT id_access_level FROM Shop_Access_Level WHERE code = 'VIEW' AND active), -- a_ids_access_level - '', -- a_ids_product - '' -- a_ids_permutation - ); - - IF NOT (SELECT can_edit FROM Shop_Calc_User_Temp WHERE guid = v_guid) THEN - RAISE EXCEPTION 'User ID does not have permission to access orders.' - USING ERRCODE = '42501' - ; - END IF; - - DELETE FROM Shop_Calc_User_Temp - WHERE guid = v_guid - ; - - -- Invalid Order IDs - IF v_has_filter_order AND EXISTS ( - SELECT * - FROM Shop_User_Order - WHERE - NOT (id_user = v_id_user) - AND id_order = ANY(v_ids_order) - LIMIT 1 - ) THEN -- id_order LIKE CONCAT('%', v_ids_order, '%') LIMIT 1) THEN - RAISE EXCEPTION 'You do not have access to the following order IDs: %', ( - SELECT STRING_AGG(id_order, ', ') - FROM Shop_User_Order - WHERE - NOT (id_user = v_id_user) - AND id_order = ANY(v_ids_order) - ) - USING ERRCODE = '22000' - ; - END IF; - -- Invalid Checkout Session IDs - IF v_has_filter_session AND EXISTS ( - SELECT * - FROM Shop_User_Order - WHERE - NOT (id_user = v_id_user) - AND id_checkout_session = v_id_checkout_session - ) THEN - RAISE EXCEPTION 'You do not have access to the following checkout session IDs: %', ( - SELECT STRING_AGG(id_order, ', ') - FROM Shop_User_Order - WHERE - NOT (id_user = v_id_user) - AND id_checkout_session = v_id_checkout_session - ) - USING ERRCODE = '22000' - ; - END IF; - - -- Valid Orders - IF NOT EXISTS (SELECT * FROM tmp_Msg_Error WHERE guid = v_guid LIMIT 1) THEN - - INSERT INTO tmp_Shop_Order ( - id_order, - active - ) - SELECT UO.id_order, - UO.active - FROM Shop_User_Order UO - INNER JOIN tmp_Shop_User t_U - ON UO.id_user = t_U.id_user - AND t_U.active - WHERE ((NOT v_has_filter_order OR FIND_IN_SET(UO.id_order, v_ids_order) > 0) -- UO.id_order LIKE CONCAT('%', v_ids_order, '%')) - OR (NOT v_has_filter_session OR UO.id_checkout_session = v_id_checkout_session)) - AND UO.active - ; - END IF; - - - - -- Returns - /* - SELECT * - FROM tmp_Shop_User - ; - */ - - OPEN result_orders FOR - SELECT t_O.id_order, - UOPL.id_product, - UOPL.id_permutation, - UOPL.quantity - FROM tmp_Shop_Order t_O - INNER JOIN Shop_User_Order UO - ON t_O.id_order = UO.id_order - INNER JOIN Shop_User_Order_Product_Link UOPL - ON UO.id_order = UOPL.id_order - WHERE t_O.active - ; - RETURN NEXT result_orders; - - /* - -- Errors - OPEN result_errors FOR - SELECT * - FROM tmp_Msg_Error - ; - -- RETURN NEXT result_errors; - */ - - - /* - -- Return arguments for test - SELECT - v_id_user, - v_ids_order, - v_n_order_max, - v_id_checkout_session - ; - */ - - -- Clean up - -- DROP TABLE IF EXISTS tmp_Shop_User; - -- DROP TABLE IF EXISTS tmp_Shop_Order; -END; -$$ LANGUAGE plpgsql; - - -/* - -DROP FUNCTION IF EXISTS fetch_results; - -CREATE OR REPLACE FUNCTION fetch_results() -RETURNS VOID AS $$ -DECLARE - curs refcursor; - rec record; - curs1 refcursor; - rec1 record; - curs2 refcursor; - rec2 record; -BEGIN - FOR curs IN SELECT p_shop_get_many_user_order ( - 'auth0|6582b95c895d09a70ba10fef', # a_id_user - '1', # a_ids_order - 0, # a_n_order_max - '' # a_id_checkout_session - ) LOOP - RAISE NOTICE 'Fetching from cursor: %', curs; - LOOP - FETCH curs INTO rec; - EXIT WHEN NOT FOUND; - RAISE NOTICE 'Record: %', rec; - END LOOP; - END LOOP; -END; -$$ LANGUAGE plpgsql; - -SELECT fetch_results(); - -*/ - - -/* - -CALL p_shop_get_many_user_order ( - 'auth0|6582b95c895d09a70ba10fef', # a_id_user - '1', # a_ids_order - 0, # a_n_order_max - '' # a_id_checkout_session -); - -CALL p_shop_get_many_user_order ( - '', # a_id_user - '1', # a_ids_order - 0, # a_n_order_max - '' # a_id_checkout_session -); - -insert into shop_product_change_set (comment) - values ('set product not subscription - test bool output to python'); - update shop_product - set is_subscription = 0, - id_change_set = (select id_change_set from shop_product_change_set order by id_change_set desc limit 1) - where id_product = 1 -select * from shop_User; -select * from shop_User_oRDER; -*/ - - -/* - -CALL p_shop_get_many_stripe_product_new ( - '' -) - -*/ - -CREATE OR REPLACE FUNCTION p_shop_get_many_stripe_product_new ( - IN a_id_user INTEGER -) -RETURNS SETOF REFCURSOR -AS $$ -DECLARE - v_id_user INTEGER; - v_code_error_data VARCHAR(200); - v_code_error_permission VARCHAR(200); - v_guid UUID; - result_products REFCURSOR; - result_product_variation_links REFCURSOR; - -- result_errors REFCURSOR; -BEGIN - v_id_user := a_id_user; - v_code_error_data := (SELECT code FROM Shop_Msg_Error_Type WHERE id_type = 1); - v_code_error_permission := (SELECT code FROM Shop_Msg_Error_Type WHERE id_type = 2); - v_guid = gen_random_uuid(); - - - -- Temporary tables - DROP TABLE IF EXISTS tmp_Shop_Product; - DROP TABLE IF EXISTS tmp_Shop_User; - - CREATE TEMPORARY TABLE tmp_Shop_User( - id_user INTEGER PRIMARY KEY, - CONSTRAINT FK_tmp_Shop_User_id_user - FOREIGN KEY (id_user) - REFERENCES Shop_User(id_user), - active BOOLEAN NOT NULL - ); - - CREATE TEMPORARY TABLE tmp_Shop_Product ( - id_product INTEGER NOT NULL, - CONSTRAINT FK_tmp_Shop_Product_id_product - FOREIGN KEY (id_product) - REFERENCES Shop_Product(id_product), - id_permutation INTEGER NULL, - CONSTRAINT FK_tmp_Shop_Product_id_permutation - FOREIGN KEY (id_permutation) - REFERENCES Shop_Product_Permutation(id_permutation), - active BOOLEAN NOT NULL, - display_order_product INTEGER NOT NULL, - display_order_permutation INTEGER NOT NULL, - name VARCHAR(200) NOT NULL, - description VARCHAR(4000) NOT NULL - ); - - /* - CREATE TABLE IF NOT EXISTS tmp_Msg_Error ( -- IF NOT EXISTS - display_order INTEGER NOT NULL PRIMARY KEY GENERATED ALWAYS AS IDENTITY, - guid UUID NOT NULL, - code VARCHAR(50) NOT NULL, - -- CONSTRAINT chk_tmp_Msg_Error_code CHECK (code IN (SELECT code FROM Shop_Msg_Error_Type)), - /* - id_type INTEGER NOT NULL, - CONSTRAINT FK_tmp_Msg_Error_id_type - FOREIGN KEY (id_type) - REFERENCES Shop_Msg_Error_Type(id_type), - */ - msg VARCHAR(4000) NOT NULL - ); - */ - - - -- User - IF NOT EXISTS( - SELECT * - FROM Shop_User - WHERE - id_user = v_id_user - AND active - ) THEN - RAISE EXCEPTION 'Valid user ID required.' - USING ERRCODE = '22000' - ; - END IF; - - INSERT INTO tmp_Shop_User ( - id_user, - active - ) - SELECT id_user, - active - FROM Shop_User - WHERE id_user = v_id_user - AND active - LIMIT 1 - ; - - -- Get products - INSERT INTO tmp_Shop_Product ( - id_product, - id_permutation, - active, - display_order_product, - display_order_permutation, - name, - description - ) - SELECT id_product, - id_permutation, - active, - display_order_product, - display_order_permutation, - name, - description - FROM ( - SELECT id_product, - NULL AS id_permutation, - active, - display_order AS display_order_product, - NULL AS display_order_permutation, - name, - description, - id_stripe_product - FROM Shop_Product P - UNION - SELECT t_PPPV.id_product, - id_permutation, - t_PPPV.active, - display_order_product, - display_order_permutation, - P.name, ': ' || names_variation AS name, - P.description || ' With variations: ' || type_name_pairs_variation AS description, - t_PPPV.id_stripe_product - FROM ( - SELECT P.id_product, - PP.id_permutation, - PP.active, - P.display_order AS display_order_product, - PP.display_order AS display_order_permutation, - STRING_AGG(V.name, ' ') AS names_variation, - STRING_AGG(VT.name || ': ' || V.name, ', ') AS type_name_pairs_variation, - PP.id_stripe_product - FROM Shop_Product_Permutation PP - INNER JOIN Shop_Product P - ON PP.id_product = P.id_product - AND P.active - INNER JOIN Shop_Product_Permutation_Variation_Link PPVL - ON PP.id_permutation = PPVL.id_permutation - AND PPVL.active - INNER JOIN Shop_Variation V - ON PPVL.id_variation = V.id_variation - AND V.active - INNER JOIN Shop_Variation_Type VT - ON V.id_type = VT.id_type - AND VT.active - GROUP BY id_product, id_permutation -- , VT.id_type, V.id_variation - ) t_PPPV - INNER JOIN Shop_Product P - ON t_PPPV.id_product = P.id_product - ) t_PPP - WHERE ISNULL(id_stripe_product) - AND active - ; - - -- Permissions - CALL p_shop_calc_user ( - v_guid, -- a_guid - v_id_user, -- a_id_user - 0, -- a_get_inactive_users - CONVERT((SELECT id_permission FROM Shop_Permission WHERE 'STORE_ADMIN' = code), CHAR), -- a_ids_permission - (SELECT id_access_level FROM Shop_Access_Level WHERE code = 'ADMIN' AND active), -- a_ids_access_level - (SELECT STRING_AGG(id_product, ',') From tmp_Shop_Product), -- a_ids_product - (SELECT STRING_AGG(id_permutation, ',') From tmp_Shop_Product) -- a_ids_permutation -- WHERE NOT ISNULL(id_permutation) - ); - - IF EXISTS (SELECT can_admin FROM Shop_Calc_User_Temp WHERE guid = v_guid AND NOT can_admin) THEN - RAISE EXCEPTION 'User ID does not have permission to get all new stripe products.' - USING ERRCODE = '42501' - ; - END IF; - - DELETE FROM Shop_Calc_User_Temp - WHERE guid = v_guid - ; - - - - - -- Returns - /* - SELECT * - FROM tmp_Shop_User - ; - */ - - /* - IF EXISTS (SELECT * FROM tmp_Msg_Error WHERE guid = v_guid LIMIT 1) THEN - DELETE FROM tmp_Shop_Product; - END IF; - */ - - OPEN result_products FOR - SELECT id_product, - id_permutation, - name, - description - FROM tmp_Shop_Product - ORDER BY display_order_product, display_order_permutation - ; - RETURN NEXT result_products; - - OPEN result_product_variation_links FOR - SELECT PP.id_permutation, - V.id_variation, - V.name AS name_variation, - VT.id_type AS id_type_variation, - VT.name as name_variation_type - FROM tmp_Shop_Product t_P - INNER JOIN Shop_Product_Permutation PP - ON t_P.id_permutation = PP.id_permutation - INNER JOIN Shop_Product_Permutation_Variation_Link PPVL - ON PP.id_permutation = PPVL.id_permutation - AND PPVL.active - INNER JOIN Shop_Variation V - ON PPVL.id_variation = V.id_variation - AND V.active - INNER JOIN Shop_Variation_Type VT - ON V.id_type = VT.id_type - AND VT.active - ; - RETURN NEXT result_product_variation_links; - - -- Errors - /* - OPEN result_errors FOR - SELECT * - FROM tmp_Msg_Error - ; - -- RETURN NEXT result_errors; - */ - - - /* - -- Return arguments for test - SELECT - v_id_user - ; - */ - - -- Clean up - DROP TABLE IF EXISTS tmp_Shop_Product; - DROP TABLE IF EXISTS tmp_Shop_User; -END; -$$ LANGUAGE plpgsql; - - -/* - -DROP FUNCTION IF EXISTS fetch_results; - -CREATE OR REPLACE FUNCTION fetch_results() -RETURNS VOID AS $$ -DECLARE - curs refcursor; - rec record; - curs1 refcursor; - rec1 record; - curs2 refcursor; - rec2 record; -BEGIN - FOR curs IN SELECT p_shop_get_many_stripe_product_new ( - 'auth0|6582b95c895d09a70ba10fef' - ) LOOP - RAISE NOTICE 'Fetching from cursor: %', curs; - LOOP - FETCH curs INTO rec; - EXIT WHEN NOT FOUND; - RAISE NOTICE 'Record: %', rec; - END LOOP; - END LOOP; -END; -$$ LANGUAGE plpgsql; - -SELECT fetch_results(); - -*/ - - -/* -CALL p_shop_get_many_stripe_product_new ( - '' -); - -CALL p_shop_get_many_stripe_product_new ( - 'auth0|6582b95c895d09a70ba10fef' -); - - - -select * from shop_product; -select * from shop_product_permutation_variation_link; - -CALL p_shop_calc_user ( - 'ead789a1-c7ac-11ee-a256-b42e9986184a', -- a_guid - 'auth0|6582b95c895d09a70ba10fef', -- a_id_user - 0, -- a_get_inactive_users - '4', -- a_ids_permission - '3', -- a_ids_access_level - '1', -- a_ids_product - '1' -- a_ids_permutation -- WHERE NOT ISNULL(id_permutation) - ); - -*/ - - - -/* - -CALL p_shop_get_many_stripe_price_new ( - '' -) - -*/ - - - -CREATE OR REPLACE FUNCTION p_shop_get_many_stripe_price_new ( - IN a_id_user INTEGER -) -RETURNS SETOF REFCURSOR -AS $$ -DECLARE - v_id_user INTEGER; - v_has_filter_user BOOLEAN; - v_code_error_data VARCHAR(200); - v_code_error_permission VARCHAR(200); - v_guid UUID; - result_products REFCURSOR; - -- result_errors REFCURSOR; -BEGIN - v_id_user := TRIM(COALESCE(a_id_user, '')); - v_code_error_data := (SELECT code FROM Shop_Msg_Error_Type WHERE id_type = 1); - v_code_error_permission := (SELECT code FROM Shop_Msg_Error_Type WHERE id_type = 2); - v_guid = gen_random_uuid(); - - v_has_filter_user = CASE WHEN v_id_user = '' THEN FALSE ELSE TRUE END; - - - -- Temporary tables - DROP TABLE IF EXISTS tmp_Shop_Product_Currency_Link; - DROP TABLE IF EXISTS tmp_Shop_User; - - CREATE TEMPORARY TABLE tmp_Shop_User( - id_user INTEGER PRIMARY KEY, - CONSTRAINT FK_tmp_Shop_User_id_user - FOREIGN KEY (id_user) - REFERENCES Shop_User(id_user), - active BOOLEAN NOT NULL - ); - - CREATE TEMPORARY TABLE tmp_Shop_Product_Currency_Link ( - id_link INTEGER NOT NULL PRIMARY KEY, - CONSTRAINT FK_tmp_Shop_Product_Currency_Link_id_link - FOREIGN KEY (id_link) - REFERENCES Shop_Product_Currency_Region_Link(id_link), - id_product INTEGER NOT NULL, - CONSTRAINT FK_tmp_Shop_Product_CurrencyLink_id_product - FOREIGN KEY (id_product) - REFERENCES Shop_Product(id_product), - id_permutation INTEGER NULL, - CONSTRAINT FK_tmp_Shop_Product_Currency_Link_id_permutation - FOREIGN KEY (id_permutation) - REFERENCES Shop_Product_Permutation(id_permutation), - id_currency INTEGER NOT NULL, - CONSTRAINT FK_tmp_Shop_Product_Currency_Link_id_currency - FOREIGN KEY (id_currency) - REFERENCES Shop_Currency(id_currency), - active BOOLEAN NOT NULL - ); - - /* - CREATE TABLE IF NOT EXISTS tmp_Msg_Error ( -- IF NOT EXISTS - display_order INTEGER NOT NULL PRIMARY KEY GENERATED ALWAYS AS IDENTITY, - guid UUID NOT NULL, - code VARCHAR(50) NOT NULL, - -- CONSTRAINT chk_tmp_Msg_Error_code CHECK (code IN (SELECT code FROM Shop_Msg_Error_Type)), - /* - id_type INTEGER NOT NULL, - CONSTRAINT FK_tmp_Msg_Error_id_type - FOREIGN KEY (id_type) - REFERENCES Shop_Msg_Error_Type(id_type), - */ - msg VARCHAR(4000) NOT NULL - ); - */ - - - -- User permissions - IF NOT EXISTS( - SELECT * - FROM Shop_User - WHERE - id_user = v_id_user - AND active - ) THEN - RAISE EXCEPTION 'Valid user ID required.' - USING ERRCODE = '22000' - ; - END IF; - - INSERT INTO tmp_Shop_User ( - id_user, - active - ) - SELECT id_user, - active - FROM Shop_User - WHERE id_user = v_id_user - AND active - LIMIT 1 - ; - - -- Get products - INSERT INTO tmp_Shop_Product_Currency_Link ( - id_link, - id_product, - id_permutation, - id_currency, - active - ) - SELECT id_link, - id_product, - id_permutation, - id_currency, - active - FROM Shop_Product_Currency_Region_Link - WHERE ISNULL(id_stripe_price) - AND active - ; - - -- Permissions - -- SELECT * FROM tmp_Msg_Error LIMIT 1; - CALL p_shop_calc_user ( - v_guid, -- a_guid - v_id_user, -- a_id_user - 0, -- a_get_inactive_users - CONVERT((SELECT id_permission FROM Shop_Permission WHERE 'STORE_ADMIN' = code), CHAR), -- a_ids_permission - (SELECT id_access_level FROM Shop_Access_Level WHERE code = 'ADMIN' AND active), -- a_ids_access_level - (SELECT STRING_AGG(DISTINCT id_product, ',') FROM tmp_Shop_Product_Currency_Link), -- (SELECT DISTINCT id_product FROM tmp_Shop_Product_Currency_Link) calc_PCL) -- a_ids_product - (SELECT STRING_AGG(DISTINCT id_permutation, ',') FROM tmp_Shop_Product_Currency_Link) -- a_ids_permutation - ); - -- SELECT * FROM tmp_Msg_Error LIMIT 1; - - IF EXISTS (SELECT can_admin FROM Shop_Calc_User_Temp WHERE guid = v_guid AND NOT can_admin LIMIT 1) THEN - RAISE EXCEPTION 'User ID does not have permission to get all new stripe prices.' - USING ERRCODE = '42501' - ; - END IF; - - DELETE FROM Shop_Calc_User_Temp - WHERE guid = v_guid - ; - - - - -- Returns - /* - IF EXISTS (SELECT * FROM tmp_Msg_Error WHERE guid = v_guid LIMIT 1) THEN - DELETE FROM tmp_Shop_Product_Currency_Link; - END IF; - */ - /* - SELECT * - FROM tmp_Shop_User - ; - */ - - OPEN result_products FOR - SELECT t_PCL.id_product, - t_PCL.id_permutation, - P.price_GBP_full * C.factor_from_GBP AS unit_price, - C.code AS code_currency, - P.id_stripe_product, - P.is_subscription, - LOWER(RI.code) AS name_recurring_interval, - P.count_interval_recurrence - FROM tmp_Shop_Product_Currency_Link t_PCL - INNER JOIN Shop_Product P - ON t_PCL.id_product = P.id_product - AND P.active - INNER JOIN Shop_Interval_Recurrence RI - ON P.id_unit_measurement_interval_recurrence = RI.id_interval - AND RI.active - INNER JOIN Shop_Currency C - ON t_PCL.id_currency = C.id_currency - AND C.active - WHERE t_PCL.active - ; - RETURN NEXT result_products; - - -- Errors - /* - OPEN result_errors FOR - SELECT * - FROM tmp_Msg_Error - ; - -- RETURN NEXT result_errors; - */ - - - /* - -- Return arguments for test - SELECT - v_id_user - ; - */ - - -- Clean up - DROP TABLE IF EXISTS tmp_Shop_User; - DROP TABLE IF EXISTS tmp_Shop_Product_Currency_Link; -END; -$$ LANGUAGE plpgsql; - - -/* - -DROP FUNCTION IF EXISTS fetch_results; - -CREATE OR REPLACE FUNCTION fetch_results() -RETURNS VOID AS $$ -DECLARE - curs refcursor; - rec record; - curs1 refcursor; - rec1 record; - curs2 refcursor; - rec2 record; -BEGIN - FOR curs IN SELECT p_shop_get_many_stripe_price_new ( - 'auth0|6582b95c895d09a70ba10fef' - ) LOOP - RAISE NOTICE 'Fetching from cursor: %', curs; - LOOP - FETCH curs INTO rec; - EXIT WHEN NOT FOUND; - RAISE NOTICE 'Record: %', rec; - END LOOP; - END LOOP; -END; -$$ LANGUAGE plpgsql; - -SELECT fetch_results(); - -*/ - - -/* -CALL p_shop_get_many_stripe_price_new ( - '' -); - -CALL p_shop_get_many_stripe_price_new ( - 'auth0|6582b95c895d09a70ba10fef' -); - -*/ - - -CREATE OR REPLACE FUNCTION p_shop_get_many_supplier ( - IN a_id_user INTEGER, - IN a_get_all_supplier BOOLEAN, - IN a_get_inactive_supplier BOOLEAN, - IN a_get_first_supplier_only BOOLEAN, - IN a_ids_supplier INTEGER[] -) -RETURNS SETOF REFCURSOR -AS $$ -DECLARE - v_id_user INTEGER; - v_get_all_supplier BOOLEAN; - v_get_inactive_supplier BOOLEAN; - v_get_first_supplier_only BOOLEAN; - v_ids_supplier INTEGER[]; - v_has_filter_supplier BOOLEAN; - v_guid UUID; - v_id_permission_supplier INTEGER; - v_id_access_level_view INTEGER; - v_id_minimum INTEGER; - result_suppliers REFCURSOR; - -- result_errors REFCURSOR; -BEGIN - v_id_user := TRIM(COALESCE(a_id_user, '')); - v_get_all_supplier := COALESCE(a_get_all_supplier, TRUE); - v_get_inactive_supplier := COALESCE(a_get_inactive_supplier, FALSE); - v_get_first_supplier_only := COALESCE(a_get_first_supplier_only, FALSE); - v_ids_supplier := TRIM(COALESCE(a_ids_supplier, '')); - - v_guid := gen_random_uuid(); - v_id_access_level_view := (SELECT id_access_level FROM Shop_Access_Level WHERE code = 'VIEW'); - v_has_filter_supplier = NOT (a_ids_supplier = ''); - - - -- Temporary tables - DROP TABLE IF EXISTS tmp_Shop_Supplier; - - CREATE TABLE tmp_Shop_Supplier ( - id_supplier INTEGER NOT NULL, - CONSTRAINT FK_tmp_Shop_Supplier_id_supplier - FOREIGN KEY (id_supplier) - REFERENCES Shop_Supplier(id_supplier), - active BOOLEAN NOT NULL, - rank_supplier INTEGER NULL, - can_view BOOLEAN, - can_edit BOOLEAN, - can_admin BIT - ); - - /* - CREATE TABLE IF NOT EXISTS tmp_Msg_Error ( - display_order INTEGER NOT NULL PRIMARY KEY GENERATED ALWAYS AS IDENTITY, - guid UUID NOT NULL, - id_type INTEGER 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 - ); - */ - - -- select v_has_filter_product, v_has_filter_permutation; - - IF v_has_filter_supplier THEN - IF EXISTS ( - SELECT * - FROM UNNEST(v_ids_supplier) AS Supplier_Id - LEFT JOIN Shop_Supplier S ON Supplier_Id = S.id_supplier - WHERE ISNULL(S.id_supplier) - ) THEN - RAISE EXCEPTION 'Invalid supplier IDs: %', ( - SELECT STRING_AGG(Supplier_Id, ', ') - FROM UNNEST(v_ids_supplier) AS Supplier_Id - LEFT JOIN Shop_Supplier S ON Supplier_Id = S.id_supplier - WHERE ISNULL(S.id_supplier) - LIMIT 1 - ) - USING ERRCODE = '22000' - ; - ELSE - INSERT INTO tmp_Shop_Supplier ( - id_supplier, - active, - rank_supplier - ) - SELECT - S.id_supplier, - S.active, - RANK() OVER (ORDER BY id_supplier ASC) AS rank_supplier - FROM Shop_Supplier S - WHERE - ( - a_get_inactive_supplier - OR S.active = TRUE - ) - AND ( - a_get_all_supplier - OR S.id_supplier = ANY(v_ids_supplier) - ) - ; - END IF; - - IF a_get_first_supplier_only THEN - DELETE FROM tmp_Shop_Supplier t_S - WHERE t_S.rank_supplier > ( - SELECT MIN(t_S.rank_supplier) - FROM tmp_Shop_Supplier t_S - ) - ; - END IF; - END IF; - - -- Permissions - -- v_id_user := (SELECT id_user FROM Shop_User WHERE name = CURRENT_USER); - v_id_permission_supplier := (SELECT id_permission FROM Shop_Permission WHERE code = 'STORE_SUPPLIER' LIMIT 1); - - -- SELECT v_guid, a_id_user, false, v_id_permission_product, v_id_access_level_view, v_ids_permutation_permission; - -- select * from Shop_Calc_User_Temp; - - CALL p_shop_calc_user(v_guid, a_id_user, FALSE, v_id_permission_supplier, v_id_access_level_view, ''); - - -- select * from Shop_Calc_User_Temp; - - IF NOT EXISTS (SELECT can_view FROM Shop_Calc_User_Temp UE_T WHERE UE_T.GUID = v_guid) THEN - RAISE EXCEPTION 'You do not have view permissions for %', ( - SELECT name - FROM Shop_Permission - WHERE id_permission = v_id_permission_supplier - LIMIT 1 - ) - USING ERRCODE = '42501' - ; - END IF; - - - -- select * from tmp_Shop_Product; - - -- Returns - - -- Suppliers - OPEN result_suppliers FOR - SELECT - t_S.id_supplier, - S.name_company, - name_contact, - department_contact, - id_address, - phone_number, - fax, - email, - website, - id_currency, - active - FROM tmp_Shop_Supplier t_S - INNER JOIN Shop_Supplier S - ON t_S.id_supplier = S.id_supplier - ; - RETURN NEXT result_suppliers; - - -- Errors - /* - SELECT - /* - t_ME.display_order, - t_ME.guid, - t_ME.id_type, - t_ME.msg, - MET.code, - MET.name, - MET.description - */ - * - FROM tmp_Msg_Error t_ME - INNER JOIN Shop_Msg_Error_Type MET - ON t_ME.id_type = MET.id_type - WHERE guid = v_guid - ; - OPEN result_errors FOR - SELECT * - FROM tmp_Msg_Error - ; - -- RETURN NEXT result_errors; - */ - - /* - -- Return arguments for test - SELECT - a_ids_category, - a_get_inactive_category, - a_ids_product, - a_get_inactive_product, - a_get_first_product_only, - a_get_all_product, - a_ids_image, - a_get_inactive_image, - a_get_first_image_only, - a_get_all_image - ; - */ - - -- select 'other outputs'; - -- select * from tmp_Shop_Product; - - -- Clean up - DROP TABLE IF EXISTS tmp_Supplier; - - DELETE FROM Shop_Calc_User_Temp - WHERE GUID = v_guid - ; -END; -$$ LANGUAGE plpgsql; - - -/* - -DROP FUNCTION IF EXISTS fetch_results; - -CREATE OR REPLACE FUNCTION fetch_results() -RETURNS VOID AS $$ -DECLARE - curs refcursor; - rec record; -BEGIN - FOR curs IN SELECT p_shop_get_many_supplier ( - '', -- a_id_user - TRUE, -- a_get_all_supplier - FALSE, -- a_get_inactive_supplier - FALSE, -- a_get_first_supplier_only - '' -- a_ids_supplier - ) LOOP - RAISE NOTICE 'Fetching from cursor: %', curs; - LOOP - FETCH curs INTO rec; - EXIT WHEN NOT FOUND; - RAISE NOTICE 'Record: %', rec; - END LOOP; - END LOOP; -END; -$$ LANGUAGE plpgsql; - -SELECT fetch_results(); - -*/ - - - -CREATE OR REPLACE FUNCTION p_shop_get_many_supplier_purchase_order ( - IN a_id_user INTEGER, - IN a_get_all_supplier BOOLEAN, - IN a_get_inactive_supplier BOOLEAN, - IN a_get_first_supplier_only BOOLEAN, - IN a_ids_supplier INTEGER[], - IN a_get_all_order BOOLEAN, - IN a_get_inactive_order BOOLEAN, - IN a_get_first_order_only BOOLEAN, - IN a_ids_order INTEGER[], - IN a_get_inactive_category BOOLEAN, - IN a_ids_category INTEGER[], - IN a_get_inactive_product BOOLEAN, - IN a_ids_product INTEGER[], - IN a_get_inactive_permutation BOOLEAN, - IN a_ids_permutation INTEGER[], - IN a_date_from TIMESTAMP, - IN a_date_to TIMESTAMP -) -RETURNS SETOF REFCURSOR -AS $$ -DECLARE - v_id_user INTEGER; - v_get_all_supplier BOOLEAN; - v_get_inactive_supplier BOOLEAN; - v_get_first_supplier_only BOOLEAN; - v_ids_supplier INTEGER[]; - v_get_all_order BOOLEAN; - v_get_inactive_order BOOLEAN; - v_get_first_order_only BOOLEAN; - v_ids_order INTEGER[]; - v_get_inactive_category BOOLEAN; - v_ids_category INTEGER[]; - v_get_inactive_product BOOLEAN; - v_ids_product INTEGER[]; - v_get_inactive_permutation BOOLEAN; - v_ids_permutation INTEGER[]; - v_date_from TIMESTAMP; - v_date_to TIMESTAMP; - v_has_filter_supplier BOOLEAN; - v_has_filter_order BOOLEAN; - v_has_filter_category BOOLEAN; - v_has_filter_product BOOLEAN; - v_has_filter_permutation BOOLEAN; - v_has_filter_date_from BOOLEAN; - v_has_filter_date_to BOOLEAN; - v_guid UUID; - v_ids_permission_supplier_purchase_order INTEGER[]; - v_ids_product_permission INTEGER[]; - v_id_access_level_view INTEGER; - v_code_error_data VARCHAR(50); - v_id_type_error_data INTEGER; - result_suppliers REFCURSOR; - result_orders REFCURSOR; - result_order_product_links REFCURSOR; - -- result_errors REFCURSOR; -BEGIN - v_id_user := TRIM(COALESCE(a_id_user, '')); - v_get_all_supplier := COALESCE(a_get_all_supplier, TRUE); - v_get_inactive_supplier := COALESCE(a_get_inactive_supplier, FALSE); - v_get_first_supplier_only := COALESCE(a_get_first_supplier_only, FALSE); - v_ids_supplier := TRIM(COALESCE(a_ids_supplier, '')); - v_get_all_order := COALESCE(a_get_all_order, TRUE); - v_get_inactive_order := COALESCE(a_get_inactive_order, FALSE); - v_get_first_order_only := COALESCE(a_get_first_order_only, FALSE); - v_ids_order := TRIM(COALESCE(a_ids_order, '')); - v_get_inactive_category := COALESCE(a_get_inactive_category, FALSE); - v_ids_category := TRIM(COALESCE(a_ids_category, '')); - v_get_inactive_product := COALESCE(a_get_inactive_product, FALSE); - v_ids_product := TRIM(COALESCE(a_ids_product, '')); - v_get_inactive_permutation := COALESCE(a_get_inactive_permutation, FALSE); - v_ids_permutation := TRIM(COALESCE(a_ids_permutation, '')); - v_date_from := a_date_from; - v_date_to := a_date_to; - - v_guid := gen_random_uuid(); - v_id_access_level_view := (SELECT id_access_level FROM Shop_Access_Level WHERE code = 'VIEW' LIMIT 1); - -- v_ids_permission_supplier_purchase_order := (SELECT id_permission FROM Shop_Permission WHERE code = 'SHOP_SUPPLIER_PURCHASE_ORDER' LIMIT 1); - v_code_error_data = 'BAD_DATA'; - v_id_type_error_data := (SELECT id_type FROM Shop_Msg_Error_Type WHERE code = v_code_error_data); - v_has_filter_supplier = (CARDINALITY(v_ids_supplier) > 0); - v_has_filter_order = (CARDINALITY(v_ids_order) > 0); - v_has_filter_category = (CARDINALITY(v_ids_category) > 0); - v_has_filter_product = (CARDINALITY(v_ids_product) > 0); - v_has_filter_permutation = (CARDINALITY(v_ids_permutation) > 0); - v_has_filter_date_from = CASE WHEN ISNULL(v_date_from) THEN FALSE ELSE TRUE END; - v_has_filter_date_to = CASE WHEN ISNULL(v_date_to) THEN FALSE ELSE TRUE END; - - -- Temporary tables - DROP TABLE IF EXISTS tmp_Shop_Supplier_Purchase_Order_Product_Link; - DROP TABLE IF EXISTS tmp_Shop_Supplier_Purchase_Order; - DROP TABLE IF EXISTS tmp_Shop_Supplier; - DROP TABLE IF EXISTS tmp_Shop_Product; - - CREATE TABLE tmp_Shop_Supplier ( - id_supplier INTEGER NOT NULL, - CONSTRAINT FK_tmp_Shop_Supplier_id_supplier - FOREIGN KEY (id_supplier) - REFERENCES Shop_Supplier(id_supplier), - active BOOLEAN NOT NULL, - rank_supplier INTEGER NULL, - can_view BOOLEAN, - can_edit BOOLEAN, - can_admin BIT - ); - - CREATE TABLE tmp_Shop_Supplier_Purchase_Order ( - id_order INTEGER NOT NULL PRIMARY KEY, - id_supplier_ordered INTEGER NOT NULL, - CONSTRAINT FK_tmp_Shop_Supplier_Purchase_Order_id_supplier_ordered - FOREIGN KEY (id_supplier_ordered) - REFERENCES Shop_Supplier(id_supplier), - cost_total_local REAL NOT NULL, - id_currency_cost INTEGER NOT NULL, - active BOOLEAN NOT NULL, - rank_order INTEGER NOT NULL - ); - - /* - CREATE TABLE tmp_Shop_Supplier_Purchase_Order_Product_Link ( - id_link INTEGER NOT NULL PRIMARY KEY, - id_order INTEGER NOT NULL, - CONSTRAINT FK_tmp_Supplier_Purchase_Order_Product_Link_id_order - FOREIGN KEY (id_order) - REFERENCES Shop_Supplier_Purchase_Order(id_order), - id_permutation INTEGER NOT NULL, - CONSTRAINT FK_tmp_Supplier_Purchase_Order_Product_Link_id_permutation - FOREIGN KEY (id_permutation) - REFERENCES Shop_Product_Permutation(id_permutation), - cost_total_local REAL NOT NULL, - id_currency_cost INTEGER NOT NULL, - quantity_ordered REAL NOT NULL, - id_unit_quantity INTEGER NOT NULL, - CONSTRAINT FK_tmp_Supplier_Purchase_Order_Product_Link_id_unit_quantity - FOREIGN KEY (id_unit_quantity) - REFERENCES Shop_Unit_Measurement(id_unit_measurement), - quantity_received REAL NULL, - latency_delivery_days INTEGER NOT NULL, - display_order INTEGER NOT NULL - ); - */ - - CREATE TABLE tmp_Shop_Product ( - id_category INTEGER NOT NULL, - CONSTRAINT FK_tmp_Shop_Product_id_category - FOREIGN KEY (id_category) - REFERENCES Shop_Product_Category(id_category), - id_product INTEGER NOT NULL, - CONSTRAINT FK_tmp_Shop_Product_id_product - FOREIGN KEY (id_product) - REFERENCES Shop_Product(id_product), - -- product_has_variations BOOLEAN NOT NULL, - id_permutation INTEGER NULL, - CONSTRAINT FK_tmp_Shop_Product_id_permutation - FOREIGN KEY (id_permutation) - REFERENCES Shop_Product_Permutation(id_permutation), - active_category BOOLEAN NOT NULL, - active_product BOOLEAN NOT NULL, - active_permutation BOOLEAN NULL, - display_order_category INTEGER NOT NULL, - display_order_product INTEGER NOT NULL, - display_order_permutation INTEGER NULL, - rank_permutation INTEGER NOT NULL, -- _in_category - name VARCHAR(255) NOT NULL, - description VARCHAR(4000) NOT NULL, - /* - price_GBP_full REAL NOT NULL, - price_GBP_min REAL NOT NULL, - */ - latency_manufacture INTEGER NOT NULL, - quantity_min REAL NOT NULL, - quantity_max REAL NOT NULL, - quantity_step REAL NOT NULL, - quantity_stock REAL NOT NULL, - is_subscription BOOLEAN NOT NULL, - id_unit_measurement_interval_recurrence INTEGER, - CONSTRAINT FK_tmp_Shop_Product_id_unit_measurement_interval_recurrence - FOREIGN KEY (id_unit_measurement_interval_recurrence) - REFERENCES Shop_Interval_Recurrence(id_interval), - count_interval_recurrence INTEGER, - id_stripe_product VARCHAR(100), - product_has_variations INTEGER NOT NULL, - can_view BOOLEAN, - can_edit BOOLEAN, - can_admin BIT - ); - - /* - CREATE TABLE IF NOT EXISTS tmp_Msg_Error ( - display_order INTEGER NOT NULL PRIMARY KEY GENERATED ALWAYS AS IDENTITY, - guid UUID NOT NULL, - id_type INTEGER 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 - ); - */ - - -- select v_has_filter_product, v_has_filter_permutation; - - IF v_has_filter_supplier THEN - IF EXISTS ( - SELECT * - FROM UNNEST(v_ids_supplier) AS Supplier_Id - LEFT JOIN Shop_Supplier S ON Supplier_Id = S.id_supplier - WHERE ISNULL(S.id_supplier) - LIMIT 1 - ) THEN - RAISE EXCEPTION 'Invalid supplier IDs: %', ( - SELECT STRING_AGG(Supplier_Id, ', ') - FROM UNNEST(v_ids_supplier) AS Supplier_Id - LEFT JOIN Shop_Supplier S ON Supplier_Id = S.id_supplier - WHERE ISNULL(S.id_supplier) - LIMIT 1 - ) - USING ERRCODE = '22000' - ; - ELSE - INSERT INTO tmp_Shop_Supplier ( - id_supplier, - active, - rank_supplier - ) - SELECT - S.id_supplier, - S.active, - RANK() OVER (ORDER BY id_supplier ASC) AS rank_supplier - FROM Shop_Supplier S - INNER JOIN Split_Temp TS ON S.id_supplier = TS.substring - WHERE - ( - v_get_inactive_supplier - OR S.active = TRUE - ) - ; - END IF; - - IF v_get_first_supplier_only THEN - DELETE FROM tmp_Shop_Supplier t_S - WHERE t_S.rank_supplier > ( - SELECT MIN(t_S.rank_supplier) - FROM tmp_Shop_Supplier t_S - ) - ; - END IF; - END IF; - - IF v_has_filter_category = TRUE THEN - IF EXISTS ( - SELECT * - FROM UNNEST(v_ids_category) AS Category_Id - LEFT JOIN Shop_Product_Category C ON Category_Id = C.id_category - WHERE ISNULL(C.id_category) - ) THEN - RAISE EXCEPTION 'Invalid category IDs: %', ( - SELECT STRING_AGG(Category_Id, ', ') - FROM UNNEST(v_ids_category) AS Category_Id - LEFT JOIN Shop_Product_Category C ON Category_Id = C.id_category - WHERE ISNULL(C.id_category) - ) - USING ERRCODE = '22000' - ; - END IF; - END IF; - - IF v_has_filter_product = TRUE THEN - IF EXISTS ( - SELECT * - FROM UNNEST(v_ids_product) AS Product_Id - LEFT JOIN Shop_Product P ON Product_Id = P.id_product - WHERE ISNULL(P.id_product) - LIMIT 1 - ) THEN - RAISE EXCEPTION 'Invalid product IDs: %', ( - SELECT STRING_AGG(Product_Id, ', ') - FROM UNNEST(v_ids_product) AS Product_Id - LEFT JOIN Shop_Product P ON Product_Id = P.id_product - WHERE ISNULL(P.id_product) - ) - USING ERRCODE = '22000' - ; - END IF; - END IF; - - IF v_has_filter_permutation = TRUE THEN - IF EXISTS ( - SELECT * - FROM UNNEST(v_ids_permutation) AS Permutation_Id - LEFT JOIN Shop_Product_Permutation PP ON Permutation_Id = PP.id_permutation - WHERE ISNULL(PP.id_permutation) - LIMIT 1 - ) THEN - RAISE EXCEPTION 'Invalid permutation IDs: %', ( - SELECT STRING_AGG(Permutation_Id, ', ') - FROM UNNEST(v_ids_permutation) AS Permutation_Id - LEFT JOIN Shop_Product_Permutation PP ON Permutation_Id = PP.id_permutation - WHERE ISNULL(PP.id_permutation) - ) - USING ERRCODE = '22000' - ; - END IF; - END IF; - - IF v_has_filter_category = TRUE OR v_has_filter_product = TRUE OR v_has_filter_permutation = TRUE THEN - INSERT INTO tmp_Shop_Product ( - id_category, - id_product, - id_permutation, - active_category, - active_product, - active_permutation, - display_order_category, - display_order_product, - display_order_permutation - -- rank_permutation, - /* - name, - description, - /* - price_GBP_VAT_incl, - price_GBP_VAT_excl, - price_GBP_min, - */ - latency_manufacture, - quantity_min, - quantity_max, - quantity_step, - quantity_stock, - is_subscription, - id_unit_measurement_interval_recurrence, - count_interval_recurrence, - id_stripe_product, - product_has_variations - */ - ) - SELECT - P.id_category, - P.id_product, - -- P.has_variations AS product_has_variations, - PP.id_permutation, - C.active AS active_category, - P.active AS active_product, - PP.active AS active_permutation, - C.display_order AS display_order_category, - P.display_order AS display_order_product, - PP.display_order AS display_order_permutation - -- RANK() OVER (ORDER BY C.display_order, P.display_order, PP.display_order) AS rank_permutation, #PARTITION BY P.id_category -- _in_category - /* - P.name, - PP.description, - /* - PP.price_GBP_VAT_incl, - PP.price_GBP_VAT_excl, - PP.price_GBP_min, - */ - PP.latency_manufacture, - PP.quantity_min, - PP.quantity_max, - PP.quantity_step, - PP.quantity_stock, - PP.is_subscription, - PP.id_unit_measurement_interval_recurrence, - PP.count_interval_recurrence, - PP.id_stripe_product, - P.has_variations - */ - FROM Shop_Product P - INNER JOIN Shop_Product_Permutation PP - ON P.id_product = PP.id_product - INNER JOIN Shop_Product_Category C - ON P.id_category = C.id_category - WHERE - -- permutations - ( - ( - NOT v_has_filter_permutation - OR FIND_IN_SET(PP.id_permutation, v_ids_permutation) > 0 - ) - AND ( - v_get_inactive_permutation - OR PP.active = TRUE - ) - ) - -- categories - AND ( - ( - NOT v_has_filter_category - OR FIND_IN_SET(P.id_category, v_ids_category) > 0 - ) - AND ( - v_get_inactive_category - OR C.active = TRUE - ) - ) - -- products - AND ( - ( - NOT v_has_filter_product - OR FIND_IN_SET(P.id_product, v_ids_product) > 0 - ) - AND ( - v_get_inactive_product - OR P.active = TRUE - ) - ) - ; - END IF; - - -- Get orders - IF v_has_filter_order AND EXISTS ( - -- SELECT * FROM Split_Temp TS LEFT JOIN Shop_Supplier_Purchase_Order SPO ON TS.substring = SPO.id_order WHERE ISNULL(SPO.id_order) - SELECT * - FROM UNNEST(v_ids_order) Order_Id - - ) THEN - RAISE EXCEPTION 'Invalid order IDs: %', ( - SELECT STRING_AGG(TS.substring, ', ') - FROM UNNEST(v_ids_order) - LEFT JOIN Shop_Supplier_Purchase_Order SPO ON TS.substring = SPO.id_order - WHERE ISNULL(SPO.id_order) - ) - USING ERRCODE = '22000' - ; - END IF; - - INSERT INTO tmp_Shop_Supplier_Purchase_Order ( -- _Product_Link - id_order, - -- active, - rank_order - ) - SELECT - SPO.id_order, - -- SPO.active, - RANK() OVER (ORDER BY SPO.id_order ASC) AS rank_order - FROM Shop_Supplier_Purchase_Order SPO - -- INNER JOIN Split_Temp TS ON SPO.id_order = TS.substring - INNER JOIN Shop_Supplier_Purchase_Order_Product_Link SPOPL ON SPO.id_order = SPOPL.id_order - INNER JOIN Shop_Supplier S ON SPO.id_supplier_ordered = S.id_supplier - INNER JOIN Shop_Product_Permutation PP ON SPOPL.id_permutation = PP.id_permutation - INNER JOIN Shop_Product P ON PP.id_product = P.id_product - INNER JOIN Shop_Product_Category C ON P.id_category = C.id_category - LEFT JOIN tmp_Shop_Product t_P ON SPOPL.id_permutation = t_P.id_permutation - LEFT JOIN tmp_Shop_Supplier t_S ON SPO.id_supplier_ordered = t_S.id_supplier - WHERE - -- supplier - ( - v_has_filter_supplier = FALSE - OR NOT ISNULL(t_S.id_supplier) -- SPO.id_supplier_ordered IN (SELECT DISTINCT id_supplier FROM tmp_Shop_Supplier) - ) - -- order - AND ( - ( - v_has_filter_order = FALSE - OR ( - -- ID - -- FIND_IN_SET(SPO.id_order, v_ids_order) > 0 - SPO.id_order = ANY(v_ids_order) - -- date - AND ( - ( - v_has_filter_date_from = FALSE - OR SPO.created_on > v_date_from - ) - AND ( - v_has_filter_date_to = FALSE - OR SPO.created_on < v_date_to - ) - ) - ) - ) - -- active - /* - AND ( - v_get_inactive_order - OR SPO.active = TRUE - ) - */ - ) - -- permutations - AND ( - ( - v_has_filter_category = FALSE - AND v_has_filter_product = FALSE - AND v_has_filter_permutation = FALSE - ) - OR NOT ISNULL(t_P.id_permutation) -- SPO.id_permutation IN (SELECT DISTINCT id_permutation FROM tmp_Shop_Product) - ) - ; - - IF v_get_first_order_only THEN - DELETE FROM tmp_Shop_Supplier_Purchase_Order t_SPO - WHERE t_SPO.rank_order > ( - SELECT MIN(t_SPO.rank_order) - FROM tmp_Shop_Supplier_Purchase_Order t_SPO - ) - ; - END IF; - - -- Permissions - -- v_id_user := (SELECT id_user FROM Shop_User WHERE name = CURRENT_USER); - v_ids_permission_supplier_purchase_order := (SELECT STRING_AGG(id_permission, ',') FROM Shop_Permission WHERE code IN ('STORE_SUPPLIER', 'STORE_SUPPLIER_PURCHASE_ORDER')); - -- v_ids_permutation_permission := (SELECT STRING_AGG(id_permutation, ',') FROM tmp_Shop_Product WHERE NOT ISNULL(id_permutation)); - v_ids_product_permission := (SELECT STRING_AGG(DISTINCT t_P.id_product, ',') FROM tmp_Shop_Product t_P WHERE NOT ISNULL(t_P.id_product)); - - -- SELECT v_guid, v_id_user, false, v_id_permission_product, v_id_access_level_view, v_ids_permutation_permission; - -- select * from Shop_Calc_User_Temp; - - CALL p_shop_calc_user(v_guid, v_id_user, FALSE, v_ids_permission_supplier_purchase_order, v_id_access_level_view, v_ids_product_permission); - - -- select * from Shop_Calc_User_Temp; - - IF NOT EXISTS (SELECT can_view FROM Shop_Calc_User_Temp UE_T WHERE UE_T.GUID = v_guid) THEN - RAISE EXCEPTION 'You do not have view permissions for %', ( - SELECT STRING_AGG(name, ', ') - FROM Shop_Permission - WHERE id_permission = v_ids_permission_supplier_purchase_order - ) - USING ERRCODE = '42501' - ; - END IF; - - - UPDATE tmp_Shop_Product t_P - SET t_P.can_view = UE_T.can_view, - t_P.can_edit = UE_T.can_edit, - t_P.can_admin = UE_T.can_admin - FROM tmp_Shop_Product t_P - INNER JOIN Shop_Calc_User_Temp UE_T - ON t_P.id_product = UE_T.id_product -- t_P.id_permutation = UE_T.id_permutation - AND UE_T.GUID = v_guid - ; - - -- CALL p_shop_clear_calc_user(v_guid); - -- DROP TABLE IF EXISTS Shop_Calc_User_Temp; - DELETE FROM Shop_Calc_User_Temp - WHERE GUID = v_guid - ; - - - -- select * from tmp_Shop_Product; - - -- Returns - -- v_now := CURRENT_TIMESTAMP; - - -- Suppliers - OPEN result_suppliers FOR - SELECT - t_S.id_supplier, - S.name_company, - S.name_contact, - S.department_contact, - S.id_address, - S.phone_number, - S.fax, - S.email, - S.website, - S.id_currency, - t_S.active - FROM tmp_Shop_Supplier t_S - INNER JOIN Shop_Supplier S - ON t_S.id_supplier = S.id_supplier - ; - RETURN NEXT result_suppliers; - - -- Supplier Purchase Order - OPEN result_orders FOR - SELECT -- * - t_SPO.id_order, - SPO.id_supplier_ordered, - SPO.cost_total_local, - SPO.id_currency_cost, - t_SPO.active - FROM Shop_Supplier_Purchase_Order SPO - INNER JOIN tmp_Shop_Supplier_Purchase_Order t_SPO ON SPO.id_order = t_SPO.id_order - ; - RETURN NEXT result_orders; - - -- Supplier Purchase Order Product Link - OPEN result_order_product_links FOR - SELECT - SPOPL.id_link, - SPOPL.id_order, - SPOPL.id_permutation, - P.name as name_product, - SPOPL.cost_total_local, - SPOPL.id_currency_cost, - SPOPL.quantity_ordered, - SPOPL.id_unit_quantity, - SPOPL.quantity_received, - SPOPL.latency_delivery_days, - SPOPL.display_order - FROM Shop_Supplier_Purchase_Order_Product_Link SPOPL - -- INNER JOIN tmp_Shop_Supplier_Purchase_Order_Product_Link t_SPOPL ON SPOPL.id_link = t_SPOPL.id_link - INNER JOIN tmp_Shop_Supplier_Purchase_Order t_SPO ON SPOPL.id_order = t_SPO.id_order - INNER JOIN Shop_Product_Permutation PP ON SPOPL.id_permutation = PP.id_permutation - INNER JOIN Shop_Product P ON PP.id_product = P.id_product - INNER JOIN Shop_Product_Category C ON P.id_category = C.id_category - ORDER BY SPOPL.id_order, C.display_order, P.display_order, PP.display_order - ; - RETURN NEXT result_order_product_links; - - -- Errors - /* - SELECT - /* - t_ME.display_order, - t_ME.guid, - t_ME.id_type, - t_ME.msg, - MET.code, - MET.name, - MET.description - */ - * - FROM tmp_Msg_Error t_ME - INNER JOIN Shop_Msg_Error_Type MET - ON t_ME.id_type = MET.id_type - WHERE guid = v_guid - ; - */ - - /* - OPEN result_errors FOR - SELECT * - FROM tmp_Msg_Error - ; - -- RETURN NEXT result_errors; - */ - - - /* - -- Return arguments for test - SELECT - v_ids_category, - v_get_inactive_category, - v_ids_product, - v_get_inactive_product, - v_get_first_product_only, - v_get_all_product, - v_ids_image, - v_get_inactive_image, - v_get_first_image_only, - v_get_all_image - ; - */ - - -- select 'other outputs'; - -- select * from tmp_Shop_Product; - - -- Clean up - DROP TABLE IF EXISTS tmp_Shop_Supplier_Purchase_Order_Product_Link; - DROP TABLE IF EXISTS tmp_Shop_Supplier_Purchase_Order; - DROP TABLE IF EXISTS tmp_Shop_Supplier; - DROP TABLE IF EXISTS tmp_Shop_Product; - - DELETE FROM Shop_Calc_User_Temp - WHERE GUID = v_guid - ; -END; -$$ LANGUAGE plpgsql; - - -/* - -DROP FUNCTION IF EXISTS fetch_results; - -CREATE OR REPLACE FUNCTION fetch_results() -RETURNS VOID AS $$ -DECLARE - curs refcursor; - rec record; -BEGIN - FOR curs IN SELECT p_shop_get_many_supplier_purchase_order ( - '', -- a_id_user - TRUE, -- a_get_all_supplier - FALSE, -- a_get_inactive_supplier - FALSE, -- a_get_first_supplier_only - '', -- a_ids_supplier - TRUE, -- a_get_all_order - -- FALSE, -- a_get_inactive_order - FALSE, -- a_get_first_order_only - '', -- a_ids_order - FALSE, -- a_get_inactive_category - '', -- a_ids_category - FALSE, -- a_get_inactive_product - '', -- a_ids_product - FALSE, -- a_get_inactive_permutation - '', -- a_ids_permutation - NULL, -- a_date_from - NULL -- a_date_to - ) LOOP - RAISE NOTICE 'Fetching from cursor: %', curs; - LOOP - FETCH curs INTO rec; - EXIT WHEN NOT FOUND; - RAISE NOTICE 'Record: %', rec; - END LOOP; - END LOOP; -END; -$$ LANGUAGE plpgsql; - -SELECT fetch_results(); - -*/ - - - -CREATE OR REPLACE FUNCTION p_shop_get_many_manufacturing_purchase_order ( - IN a_id_user INTEGER, - IN a_get_all_order BOOLEAN, - IN a_get_inactive_order BOOLEAN, - IN a_get_first_order_only BOOLEAN, - IN a_ids_order INTEGER[], - IN a_get_inactive_category BOOLEAN, - IN a_ids_category INTEGER[], - IN a_get_inactive_product BOOLEAN, - IN a_ids_product INTEGER[], - IN a_get_inactive_permutation BOOLEAN, - IN a_ids_permutation INTEGER[], - IN a_date_from TIMESTAMP, - IN a_date_to TIMESTAMP -) -RETURNS SETOF REFCURSOR -AS $$ -DECLARE - v_id_user INTEGER; - v_get_all_order BOOLEAN; - v_get_inactive_order BOOLEAN; - v_get_first_order_only BOOLEAN; - v_ids_order INTEGER[]; - v_get_inactive_category BOOLEAN; - v_ids_category INTEGER[]; - v_get_inactive_product BOOLEAN; - v_ids_product INTEGER[]; - v_get_inactive_permutation BOOLEAN; - v_ids_permutation INTEGER[]; - v_date_from TIMESTAMP; - v_date_to TIMESTAMP; - v_has_filter_order BOOLEAN; - v_has_filter_category BOOLEAN; - v_has_filter_product BOOLEAN; - v_has_filter_permutation BOOLEAN; - v_has_filter_date_from BOOLEAN; - v_has_filter_date_to BOOLEAN; - v_guid UUID; - v_id_access_level_view INTEGER; - v_code_error_data VARCHAR(50); - v_id_type_error_data INTEGER; - v_ids_permission_manufacturing_purchase_order VARCHAR(4000); - v_ids_product_permission INTEGER[]; - result_orders REFCURSOR; - result_order_product_links REFCURSOR; - result_errors REFCURSOR; -BEGIN - v_id_user := TRIM(COALESCE(a_id_user, '')); - v_get_all_order := COALESCE(a_get_all_order, TRUE); - v_get_inactive_order := COALESCE(a_get_inactive_order, FALSE); - v_get_first_order_only := COALESCE(a_get_first_order_only, FALSE); - v_ids_order := TRIM(COALESCE(a_ids_order, '')); - v_get_inactive_category := COALESCE(a_get_inactive_category, FALSE); - v_ids_category := TRIM(COALESCE(a_ids_category, '')); - v_get_inactive_product := COALESCE(a_get_inactive_product, FALSE); - v_ids_product := TRIM(COALESCE(a_ids_product, '')); - v_get_inactive_permutation := COALESCE(a_get_inactive_permutation, FALSE); - v_ids_permutation := TRIM(COALESCE(a_ids_permutation, '')); - v_date_from := a_date_from; - v_date_to := a_date_to; - - v_guid := gen_random_uuid(); - v_id_access_level_view := (SELECT id_access_level FROM Shop_Access_Level WHERE code = 'VIEW' LIMIT 1); - -- v_ids_permission_manufacturing_purchase_order := (SELECT id_permission FROM Shop_Permission WHERE code = 'SHOP_manufacturing_PURCHASE_ORDER' LIMIT 1); - v_code_error_data = 'BAD_DATA'; - v_id_type_error_data := (SELECT id_type FROM Shop_Msg_Error_Type WHERE code = v_code_error_data); - - v_has_filter_order = CASE WHEN v_ids_order = '' THEN FALSE ELSE TRUE END; - v_has_filter_category = CASE WHEN v_ids_category = '' THEN FALSE ELSE TRUE END; - v_has_filter_product = CASE WHEN v_ids_product = '' THEN FALSE ELSE TRUE END; - v_has_filter_permutation = CASE WHEN v_ids_permutation = '' THEN FALSE ELSE TRUE END; - v_has_filter_date_from = CASE WHEN ISNULL(v_date_from) THEN FALSE ELSE TRUE END; - v_has_filter_date_to = CASE WHEN ISNULL(v_date_to) THEN FALSE ELSE TRUE END; - - - -- Temporary tables - DROP TABLE IF EXISTS tmp_Shop_Manufacturing_Purchase_Order_Product_Link; - DROP TABLE IF EXISTS tmp_Shop_Manufacturing_Purchase_Order; - DROP TABLE IF EXISTS tmp_Shop_Product; - - CREATE TABLE tmp_Shop_Manufacturing_Purchase_Order ( - id_order INTEGER NOT NULL PRIMARY KEY, - /* - id_supplier_ordered INTEGER NOT NULL, - CONSTRAINT FK_tmp_Shop_Manufacturing_Purchase_Order_id_supplier_ordered - FOREIGN KEY (id_supplier_ordered) - REFERENCES Shop_Supplier(id_supplier), - */ - cost_total_local REAL NOT NULL, - id_currency_cost INTEGER NOT NULL, - value_produced_total_local REAL NOT NULL, - active BOOLEAN NOT NULL, - rank_order INTEGER NOT NULL - ); - - /* - CREATE TABLE tmp_Shop_Manufacturing_Purchase_Order_Product_Link ( - id_link INTEGER NOT NULL PRIMARY KEY, - id_order INTEGER NOT NULL, - CONSTRAINT FK_tmp_manufacturing_Purchase_Order_Product_Link_id_order - FOREIGN KEY (id_order) - REFERENCES Shop_manufacturing_Purchase_Order(id_order), - id_permutation INTEGER NOT NULL, - CONSTRAINT FK_tmp_manufacturing_Purchase_Order_Product_Link_id_permutation - FOREIGN KEY (id_permutation) - REFERENCES Shop_Product_Permutation(id_permutation), - cost_total_local REAL NOT NULL, - id_currency_cost INTEGER NOT NULL, - quantity_used REAL NOT NULL, - id_unit_quantity INTEGER NOT NULL, - CONSTRAINT FK_tmp_manufacturing_Purchase_Order_Product_Link_id_unit_quantity - FOREIGN KEY (id_unit_quantity) - REFERENCES Shop_Unit_Measurement(id_unit_measurement), - quantity_produced REAL NULL, - latency_delivery_days INTEGER NOT NULL, - display_order INTEGER NOT NULL - ); - */ - - CREATE TABLE tmp_Shop_Product ( - id_category INTEGER NOT NULL, - CONSTRAINT FK_tmp_Shop_Product_id_category - FOREIGN KEY (id_category) - REFERENCES Shop_Product_Category(id_category), - id_product INTEGER NOT NULL, - CONSTRAINT FK_tmp_Shop_Product_id_product - FOREIGN KEY (id_product) - REFERENCES Shop_Product(id_product), - -- product_has_variations BOOLEAN NOT NULL, - id_permutation INTEGER NULL, - CONSTRAINT FK_tmp_Shop_Product_id_permutation - FOREIGN KEY (id_permutation) - REFERENCES Shop_Product_Permutation(id_permutation), - active_category BOOLEAN NOT NULL, - active_product BOOLEAN NOT NULL, - active_permutation BOOLEAN NULL, - display_order_category INTEGER NOT NULL, - display_order_product INTEGER NOT NULL, - display_order_permutation INTEGER NULL, - rank_permutation INTEGER NOT NULL, -- _in_category - -- name VARCHAR(255) NOT NULL, - -- description VARCHAR(4000) NOT NULL, - /* - price_GBP_full REAL NOT NULL, - price_GBP_min REAL NOT NULL, - */ - /* - latency_manufacture INTEGER NOT NULL, - quantity_min REAL NOT NULL, - quantity_max REAL NOT NULL, - quantity_step REAL NOT NULL, - quantity_stock REAL NOT NULL, - is_subscription BOOLEAN NOT NULL, - id_unit_measurement_interval_recurrence INTEGER, - CONSTRAINT FK_tmp_Shop_Product_id_unit_measurement_interval_recurrence - FOREIGN KEY (id_unit_measurement_interval_recurrence) - REFERENCES Shop_Interval_Recurrence(id_interval), - count_interval_recurrence INTEGER, - id_stripe_product VARCHAR(100), - product_has_variations INTEGER NOT NULL, - */ - can_view BOOLEAN, - can_edit BOOLEAN, - can_admin BIT - ); - - /* - CREATE TABLE IF NOT EXISTS tmp_Msg_Error ( - display_order INTEGER NOT NULL PRIMARY KEY GENERATED ALWAYS AS IDENTITY, - guid UUID NOT NULL, - id_type INTEGER 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 - ); - */ - - -- select v_has_filter_product, v_has_filter_permutation; - - IF v_has_filter_category = TRUE AND EXISTS ( - SELECT * - FROM UNNEST(v_ids_category) AS Category_Id - LEFT JOIN Shop_Product_Category C ON Category_Id = C.id_category - WHERE ISNULL(C.id_category) - ) THEN - RAISE EXCEPTION 'Invalid category IDs: %', ( - SELECT COALESCE(STRING_AGG(Category_Id, ', ') ,'NULL') - FROM UNNEST(v_ids_category) AS Category_Id - LEFT JOIN Shop_Product_Category C ON Category_Id = C.id_category - WHERE ISNULL(C.id_category) - ) - USING ERRCODE = '22000' - ; - END IF; - - IF v_has_filter_product = TRUE AND EXISTS ( - SELECT * - FROM UNNEST(v_ids_product) AS Product_Id - LEFT JOIN Shop_Product P ON Product_Id = P.id_product - WHERE ISNULL(P.id_product) - LIMIT 1 - ) THEN - RAISE EXCEPTION 'Invalid product IDs: %', ( - SELECT COALESCE(STRING_AGG(Product_Id, ', ') ,'NULL') - FROM UNNEST(v_ids_product) AS Product_Id - LEFT JOIN Shop_Product P ON Product_Id = P.id_product - WHERE ISNULL(P.id_product) - ) - USING ERRCODE = '22000' - ; - END IF; - - IF v_has_filter_permutation = TRUE AND EXISTS ( - SELECT * - FROM UNNEST(v_ids_permutation) AS Permutation_Id - LEFT JOIN Shop_Product_Permutation PP ON Permutation_Id = PP.id_permutation - WHERE ISNULL(PP.id_permutation) - LIMIT 1 - ) THEN - RAISE EXCEPTION 'Invalid permutation IDs: %', ( - SELECT STRING_AGG(Permutation_Id, ', ') - FROM UNNEST(v_ids_permutation) AS Permutation_Id - LEFT JOIN Shop_Product_Permutation PP ON Permutation_Id = PP.id_permutation - WHERE ISNULL(PP.id_permutation) - ) - USING ERRCODE = '22000' - ; - END IF; - - IF v_has_filter_category = TRUE OR v_has_filter_product = TRUE OR v_has_filter_permutation = TRUE THEN - INSERT INTO tmp_Shop_Product ( - id_category, - id_product, - id_permutation, - active_category, - active_product, - active_permutation, - display_order_category, - display_order_product, - display_order_permutation - -- rank_permutation, - /* - name, - description, - /* - price_GBP_VAT_incl, - price_GBP_VAT_excl, - price_GBP_min, - */ - latency_manufacture, - quantity_min, - quantity_max, - quantity_step, - quantity_stock, - is_subscription, - id_unit_measurement_interval_recurrence, - count_interval_recurrence, - id_stripe_product, - product_has_variations - */ - ) - SELECT - P.id_category, - P.id_product, - -- P.has_variations AS product_has_variations, - PP.id_permutation, - C.active AS active_category, - P.active AS active_product, - PP.active AS active_permutation, - C.display_order AS display_order_category, - P.display_order AS display_order_product, - PP.display_order AS display_order_permutation - -- RANK() OVER (ORDER BY C.display_order, P.display_order, PP.display_order) AS rank_permutation, #PARTITION BY P.id_category -- _in_category - /* - P.name, - PP.description, - /* - PP.price_GBP_VAT_incl, - PP.price_GBP_VAT_excl, - PP.price_GBP_min, - */ - PP.latency_manufacture, - PP.quantity_min, - PP.quantity_max, - PP.quantity_step, - PP.quantity_stock, - PP.is_subscription, - PP.id_unit_measurement_interval_recurrence, - PP.count_interval_recurrence, - PP.id_stripe_product, - P.has_variations - */ - FROM Shop_Product P - INNER JOIN Shop_Product_Permutation PP - ON P.id_product = PP.id_product - INNER JOIN Shop_Product_Category C - ON P.id_category = C.id_category - WHERE - -- permutations - ( - ( - NOT v_has_filter_permutation - OR FIND_IN_SET(PP.id_permutation, v_ids_permutation) > 0 - ) - AND ( - v_get_inactive_permutation - OR PP.active = TRUE - ) - ) - -- categories - AND ( - ( - NOT v_has_filter_category - OR FIND_IN_SET(P.id_category, v_ids_category) > 0 - ) - AND ( - v_get_inactive_category - OR C.active = TRUE - ) - ) - -- products - AND ( - ( - NOT v_has_filter_product - OR FIND_IN_SET(P.id_product, v_ids_product) > 0 - ) - AND ( - v_get_inactive_product - OR P.active = TRUE - ) - ) - ; - END IF; - - -- Get orders - IF v_has_filter_order AND EXISTS ( - SELECT * - FROM UNNEST(v_ids_order) AS Order_Id - LEFT JOIN Shop_Manufacturing_Purchase_Order MPO ON Order_Id = MPO.id_order - WHERE ISNULL(MPO.id_order) - LIMIT 1 - ) THEN - RAISE EXCEPTION 'Invalid order IDs: %', ( - SELECT STRING_AGG(Order_Id, ', ') - FROM UNNEST(v_ids_order) AS Order_Id - LEFT JOIN Shop_Manufacturing_Purchase_Order MPO ON Order_Id = MPO.id_order - WHERE ISNULL(MPO.id_order) - ) - USING ERRCODE = '22000' - ; - END IF; - - INSERT INTO tmp_Shop_Manufacturing_Purchase_Order ( -- _Product_Link - id_order, - -- active, - rank_order - ) - SELECT - MPO.id_order, - -- MPO.active, - RANK() OVER (ORDER BY MPO.id_order ASC) AS rank_order - FROM Shop_Manufacturing_Purchase_Order MPO - -- INNER JOIN Split_Temp TS ON MPO.id_order = TS.substring - INNER JOIN Shop_manufacturing_Purchase_Order_Product_Link MPOPL ON MPO.id_order = MPOPL.id_order - INNER JOIN Shop_Product_Permutation PP ON MPOPL.id_permutation = PP.id_permutation - INNER JOIN Shop_Product P ON PP.id_product = P.id_product - INNER JOIN Shop_Product_Category C ON P.id_category = C.id_category - LEFT JOIN tmp_Shop_Product t_P ON MPOPL.id_permutation = t_P.id_permutation - WHERE - -- order - ( - ( - v_has_filter_order = 0 - OR ( - -- ID - -- FIND_IN_SET(MPO.id_order, v_ids_order) > 0 - MPO.id_order = ANY(v_ids_order) - -- date - AND ( - ( - v_has_filter_date_from = 0 - OR MPO.created_on > v_date_from - ) - AND ( - v_has_filter_date_to = 0 - OR MPO.created_on < v_date_to - ) - ) - ) - ) - -- active - /* - AND ( - v_get_inactive_order - OR MPO.active = TRUE - ) - */ - ) - -- permutations - AND ( - ( - v_has_filter_category = FALSE - AND v_has_filter_product = FALSE - AND v_has_filter_permutation = 0 - ) - OR NOT ISNULL(t_P.id_permutation) -- MPO.id_permutation IN (SELECT DISTINCT id_permutation FROM tmp_Shop_Product) - ) - ; - - IF v_get_first_order_only THEN - DELETE FROM tmp_Shop_Manufacturing_Purchase_Order t_MPO - WHERE t_MPO.rank_order > ( - SELECT MIN(t_MPO.rank_order) - FROM tmp_Shop_Manufacturing_Purchase_Order t_MPO - ) - ; - END IF; - - -- Permissions - -- v_id_user := (SELECT id_user FROM Shop_User WHERE name = CURRENT_USER); - v_ids_permission_manufacturing_purchase_order := (SELECT STRING_AGG(id_permission, ',') FROM Shop_Permission WHERE code IN ('STORE_manufacturing', 'STORE_manufacturing_PURCHASE_ORDER')); - -- v_ids_permutation_permission := (SELECT STRING_AGG(id_permutation, ',') FROM tmp_Shop_Product WHERE NOT ISNULL(id_permutation)); - v_ids_product_permission := (SELECT STRING_AGG(P.id_product, ',') FROM (SELECT DISTINCT id_product FROM tmp_Shop_Product WHERE NOT ISNULL(id_product)) P); - - -- SELECT v_guid, v_id_user, false, v_id_permission_product, v_id_access_level_view, v_ids_permutation_permission; - -- select * from Shop_Calc_User_Temp; - - CALL p_shop_calc_user(v_guid, v_id_user, FALSE, v_ids_permission_manufacturing_purchase_order, v_id_access_level_view, v_ids_product_permission); - - -- select * from Shop_Calc_User_Temp; - - IF NOT EXISTS (SELECT can_view FROM Shop_Calc_User_Temp UE_T WHERE UE_T.GUID = v_guid) THEN - RAISE EXCEPTION 'You do not have view permissions for %', ( - SELECT STRING_AGG(name, ', ') - FROM Shop_Permission - WHERE id_permission = v_ids_permission_manufacturing_purchase_order - ) - USING ERRCODE = '42501' - ; - END IF; - - - UPDATE tmp_Shop_Product t_P - SET t_P.can_view = UE_T.can_view, - t_P.can_edit = UE_T.can_edit, - t_P.can_admin = UE_T.can_admin - FROM tmp_Shop_Product t_P - INNER JOIN Shop_Calc_User_Temp UE_T - ON t_P.id_product = UE_T.id_product -- t_P.id_permutation = UE_T.id_permutation - AND UE_T.GUID = v_guid - ; - - -- CALL p_shop_clear_calc_user(v_guid); - -- DROP TABLE IF EXISTS Shop_Calc_User_Temp; - DELETE FROM Shop_Calc_User_Temp - WHERE GUID = v_guid - ; - - - -- select * from tmp_Shop_Product; - - -- Returns - - -- manufacturing Purchase Order - OPEN result_orders FOR - SELECT -- * - t_MPO.id_order, - MPO.cost_total_local, - MPO.id_currency_cost, - MPO.value_produced_total_local, - t_MPO.active - FROM Shop_Manufacturing_Purchase_Order MPO - INNER JOIN tmp_Shop_Manufacturing_Purchase_Order t_MPO ON MPO.id_order = t_MPO.id_order - ; - RETURN NEXT result_orders; - - -- manufacturing Purchase Order Product Link - OPEN result_order_product_links FOR - SELECT - MPOPL.id_link, - MPOPL.id_order, - MPOPL.id_permutation, - P.name as name_product, - MPOPL.cost_total_local, - MPOPL.id_currency_cost, - MPOPL.value_produced_total_local, - MPOPL.quantity_used, - MPOPL.id_unit_quantity, - MPOPL.quantity_produced, - MPOPL.latency_manufacture, - MPOPL.display_order - FROM Shop_manufacturing_Purchase_Order_Product_Link MPOPL - -- INNER JOIN tmp_Shop_Manufacturing_Purchase_Order_Product_Link t_MPOPL ON MPOPL.id_link = t_MPOPL.id_link - INNER JOIN tmp_Shop_Manufacturing_Purchase_Order t_MPO ON MPOPL.id_order = t_MPO.id_order - INNER JOIN Shop_Product_Permutation PP ON MPOPL.id_permutation = PP.id_permutation - INNER JOIN Shop_Product P ON PP.id_product = P.id_product - INNER JOIN Shop_Product_Category C ON P.id_category = C.id_category - ORDER BY MPOPL.id_order, C.display_order, P.display_order, PP.display_order - ; - RETURN NEXT result_order_product_links; - - -- Errors - /* - SELECT - /* - t_ME.display_order, - t_ME.guid, - t_ME.id_type, - t_ME.msg, - MET.code, - MET.name, - MET.description - */ - * - FROM tmp_Msg_Error t_ME - INNER JOIN Shop_Msg_Error_Type MET - ON t_ME.id_type = MET.id_type - WHERE guid = v_guid - ; - OPEN result_errors FOR - SELECT * - FROM tmp_Msg_Error - ; - -- RETURN NEXT result_errors; - */ - - /* - -- Return arguments for test - SELECT - v_ids_category, - v_get_inactive_category, - v_ids_product, - v_get_inactive_product, - v_get_first_product_only, - v_get_all_product, - v_ids_image, - v_get_inactive_image, - v_get_first_image_only, - v_get_all_image - ; - */ - - -- select 'other outputs'; - -- select * from tmp_Shop_Product; - - -- Clean up - DROP TABLE IF EXISTS tmp_Shop_Manufacturing_Purchase_Order_Product_Link; - DROP TABLE IF EXISTS tmp_Shop_Manufacturing_Purchase_Order; - DROP TABLE IF EXISTS tmp_Shop_Product; - - DELETE FROM Shop_Calc_User_Temp - WHERE GUID = v_guid - ; -END; -$$ LANGUAGE plpgsql; - - -/* - - -DROP FUNCTION IF EXISTS fetch_results; - -CREATE OR REPLACE FUNCTION fetch_results() -RETURNS VOID AS $$ -DECLARE - curs refcursor; - rec record; -BEGIN - FOR curs IN SELECT p_shop_get_many_manufacturing_purchase_order ( - '', -- a_id_user - TRUE, -- a_get_all_order - FALSE, -- a_get_inactive_order - FALSE, -- a_get_first_order_only - '', -- a_ids_order - FALSE, -- a_get_inactive_category - '', -- a_ids_category - FALSE, -- a_get_inactive_product - '', -- a_ids_product - FALSE, -- a_get_inactive_permutation - '', -- a_ids_permutation - NULL, -- a_date_from - NULL -- a_date_to - ) LOOP - RAISE NOTICE 'Fetching from cursor: %', curs; - LOOP - FETCH curs INTO rec; - EXIT WHEN NOT FOUND; - RAISE NOTICE 'Record: %', rec; - END LOOP; - END LOOP; -END; -$$ LANGUAGE plpgsql; - -SELECT fetch_results(); - -*/ - - - -CREATE OR REPLACE FUNCTION p_shop_get_many_customer ( - IN a_id_user INTEGER, - IN a_get_all_customer BOOLEAN, - IN a_get_inactive_customer BOOLEAN, - IN a_get_first_customer_only BOOLEAN, - IN a_ids_customer INTEGER[] -) -RETURNS SETOF REFCURSOR -AS $$ -DECLARE - v_id_user INTEGER; - v_get_all_customer BOOLEAN; - v_get_inactive_customer BOOLEAN; - v_get_first_customer_only BOOLEAN; - v_ids_customer INTEGER[]; - v_has_filter_customer BOOLEAN; - v_guid UUID; - v_id_permission_customer INTEGER; - v_id_access_level_view INTEGER; - v_id_error_type_bad_data INTEGER; - v_code_error_type_bad_data VARCHAR(50); - result_customers REFCURSOR; - -- result_errors REFCURSOR; -BEGIN - v_id_user := TRIM(COALESCE(a_id_user, '')); - v_get_inactive_customer := COALESCE(a_get_inactive_customer, FALSE); - v_get_first_customer_only := COALESCE(a_get_first_customer_only, FALSE); - v_ids_customer := TRIM(COALESCE(a_ids_customer, '')); - v_get_all_customer := COALESCE(a_get_all_customer, CASE WHEN v_ids_customer = '' THEN TRUE ELSE FALSE END); - - - v_code_error_type_bad_data = 'BAD_DATA'; - v_id_error_type_bad_data := (SELECT id_type FROM Shop_Msg_Error_Type WHERE code = v_code_error_type_bad_data LIMIT 1); - v_guid := gen_random_uuid(); - v_id_access_level_view := (SELECT id_access_level FROM Shop_Access_Level WHERE code = 'VIEW'); - - v_has_filter_customer = CASE WHEN a_ids_customer = '' THEN FALSE ELSE TRUE END; - - -- Temporary tables - DROP TABLE IF EXISTS tmp_Shop_Customer; - - CREATE TABLE tmp_Shop_Customer ( - id_customer INTEGER NOT NULL, - CONSTRAINT FK_tmp_Shop_Customer_id_customer - FOREIGN KEY (id_customer) - REFERENCES Shop_Customer(id_customer), - active BOOLEAN NOT NULL, - rank_customer INTEGER NULL, - can_view BOOLEAN, - can_edit BOOLEAN, - can_admin BIT - ); - - /* - CREATE TABLE IF NOT EXISTS tmp_Msg_Error ( - display_order INTEGER NOT NULL PRIMARY KEY GENERATED ALWAYS AS IDENTITY, - guid UUID NOT NULL, - id_type INTEGER 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 - ); - */ - - -- select v_has_filter_product, v_has_filter_permutation; - - IF v_has_filter_customer = TRUE OR a_get_all_customer = TRUE THEN - IF EXISTS ( - SELECT * - FROM UNNEST(v_ids_customer) AS Customer_Id - LEFT JOIN Shop_Customer C ON Customer_Id = C.id_customer - WHERE ISNULL(C.id_customer) - ) THEN - RAISE EXCEPTION 'Invalid customer IDs: %', ( - SELECT STRING_AGG(Customer_Id, ', ') - FROM UNNEST(v_ids_customer) AS Customer_Id - LEFT JOIN Shop_Customer C ON Customer_Id = C.id_customer - WHERE ISNULL(C.id_customer) - LIMIT 1 - ) - USING ERRCODE = '22000' - ; - ELSE - INSERT INTO tmp_Shop_Customer ( - id_customer, - active, - rank_customer - ) - SELECT - C.id_customer, - C.active, - RANK() OVER (ORDER BY C.id_customer ASC) AS rank_customer - FROM Shop_Customer C - LEFT JOIN Split_Temp S_T ON C.id_customer = S_T.substring - WHERE - ( - a_get_all_customer = 1 - OR NOT ISNULL(S_T.substring) - ) - AND ( - a_get_inactive_customer = 1 - OR C.active = TRUE - ) - ; - END IF; - - IF a_get_first_customer_only = TRUE THEN - DELETE FROM tmp_Shop_Customer t_C - WHERE t_C.rank_customer > ( - SELECT MIN(t_C.rank_customer) - FROM tmp_Shop_Customer t_C - ) - ; - END IF; - END IF; - - -- Permissions - -- v_id_user := (SELECT id_user FROM Shop_User WHERE name = CURRENT_USER); - v_id_permission_customer := (SELECT id_permission FROM Shop_Permission WHERE code = 'STORE_CUSTOMER' LIMIT 1); - - -- SELECT v_guid, a_id_user, false, v_id_permission_product, v_id_access_level_view, v_ids_permutation_permission; - -- select * from Shop_Calc_User_Temp; - - CALL p_shop_calc_user(v_guid, a_id_user, FALSE, v_id_permission_customer, v_id_access_level_view, ''); - - -- select * from Shop_Calc_User_Temp; - - IF NOT EXISTS (SELECT can_view FROM Shop_Calc_User_Temp UE_T WHERE UE_T.GUID = v_guid) THEN - RAISE EXCEPTION 'You do not have view permissions for %', ( - SELECT COALESCE(STRING_AGG(name, ', '), 'NULL') - FROM Shop_Permission - WHERE id_permission = v_id_permission_customer - ) - USING ERRCODE = '42501' - ; - END IF; - - - -- select * from tmp_Shop_Product; - - -- Returns - -- v_now := CURRENT_TIMESTAMP; - - -- customers - OPEN result_customers FOR - SELECT - t_C.id_customer, - C.name_company, - C.name_contact, - C.department_contact, - C.id_address, - C.phone_number, - C.email, - C.id_currency, - C.active - FROM tmp_Shop_Customer t_C - INNER JOIN Shop_Customer C ON t_C.id_customer = C.id_customer - ; - RETURN NEXT result_customers; - - -- Errors - /* - SELECT - /* - t_ME.display_order, - t_ME.guid, - t_ME.id_type, - t_ME.msg, - MET.code, - MET.name, - MET.description - */ - * - FROM tmp_Msg_Error t_ME - INNER JOIN Shop_Msg_Error_Type MET - ON t_ME.id_type = MET.id_type - WHERE guid = v_guid - ; - OPEN result_errors FOR - SELECT * - FROM tmp_Msg_Error - ; - -- RETURN NEXT result_errors; - */ - - /* - -- Return arguments for test - SELECT - a_ids_category, - a_get_inactive_category, - a_ids_product, - a_get_inactive_product, - a_get_first_product_only, - a_get_all_product, - a_ids_image, - a_get_inactive_image, - a_get_first_image_only, - a_get_all_image - ; - */ - - -- select 'other outputs'; - -- select * from tmp_Shop_Product; - - -- Clean up - DROP TABLE IF EXISTS tmp_Shop_Customer; - - DELETE FROM Shop_Calc_User_Temp - WHERE GUID = v_guid - ; -END; -$$ LANGUAGE plpgsql; - - -/* - -DROP FUNCTION IF EXISTS fetch_results; - -CREATE OR REPLACE FUNCTION fetch_results() -RETURNS VOID AS $$ -DECLARE - curs refcursor; - rec record; -BEGIN - FOR curs IN SELECT p_shop_get_many_customer ( - '', -- a_id_user - 1, -- a_get_all_customer - 0, -- a_get_inactive_customer - 0, -- a_get_first_customer_only - '' -- a_ids_customer - ) LOOP - RAISE NOTICE 'Fetching from cursor: %', curs; - LOOP - FETCH curs INTO rec; - EXIT WHEN NOT FOUND; - RAISE NOTICE 'Record: %', rec; - END LOOP; - END LOOP; -END; -$$ LANGUAGE plpgsql; - -SELECT fetch_results(); - -*/ - - - -CREATE OR REPLACE FUNCTION p_shop_get_many_customer_sales_order ( - IN a_id_user INTEGER, - IN a_get_all_customer BOOLEAN, - IN a_get_inactive_customer BOOLEAN, - IN a_get_first_customer_only BOOLEAN, - IN a_ids_customer INTEGER[], - IN a_get_all_order BOOLEAN, - IN a_get_inactive_order BOOLEAN, - IN a_get_first_order_only BOOLEAN, - IN a_ids_order INTEGER[], - IN a_get_inactive_category BOOLEAN, - IN a_ids_category INTEGER[], - IN a_get_inactive_product BOOLEAN, - IN a_ids_product INTEGER[], - IN a_get_inactive_permutation BOOLEAN, - IN a_ids_permutation INTEGER[], - IN a_date_from TIMESTAMP, - IN a_date_to TIMESTAMP -) -RETURNS SETOF REFCURSOR -AS $$ -DECLARE - v_id_user INTEGER; - v_get_all_customer BOOLEAN; - v_get_inactive_customer BOOLEAN; - v_get_first_customer_only BOOLEAN; - v_ids_customer INTEGER[]; - v_get_all_order BOOLEAN; - v_get_inactive_order BOOLEAN; - v_get_first_order_only BOOLEAN; - v_ids_order INTEGER[]; - v_get_inactive_category BOOLEAN; - v_ids_category INTEGER[]; - v_get_inactive_product BOOLEAN; - v_ids_product INTEGER[]; - v_get_inactive_permutation BOOLEAN; - v_ids_permutation INTEGER[]; - v_date_from TIMESTAMP; - v_date_to TIMESTAMP; - -- Argument redeclaration - -- Variable declaration - v_has_filter_customer BOOLEAN; - v_has_filter_order BOOLEAN; - v_has_filter_category BOOLEAN; - v_has_filter_product BOOLEAN; - v_has_filter_permutation BOOLEAN; - v_has_filter_date_from BOOLEAN; - v_has_filter_date_to BOOLEAN; - v_guid UUID; - -- v_id_user VARCHAR(100); - -- v_ids_permutation_unavailable VARCHAR(4000); - v_ids_permission_customer_purchase_order VARCHAR(4000); - v_ids_product_permission VARCHAR(4000); - -- v_ids_permutation_permission VARCHAR(4000); - v_id_access_level_view INTEGER; - -- v_now TIMESTAMP; - -- v_id_minimum INTEGER; - v_code_error_data VARCHAR(50); - v_id_type_error_data INTEGER; - result_customers REFCURSOR; - result_orders REFCURSOR; - result_order_product_links REFCURSOR; - -- result_errors REFCURSOR; -BEGIN - v_id_user := TRIM(COALESCE(a_id_user, '')); - v_get_inactive_customer := COALESCE(a_get_inactive_customer, FALSE); - v_get_first_customer_only := COALESCE(a_get_first_customer_only, FALSE); - v_ids_customer := TRIM(COALESCE(a_ids_customer, '')); - v_get_all_customer := COALESCE(a_get_all_customer, CASE WHEN v_ids_customer = '' THEN TRUE ELSE FALSE END); - v_get_inactive_order := COALESCE(a_get_inactive_order, FALSE); - v_get_first_order_only := COALESCE(a_get_first_order_only, FALSE); - v_ids_order := TRIM(COALESCE(a_ids_order, '')); - v_get_all_order := COALESCE(a_get_all_order, CASE WHEN v_ids_order = '' THEN TRUE ELSE FALSE END); - v_get_inactive_category := COALESCE(a_get_inactive_category, FALSE); - v_ids_category := TRIM(COALESCE(a_ids_category, '')); - v_get_inactive_product := COALESCE(a_get_inactive_product, FALSE); - v_ids_product := TRIM(COALESCE(a_ids_product, '')); - v_get_inactive_permutation := COALESCE(a_get_inactive_permutation, FALSE); - v_ids_permutation := TRIM(COALESCE(a_ids_permutation, '')); - v_date_from := a_date_from; - v_date_to := a_date_to; - - v_guid := gen_random_uuid(); - v_id_access_level_view := (SELECT id_access_level FROM Shop_Access_Level WHERE code = 'VIEW' LIMIT 1); - -- v_ids_permission_customer_purchase_order := (SELECT id_permission FROM Shop_Permission WHERE code = 'Shop_Customer_Sales_ORDER' LIMIT 1); - v_code_error_data := 'BAD_DATA'; - v_id_type_error_data := (SELECT id_type FROM Shop_Msg_Error_Type WHERE code = v_code_error_data); - - v_has_filter_category := CASE WHEN a_ids_category = '' THEN FALSE ELSE TRUE END; - v_has_filter_product := CASE WHEN a_ids_product = '' THEN FALSE ELSE TRUE END; - v_has_filter_permutation := CASE WHEN a_ids_permutation = '' THEN FALSE ELSE TRUE END; - v_has_filter_date_from := CASE WHEN ISNULL(a_date_from) THEN FALSE ELSE TRUE END; - v_has_filter_date_to := CASE WHEN ISNULL(a_date_to) THEN FALSE ELSE TRUE END; - - - -- Temporary tables - DROP TABLE IF EXISTS tmp_Shop_Customer_Sales_Order_Product_Link; - DROP TABLE IF EXISTS tmp_Shop_Customer_Sales_Order; - DROP TABLE IF EXISTS tmp_Shop_Customer; - DROP TABLE IF EXISTS tmp_Shop_Product; - - CREATE TABLE tmp_Shop_Customer ( - id_customer INTEGER NOT NULL, - CONSTRAINT FK_tmp_Shop_Customer_id_customer - FOREIGN KEY (id_customer) - REFERENCES Shop_Customer(id_customer), - active BOOLEAN NOT NULL, - rank_customer INTEGER NULL, - can_view BOOLEAN, - can_edit BOOLEAN, - can_admin BIT - ); - - CREATE TABLE tmp_Shop_Customer_Sales_Order ( - id_order INTEGER NOT NULL PRIMARY KEY, - /* - id_customer INTEGER NOT NULL, - CONSTRAINT FK_tmp_Shop_Customer_Sales_Order_id_customer - FOREIGN KEY (id_customer) - REFERENCES Shop_Customer(id_customer), - price_total_local REAL NOT NULL, - id_currency_price INTEGER NOT NULL, - */ - active BOOLEAN NOT NULL, - rank_order INTEGER NOT NULL - ); - - /* - CREATE TABLE tmp_Shop_Customer_Sales_Order_Product_Link ( - id_link INTEGER NOT NULL PRIMARY KEY, - id_order INTEGER NOT NULL, - CONSTRAINT FK_tmp_customer_Purchase_Order_Product_Link_id_order - FOREIGN KEY (id_order) - REFERENCES Shop_Customer_Sales_Order(id_order), - id_permutation INTEGER NOT NULL, - CONSTRAINT FK_tmp_customer_Purchase_Order_Product_Link_id_permutation - FOREIGN KEY (id_permutation) - REFERENCES Shop_Product_Permutation(id_permutation), - price_total_local REAL NOT NULL, - id_currency_price INTEGER NOT NULL, - quantity_ordered REAL NOT NULL, - id_unit_quantity INTEGER NOT NULL, - CONSTRAINT FK_tmp_customer_Purchase_Order_Product_Link_id_unit_quantity - FOREIGN KEY (id_unit_quantity) - REFERENCES Shop_Unit_Measurement(id_unit_measurement), - quantity_received REAL NULL, - latency_delivery_days INTEGER NOT NULL, - display_order INTEGER NOT NULL - ); - */ - - CREATE TABLE tmp_Shop_Product ( - id_category INTEGER NOT NULL, - CONSTRAINT FK_tmp_Shop_Product_id_category - FOREIGN KEY (id_category) - REFERENCES Shop_Product_Category(id_category), - id_product INTEGER NOT NULL, - CONSTRAINT FK_tmp_Shop_Product_id_product - FOREIGN KEY (id_product) - REFERENCES Shop_Product(id_product), - -- product_has_variations BOOLEAN NOT NULL, - id_permutation INTEGER NULL, - CONSTRAINT FK_tmp_Shop_Product_id_permutation - FOREIGN KEY (id_permutation) - REFERENCES Shop_Product_Permutation(id_permutation), - active_category BOOLEAN NOT NULL, - active_product BOOLEAN NOT NULL, - active_permutation BOOLEAN NULL, - display_order_category INTEGER NOT NULL, - display_order_product INTEGER NOT NULL, - display_order_permutation INTEGER NULL, - rank_permutation INTEGER NOT NULL, -- _in_category - -- name VARCHAR(255) NOT NULL, - -- description VARCHAR(4000) NOT NULL, - /* - price_GBP_full REAL NOT NULL, - price_GBP_min REAL NOT NULL, - */ - /* - latency_manufacture INTEGER NOT NULL, - quantity_min REAL NOT NULL, - quantity_max REAL NOT NULL, - quantity_step REAL NOT NULL, - quantity_stock REAL NOT NULL, - is_subscription BOOLEAN NOT NULL, - id_unit_measurement_interval_recurrence INTEGER, - CONSTRAINT FK_tmp_Shop_Product_id_unit_measurement_interval_recurrence - FOREIGN KEY (id_unit_measurement_interval_recurrence) - REFERENCES Shop_Interval_Recurrence(id_interval), - count_interval_recurrence INTEGER, - id_stripe_product VARCHAR(100), - product_has_variations INTEGER NOT NULL, - */ - can_view BOOLEAN, - can_edit BOOLEAN, - can_admin BIT - ); - - /* - CREATE TABLE IF NOT EXISTS tmp_Msg_Error ( - display_order INTEGER NOT NULL PRIMARY KEY GENERATED ALWAYS AS IDENTITY, - guid UUID NOT NULL, - id_type INTEGER 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 - ); - */ - - -- select v_has_filter_product, v_has_filter_permutation; - - IF v_has_filter_customer = TRUE OR a_get_all_customer = TRUE THEN - IF EXISTS ( - SELECT * - FROM UNNEST(v_ids_customer) AS Customer_Id - LEFT JOIN Shop_Customer C ON Customer_Id = C.id_customer - WHERE ISNULL(C.id_customer) - LIMIT 1 - ) THEN - RAISE EXCEPTION 'Invalid customer IDs: %', ( - SELECT STRING_AGG(Customer_Id, ', ') - FROM UNNEST(v_ids_customer) AS Customer_Id - LEFT JOIN Shop_Customer C ON Customer_Id = C.id_customer - WHERE ISNULL(C.id_customer) - ) - USING ERRCODE = '22000' - ; - ELSE - INSERT INTO tmp_Shop_Customer ( - id_customer, - active, - rank_customer - ) - SELECT - C.id_customer, - C.active, - RANK() OVER (ORDER BY id_customer ASC) AS rank_customer - FROM Shop_Customer C - -- LEFT JOIN Split_Temp S_T ON C.id_customer = S_T.substring - WHERE - ( - a_get_all_customer = TRUE - -- OR NOT ISNULL(S_T.substring) - OR C.id_customer = ANY(v_ids_customer) - ) - AND ( - a_get_inactive_customer - OR C.active = TRUE - ) - ; - END IF; - - IF a_get_first_customer_only THEN - DELETE FROM tmp_Shop_Customer t_C - WHERE t_C.rank_customer > ( - SELECT MIN(t_C.rank_customer) - FROM tmp_Shop_Customer t_C - ) - ; - END IF; - END IF; - - IF v_has_filter_category = TRUE AND EXISTS ( - SELECT STRING_AGG(Category_Id, ', ') - FROM UNNEST(v_ids_category) AS Category_Id - LEFT JOIN Shop_Product_Category C ON Category_Id = C.id_customer - WHERE ISNULL(C.id_customer) - LIMIT 1 - ) THEN - RAISE EXCEPTION 'Invalid category IDs: %', ( - SELECT STRING_AGG(Category_Id, ', ') - FROM UNNEST(v_ids_category) AS Category_Id - LEFT JOIN Shop_Product_Category C ON Category_Id = C.id_customer - WHERE ISNULL(C.id_customer) - ) - USING ERRCODE = '22000' - ; - END IF; - - IF v_has_filter_product = TRUE AND EXISTS ( - SELECT * - FROM UNNEST(v_ids_product) AS Product_Id - LEFT JOIN Shop_Product P ON Product_Id = P.id_product - WHERE ISNULL(P.id_product) - LIMIT 1 - ) THEN - RAISE EXCEPTION 'Invalid product IDs: %', ( - SELECT COALESCE(STRING_AGG(Product_Id, ', ') ,'NULL') - FROM UNNEST(v_ids_product) AS Product_Id - LEFT JOIN Shop_Product P ON Product_Id = P.id_product - WHERE ISNULL(P.id_product) - ) - USING ERRCODE = '22000' - ; - END IF; - - IF v_has_filter_permutation = TRUE AND EXISTS ( - SELECT * - FROM UNNEST(v_ids_permutation) AS Permutation_Id - LEFT JOIN Shop_Product_Permutation PP ON Permutation_Id = PP.id_permutation - WHERE ISNULL(PP.id_permutation) - LIMIT 1 - ) THEN - RAISE EXCEPTION 'Invalid permutation IDs: %', ( - SELECT STRING_AGG(Permutation_Id, ', ') - FROM UNNEST(v_ids_permutation) AS Permutation_Id - LEFT JOIN Shop_Product_Permutation PP ON Permutation_Id = PP.id_permutation - WHERE ISNULL(PP.id_permutation) - ) - USING ERRCODE = '22000' - ; - END IF; - - IF v_has_filter_category = TRUE OR v_has_filter_product = TRUE OR v_has_filter_permutation = TRUE THEN - INSERT INTO tmp_Shop_Product ( - id_category, - id_product, - id_permutation, - active_category, - active_product, - active_permutation, - display_order_category, - display_order_product, - display_order_permutation - -- rank_permutation, - /* - name, - description, - /* - price_GBP_VAT_incl, - price_GBP_VAT_excl, - price_GBP_min, - */ - latency_manufacture, - quantity_min, - quantity_max, - quantity_step, - quantity_stock, - is_subscription, - id_unit_measurement_interval_recurrence, - count_interval_recurrence, - id_stripe_product, - product_has_variations - */ - ) - SELECT - P.id_category, - P.id_product, - -- P.has_variations AS product_has_variations, - PP.id_permutation, - C.active AS active_category, - P.active AS active_product, - PP.active AS active_permutation, - C.display_order AS display_order_category, - P.display_order AS display_order_product, - PP.display_order AS display_order_permutation - -- RANK() OVER (ORDER BY C.display_order, P.display_order, PP.display_order) AS rank_permutation, #PARTITION BY P.id_category -- _in_category - /* - P.name, - PP.description, - /* - PP.price_GBP_VAT_incl, - PP.price_GBP_VAT_excl, - PP.price_GBP_min, - */ - PP.latency_manufacture, - PP.quantity_min, - PP.quantity_max, - PP.quantity_step, - PP.quantity_stock, - PP.is_subscription, - PP.id_unit_measurement_interval_recurrence, - PP.count_interval_recurrence, - PP.id_stripe_product, - P.has_variations - */ - FROM Shop_Product P - INNER JOIN Shop_Product_Permutation PP - ON P.id_product = PP.id_product - INNER JOIN Shop_Product_Category C - ON P.id_category = C.id_category - WHERE - -- permutations - ( - ( - NOT v_has_filter_permutation - OR FIND_IN_SET(PP.id_permutation, a_ids_permutation) > 0 - ) - AND ( - a_get_inactive_permutation - OR PP.active = TRUE - ) - ) - -- categories - AND ( - ( - NOT v_has_filter_category - OR FIND_IN_SET(P.id_category, a_ids_category) > 0 - ) - AND ( - a_get_inactive_category - OR C.active = TRUE - ) - ) - -- products - AND ( - ( - NOT v_has_filter_product - OR FIND_IN_SET(P.id_product, a_ids_product) > 0 - ) - AND ( - a_get_inactive_product - OR P.active = TRUE - ) - ) - ; - END IF; - - -- Get orders - IF v_has_filter_order AND EXISTS ( - SELECT * - FROM UNNEST(v_ids_order) AS Order_Id - LEFT JOIN Shop_Customer_Sales_Order CSO ON Order_Id = CSO.id_order - WHERE ISNULL(CSO.id_order) - LIMIT 1 - ) THEN - RAISE EXCEPTION 'Invalid order IDs: %', ( - SELECT STRING_AGG(Order_Id, ', ') - FROM UNNEST(v_ids_order) AS Order_Id - LEFT JOIN Shop_Customer_Sales_Order CSO ON Order_Id = CSO.id_order - WHERE ISNULL(CSO.id_order) - ) - USING ERRCODE = '22000' - ; - END IF; - - INSERT INTO tmp_Shop_Customer_Sales_Order ( -- _Product_Link - id_order, - active, - rank_order - ) - SELECT - CSO.id_order, - CSO.active, - RANK() OVER (ORDER BY CSO.id_order ASC) AS rank_order - FROM Shop_Customer_Sales_Order CSO - -- LEFT JOIN Split_Temp S_T ON CSO.id_order = S_T.substring - INNER JOIN Shop_Customer_Sales_Order_Product_Link CSOPL ON CSO.id_order = CSOPL.id_order - INNER JOIN Shop_Customer S ON CSO.id_customer = S.id_customer - INNER JOIN Shop_Product_Permutation PP ON CSOPL.id_permutation = PP.id_permutation - INNER JOIN Shop_Product P ON PP.id_product = P.id_product - INNER JOIN Shop_Product_Category C ON P.id_category = C.id_category - LEFT JOIN tmp_Shop_Product t_P ON CSOPL.id_permutation = t_P.id_permutation - LEFT JOIN tmp_Shop_Customer t_S ON CSO.id_customer = t_S.id_customer - WHERE - -- customer - /* - ( - a_get_all_customer = 1 - OR NOT ISNULL(t_S.id_customer) -- CSO.id_customer IN (SELECT DISTINCT id_customer FROM tmp_Shop_Customer) - ) - */ - NOT ISNULL(t_S.id_customer) - -- order - AND ( - ( - a_get_all_order = 1 - OR ( - -- ID - -- FIND_IN_SET(CSO.id_order, a_ids_order) > 0 - -- NOT ISNULL(S_T.substring) - CSO.id_order = ANY(v_ids_order) - -- date - AND ( - ( - v_has_filter_date_from = 0 - OR CSO.created_on > a_date_from - ) - AND ( - v_has_filter_date_to = 0 - OR CSO.created_on < a_date_to - ) - ) - ) - ) - -- active - AND ( - a_get_inactive_order - OR CSO.active = TRUE - ) - ) - -- permutations - AND ( - ( - v_has_filter_category = FALSE - AND v_has_filter_product = FALSE - AND v_has_filter_permutation = 0 - ) - OR NOT ISNULL(t_P.id_permutation) -- CSO.id_permutation IN (SELECT DISTINCT id_permutation FROM tmp_Shop_Product) - ) - ; - - IF a_get_first_order_only THEN - DELETE FROM tmp_Shop_Customer_Sales_Order t_CSO - WHERE t_CSO.rank_order > ( - SELECT MIN(t_CSO.rank_order) - FROM tmp_Shop_Customer_Sales_Order t_CSO - ) - ; - END IF; - - -- Permissions - -- v_id_user := (SELECT id_user FROM Shop_User WHERE name = CURRENT_USER); - v_ids_permission_customer_purchase_order := (SELECT STRING_AGG(id_permission, ',') FROM Shop_Permission WHERE code IN ('STORE_customer', 'STORE_customer_PURCHASE_ORDER')); - -- v_ids_permutation_permission := (SELECT STRING_AGG(id_permutation, ',') FROM tmp_Shop_Product WHERE NOT ISNULL(id_permutation)); - v_ids_product_permission := (SELECT STRING_AGG(P.id_product, ',') FROM (SELECT DISTINCT id_product FROM tmp_Shop_Product WHERE NOT ISNULL(id_product)) P); - - -- SELECT v_guid, a_id_user, false, v_id_permission_product, v_id_access_level_view, v_ids_permutation_permission; - -- select * from Shop_Calc_User_Temp; - - CALL p_shop_calc_user(v_guid, a_id_user, FALSE, v_ids_permission_customer_purchase_order, v_id_access_level_view, v_ids_product_permission); - - -- select * from Shop_Calc_User_Temp; - - IF NOT EXISTS (SELECT can_view FROM Shop_Calc_User_Temp UE_T WHERE UE_T.GUID = v_guid) THEN - RAISE EXCEPTION 'You do not have view permissions for %', ( - SELECT COALESCE(STRING_AGG(name, ', '), 'NULL') - FROM Shop_Permission - WHERE id_permission = v_ids_permission_customer_purchase_order - ) - USING ERRCODE = '42501' - ; - END IF; - - - UPDATE tmp_Shop_Product t_P - SET t_P.can_view = UE_T.can_view, - t_P.can_edit = UE_T.can_edit, - t_P.can_admin = UE_T.can_admin - FROM tmp_Shop_Product t_P - INNER JOIN Shop_Calc_User_Temp UE_T - ON t_P.id_product = UE_T.id_product -- t_P.id_permutation = UE_T.id_permutation - AND UE_T.GUID = v_guid - ; - - -- CALL p_shop_clear_calc_user(v_guid); - -- DROP TABLE IF EXISTS Shop_Calc_User_Temp; - DELETE FROM Shop_Calc_User_Temp - WHERE GUID = v_guid - ; - - - -- select * from tmp_Shop_Customer; - -- select * from tmp_Shop_Product; - - -- Returns - -- v_now := CURRENT_TIMESTAMP; - - -- customers - OPEN result_customers FOR - SELECT - t_S.id_customer, - S.name_company, - S.name_contact, - S.department_contact, - S.id_address, - S.phone_number, - S.email, - S.id_currency, - t_S.active - FROM tmp_Shop_Customer t_S - INNER JOIN Shop_Customer S - ON t_S.id_customer = S.id_customer - ; - RETURN NEXT result_customers; - - -- Customer Sales Order - OPEN result_orders FOR - SELECT -- * - t_CSO.id_order, - CSO.id_customer, - CSO.price_total_local, - CSO.id_currency_price, - t_CSO.active - FROM Shop_Customer_Sales_Order CSO - INNER JOIN tmp_Shop_Customer_Sales_Order t_CSO ON CSO.id_order = t_CSO.id_order - ; - RETURN NEXT result_orders; - - -- Customer Sales Order Product Link - OPEN result_order_product_links FOR - SELECT - CSOPL.id_link, - CSOPL.id_order, - CSOPL.id_permutation, - P.name as name_product, - CSOPL.price_total_local, - CSOPL.id_currency_price, - CSOPL.quantity_ordered, - CSOPL.id_unit_quantity, - CSOPL.quantity_delivered, - CSOPL.latency_delivery_days, - CSOPL.display_order - FROM Shop_Customer_Sales_Order_Product_Link CSOPL - -- INNER JOIN tmp_Shop_Customer_Sales_Order_Product_Link t_CSOPL ON CSOPL.id_link = t_CSOPL.id_link - INNER JOIN tmp_Shop_Customer_Sales_Order t_CSO ON CSOPL.id_order = t_CSO.id_order - INNER JOIN Shop_Product_Permutation PP ON CSOPL.id_permutation = PP.id_permutation - INNER JOIN Shop_Product P ON PP.id_product = P.id_product - INNER JOIN Shop_Product_Category C ON P.id_category = C.id_category - ORDER BY CSOPL.id_order, C.display_order, P.display_order, PP.display_order - ; - RETURN NEXT result_order_product_links; - - -- Errors - /* - SELECT - /* - t_ME.display_order, - t_ME.guid, - t_ME.id_type, - t_ME.msg, - MET.code, - MET.name, - MET.description - */ - * - FROM tmp_Msg_Error t_ME - INNER JOIN Shop_Msg_Error_Type MET - ON t_ME.id_type = MET.id_type - WHERE guid = v_guid - ; - OPEN result_errors FOR - SELECT * - FROM tmp_Msg_Error - ; - -- RETURN NEXT result_errors; - */ - - /* - -- Return arguments for test - SELECT - a_ids_category, - a_get_inactive_category, - a_ids_product, - a_get_inactive_product, - a_get_first_product_only, - a_get_all_product, - a_ids_image, - a_get_inactive_image, - a_get_first_image_only, - a_get_all_image - ; - */ - - -- select 'other outputs'; - -- select * from tmp_Shop_Product; - - -- Clean up - DROP TABLE IF EXISTS tmp_Shop_Customer_Sales_Order_Product_Link; - DROP TABLE IF EXISTS tmp_Shop_Customer_Sales_Order; - DROP TABLE IF EXISTS tmp_Shop_Customer; - DROP TABLE IF EXISTS tmp_Shop_Product; - - DELETE FROM Shop_Calc_User_Temp - WHERE GUID = v_guid - ; -END; -$$ LANGUAGE plpgsql; - - -/* - - -DROP FUNCTION IF EXISTS fetch_results; - -CREATE OR REPLACE FUNCTION fetch_results() -RETURNS VOID AS $$ -DECLARE - curs refcursor; - rec record; -BEGIN - FOR curs IN SELECT p_shop_get_many_customer_sales_order ( - '', -- a_id_user - 1, -- a_get_all_customer - 0, -- a_get_inactive_customer - 0, -- a_get_first_customer_only - '', -- a_ids_customer - 1, -- a_get_all_order - 0, -- a_get_inactive_order - 0, -- a_get_first_order_only - '', -- a_ids_order - 0, -- a_get_inactive_category - '', -- a_ids_category - 0, -- a_get_inactive_product - '', -- a_ids_product - 0, -- a_get_inactive_permutation - '', -- a_ids_permutation - NULL, -- a_date_from - NULL -- a_date_to - ) LOOP - RAISE NOTICE 'Fetching from cursor: %', curs; - LOOP - FETCH curs INTO rec; - EXIT WHEN NOT FOUND; - RAISE NOTICE 'Record: %', rec; - END LOOP; - END LOOP; -END; -$$ LANGUAGE plpgsql; - -SELECT fetch_results(); - -*/ - - - -DO $$ -BEGIN - RAISE NOTICE 'PROCEDURE CREATION COMPLETE'; -END $$; - -/* - -CALL p_populate_database () - -*/ - -/* --- Remove previous proc -DROP PROCEDURE IF EXISTS p_populate_database; - - -DELIMITER // -CREATE OR REPLACE PROCEDURE p_populate_database () -BEGIN -*/ - - --- Access Levels -INSERT INTO Shop_Access_Level ( - display_order, code, name, priority -) -VALUES - (1, 'VIEW', 'View', 3), - (2, 'EDIT', 'Edit', 2), - (3, 'ADMIN', 'Admin', 1) -; - --- Error Message Types -INSERT INTO Shop_Msg_Error_Type ( - code, name, description -) -VALUES - ('BAD_DATA', 'Invalid data', 'Rubbish data'), - ('NO_PERMISSION', 'No permission', 'Not authorised'), - ('PRODUCT_AVAILABILITY', 'Product not available', 'Product not available') -; - --- File Types -INSERT INTO File_Type ( - code, name, extension -) -VALUES - ('JPEG', 'Joint Photographic Export Group', 'jpg'), - ('PNG', 'Portable Network Graphic', 'png'), - ('GIF', 'GIF', 'gif'), - ('MPEG-4', 'Multimedia Photographic Export Group 4', 'mp4') -; - --- Generic / shared properties -INSERT INTO Shop_General ( - quantity_max -) -VALUES ( - 10 -); - --- Categories -INSERT INTO Shop_Product_Category ( - display_order, - code, - name, - description -) -VALUES - (1, 'ASS', 'Assistive Devices', 'Braille product line and other assistive devices'), - (99, 'MISC', 'Miscellaneous', 'Not category allocated products'), - (2, 'TECH', 'Technology', 'Technological devices') -; - --- Recurrence Interval -INSERT INTO Shop_Interval_Recurrence ( - code, name, name_plural -) -VALUES - ('WEEK', 'Week', 'Weeks'), - ('MONTH', 'Month', 'Months'), - ('YEAR', 'Year', 'Years') -; - -INSERT INTO Shop_Region ( - display_order, code, name -) -VALUES - (1, 'UK', 'United Kingdom') -; - -/* -INSERT INTO Shop_Region_Branch ( - display_order, id_region_parent, id_region_child -) -VALUES - (1, 1, 2) -; -*/ - --- Currency -INSERT INTO Shop_Currency ( - display_order, code, name, symbol, factor_from_GBP -) -VALUES - (1, 'GBP', 'Great British Pound', '£', 1), - (2, 'EUR', 'Euro', '€', 1.17) -; - --- Taxes and Surcharges -INSERT INTO Shop_Tax_Or_Surcharge ( - display_order, - code, - name, - id_region_buyer, - id_region_seller, - fixed_fee, - multiplier, - apply_fixed_fee_before_multiplier, - quantity_min, - quantity_max -) -VALUES - (1, 'VAT', 'Value Added Tax', 1, 1, 0, 0.2, TRUE, 0, 1) -; - --- Products -INSERT INTO Shop_Product ( - display_order, - id_category, - name, - has_variations, - id_access_level_required -) -VALUES - ( - 1, - 1, - 'Braille Keyboard Translator', - TRUE, - 3 - ), - ( - 2, - 2, - 'Test product 1', - FALSE, - 3 - ), - ( - 3, - 3, - 'Phone', - FALSE, - 1 - ), - ( - 4, - 3, - 'Laptop', - FALSE, - 1 - ), - ( - 5, - 3, - 'Smart Watch', - FALSE, - 1 - ) -; - --- Variation Types -INSERT INTO Shop_Variation_Type ( - display_order, code, name, name_plural -) -VALUES - (1, 'COLOUR', 'Colour', 'Colours') -; - --- Variations -INSERT INTO Shop_Variation ( - display_order, id_type, code, name -) -VALUES - (1, 1, 'RED', 'Red'), - (2, 1, 'BLUE', 'Blue') -; - --- Product Permutations -INSERT INTO Shop_Product_Permutation ( - display_order, - id_product, - description, - cost_local, - id_currency_cost, - profit_local_min, - -- id_currency_profit_min, - latency_manufacture, - quantity_min, - quantity_max, - quantity_step, - quantity_stock, - is_subscription, - id_unit_measurement_interval_recurrence, - count_interval_recurrence, - -- id_access_level_required, - id_stripe_product -) -VALUES - ( - 1, - 1, - 'Good Red', - 5, - 1, - 3, - -- 1, - 14, - 1, - 3, - 1, - 99, - FALSE, - NULL, - NULL, - -- 1, - NULL - ), - ( - 2, - 1, - 'Good Blue', - 6, - 1, - 4, - -- 1, - 14, - 1, - 3, - 1, - 99, - FALSE, - NULL, - NULL, - -- 1, - NULL - ), - ( - 3, - 2, - 'Test product describes good', - 10, - 1, - 5, - -- 1, - 14, - 1, - 2, - 1, - 99, - FALSE, - NULL, - NULL, - -- 1, - NULL - ), - ( - 4, - 3, - 'Phone describes good', - 10, - 1, - 5, - -- 1, - 14, - 1, - 2, - 1, - 99, - FALSE, - NULL, - NULL, - -- 1, - NULL - ), - ( - 5, - 4, - 'Laptop describes good', - 10, - 1, - 5, - -- 1, - 14, - 1, - 2, - 1, - 99, - FALSE, - NULL, - NULL, - -- 1, - NULL - ), - ( - 6, - 5, - 'Smart watch describes good', - 10, - 1, - 5, - -- 1, - 14, - 1, - 2, - 1, - 99, - FALSE, - NULL, - NULL, - -- 1, - NULL - ) -; - --- Product Permutation Variation Links -INSERT INTO Shop_Product_Permutation_Variation_Link ( - display_order, id_permutation, id_variation -) -VALUES - (1, 1, 1), - (2, 2, 2) -; - --- Product Currency Link -INSERT INTO Shop_Product_Currency_Region_Link ( - id_product, id_permutation, id_currency, id_region_purchase, price_local_VAT_incl, price_local_VAT_excl -) -VALUES - (1, 1, 1, 1, 24, 20), - (1, 1, 2, 1, 48, 40), - (1, 2, 1, 1, 96, 80), - (2, 3, 1, 1, 144, 120), - (3, 4, 1, 1, 600, 500), - (4, 5, 1, 1, 1500, 1200), - (5, 6, 1, 1, 180, 150) -; - -INSERT INTO Shop_Image_Type ( - display_order, code, name, name_plural -) -VALUES - (1, 'FULL', 'Full Quality Image', 'Full Quality Images'), - (2, 'LOW', 'Low Quality Image', 'Low Quality Images'), - (3, 'THUMBNAIL', 'Thumbnail Image', 'Thumbnail Images') -; - -INSERT INTO Shop_Image ( - display_order, id_product, id_permutation, id_type_image, id_type_file, url -) -VALUES - (1, 1, 1, 1, 1, '/static/images/prod_PB0NUOSEs06ymG.jpg'), - -- (1, NULL, 1, 1, 1, '/static/images/prod_PB0NUOSEs06ymG.jpg'), - (2, 1, 2, 1, 1, '/static/images/prod_PB0NUOSEs06ymG.jpg'), - -- (1, NULL, 2, 1, 1, '/static/images/prod_PB0NUOSEs06ymG.jpg') - (3, 2, 3, 1, 1, '/static/images/prod_PB0NUOSEs06ymG.jpg'), - (4, 3, 4, 1, 1, '/static/images/prod_.jpg'), - (5, 4, 5, 1, 1, '/static/images/prod_1.jpg'), - (6, 5, 6, 1, 1, '/static/images/prod_2.jpg') -; - -INSERT INTO Shop_Delivery_Option ( - display_order, code, name, latency_delivery_min, latency_delivery_max, quantity_min, quantity_max -) -VALUES - (1, 'COLLECT', 'Collection', 0, 0, 0, 1), - (2, 'SIGNED_1', 'First Class Signed-For', 2, 4, 0, 1) -; - -INSERT INTO Shop_Product_Permutation_Delivery_Option_Link ( - display_order, id_product, id_permutation, id_delivery_option, id_region, id_currency, price_local -) -VALUES - (1, 1, 1, 1, 1, 1, 5), - (2, 1, 2, 1, 1, 1, 9), - (3, 2, NULL, 1, 1, 1, 10), - (4, 3, 4, 1, 1, 1, 10), - (5, 4, 5, 1, 1, 1, 10), - (6, 5, 6, 1, 1, 1, 10) -; - --- Discounts -INSERT INTO Shop_Discount ( - id_product, - id_permutation, - code, - name, - multiplier, - quantity_min, - quantity_max, - date_start, - date_end, - display_order -) -VALUES - (1, 1, 'CRIMBO50', 'Christmas 50% off sale!', 0.5, 3, 9, CURRENT_TIMESTAMP, '2023-12-31 23:59:59', 1), - (1, 2, 'CRIMBO50', 'Christmas 50% off sale!', 0.5, 3, 9, CURRENT_TIMESTAMP, '2023-12-31 23:59:59', 1) -; - --- Discount Delivery Region Links -INSERT INTO Shop_Discount_Region_Currency_Link ( - id_discount, - id_region, - id_currency -) -VALUES - (1, 1, 1), - (2, 1, 1), - (1, 1, 2), - (2, 1, 2) -; - --- Permission Groups -INSERT INTO Shop_Permission_Group ( - display_order, code, name -) -VALUES - (0, 'ADMIN', 'Website Admin'), - (1, 'HOME', 'Home, Contact Us, and other public information'), - (2, 'PRODUCT', 'Store Products'), - (3, 'USER', 'Store User'), - (4, 'SALES_AND_PURCHASING', 'Sales and Purchasing'), - (5, 'MANUFACTURING', 'Manufacturing') -; - --- Permissions -INSERT INTO Shop_Permission ( - display_order, code, name, id_permission_group, id_access_level_required -) -VALUES - (1, 'HOME', 'Home Page', 2, 1), - (2, 'STORE_PRODUCT', 'Store Product Page', 3, 1), - (3, 'STORE_USER', 'Store User Account Page', 4, 2), - (4, 'STORE_ADMIN', 'Store Admin Page', 1, 3), - (5, 'STORE_SUPPLIER', 'Store Supplier Page', 4, 2), - (6, 'STORE_SUPPLIER_PURCHASE_ORDER', 'Store Supplier Purchase Order Page', 4, 2), - (7, 'STORE_MANUFACTURING_PURCHASE_ORDER', 'Store Manufacturing Purchase Order Page', 5, 2), - (8, 'STORE_CUSTOMER', 'Store Customer Page', 4, 2), - (9, 'STORE_CUSTOMER_SALES_ORDER', 'Store Customer Sales Order Page', 4, 2), - (99, 'CONTACT_US', 'Contact Us Page', 2, 1) -; - --- Roles -INSERT INTO Shop_Role ( - display_order, - code, - name -) -VALUES - (1, 'DIRECTOR', 'Director'), - (2, 'USER', 'User') -; - --- Role Permission link -INSERT INTO Shop_Role_Permission_Link ( - id_role, id_permission, id_access_level -) -VALUES - (1, 1, 3), - (1, 2, 3), - (1, 3, 3), - (1, 4, 3), - (1, 5, 3), - (2, 1, 1), - (2, 2, 1), - (2, 3, 1), - (2, 4, 1), - (2, 5, 1) -; - --- Users -INSERT INTO Shop_User ( - id_user_oauth, - name, - email, - -- is_email_verified, - is_super_user -) -VALUES - ('auth0|6582b95c895d09a70ba10fef', 'Teddy', 'edward.middletonsmith@gmail.com', TRUE), - ('parts_guest', 'Guest', '', FALSE) -; - --- User Role link -INSERT INTO Shop_User_Role_Link ( - id_user, id_role -) -VALUES - (1, 1) -; - --- Addresses -INSERT INTO Shop_Address ( - -- id_user, - id_region, name_full, phone_number, postcode, address_line_1, address_line_2, city, county -) -VALUES (1, 'Edward M-S', '07375 571430', 'CV22 6DN', '53 Alfred Green Close', '', 'Rugby', 'Warwickshire') -/* -SELECT U.id_user, 1, U.name, '07375 571430', 'CV22 6DN', '53 Alfred Green Close', '', 'Rugby', 'Warwickshire' - FROM Shop_User U -*/ -; - --- User Basket -INSERT INTO Shop_User_Basket ( - id_user, - id_product, - id_permutation, - quantity -) -VALUES - (1, 1, 1, 69) -; - --- User Order Status -INSERT INTO Shop_User_Order_Status ( - display_order, code, name, name_plural -) -VALUES - (1, 'SUCCESS', 'Success', 'Successes'), - (2, 'FAIL', 'Failure', 'Failures') -; - -/* --- User Order -INSERT INTO Shop_User_Order ( - id_user, value_total, id_order_status, id_checkout_session, id_currency -) -VALUES - (1, 25, 1, 'noods', 1), - (1, 25, 1, 'noods', 1) -; - --- User Order Product Link -INSERT INTO Shop_User_Order_Product_Link ( - id_order, id_product, id_permutation, quantity -) -VALUES - (1, 1, 1, 69), - (1, 2, NULL, 69), - (1, 1, 2, 69) -; -*/ - --- Supplier -INSERT INTO Shop_Supplier ( - name_company, name_contact, department_contact, id_address, phone_number, fax, email, website, id_currency -) -VALUES - ('Precision And Research Technology Systems Limited', 'Teddy Middleton-Smith', 'Executive Management', 1, '07375571430', '', 'teddy@partsltd.co.uk', 'www.partsltd.co.uk', 1) -; - --- Unit of Measurement -INSERT INTO Shop_Unit_Measurement ( - name_singular, name_plural, symbol, is_base_unit -) -VALUES - ('metre', 'metres', 'm', TRUE), - ('kilogram', 'kilograms', 'kg', TRUE), - ('item', 'items', 'x', FALSE) -; - -/* --- Unit of Measurement Conversion -INSERT INTO Shop_Unit_Measurement_Conversion ( - id_unit_derived, id_unit_base, power_unit_base, multiplier_unit_base, increment_unit_base -) -VALUES - -; -*/ - -/* --- Supplier Purchase Order -INSERT INTO Shop_Supplier_Purchase_Order ( - id_supplier, value_total, id_order_status, id_checkout_session, id_currency -) -VALUES -; - --- Supplier Purchase Order Product Link -INSERT INTO Shop_Supplier_Purchase_Order_Product_Link ( - id_order, id_permutation, cost_total_local, id_currency_cost, quantity_ordered, id_unit_quantity, quantity_received, latency_delivery, display_order -) -VALUES -; -*/ - -/* --- Manufacturing Purchase Order -INSERT INTO Shop_Manufacturing_Purchase_Order ( - cost_total_local, id_currency_cost -) -VALUES -; - --- Manufacturing Purchase Order Product Link -INSERT INTO Shop_Manufacturing_Purchase_Order_Product_Link ( - id_order, id_permutation, cost_total_local, id_currency_cost, quantity_used, id_unit_quantity, quantity_produced, latency_manufacturing_days, display_order -) -VALUES -; -*/ - -/* --- Customer -INSERT INTO Shop_Customer ( - name_company, name_contact, department_contact, id_address, phone_number, email, id_currency -) -VALUES - -; -*/ - -/* --- Customer Sales Order -INSERT INTO Shop_Customer_Sales_Order ( - cost_total_local, id_currency_cost -) -VALUES -; - --- Customer Sales Order Product Link -INSERT INTO Shop_Customer_Sales_Order_Product_Link ( - id_order, id_permutation, cost_total_local, id_currency_cost, quantity_ordered, id_unit_quantity, quantity_delivered, latency_delivery_days, display_order -) -VALUES -; -*/ - - -/* - -- Clean up -END // -DELIMITER ;; - - --- Call -CALL p_populate_database(); - --- Remove proc -DROP PROCEDURE IF EXISTS p_populate_database; -*/ - -DO $$ -BEGIN - RAISE NOTICE 'TABLE POPULATION COMPLETE'; -END $$; - --- Product Change Sets -SELECT * FROM Shop_Product_Change_Set; - --- User Change Sets -SELECT * FROM Shop_User_Change_Set; - --- Access Levels -SELECT * FROM Shop_Access_Level; -SELECT * FROM Shop_Access_Level_Audit; - --- Error Message type -SELECT * FROM Shop_Msg_Error_Type; - --- File Types -SELECT * FROM File_Type; -SELECT * FROM File_Type_Audit; - --- Generic / shared properties -SELECT * FROM Shop_General; -SELECT * FROM Shop_General_Audit; - --- Categories -SELECT * FROM Shop_Product_Category; -SELECT * FROM Shop_Product_Category_Audit; - --- Recurrence Interval -SELECT * FROM Shop_Interval_Recurrence; -SELECT * FROM Shop_Interval_Recurrence_Audit; - --- Region -SELECT * FROM Shop_Region; -SELECT * FROM Shop_Region_Audit; - --- Region Branch -SELECT * FROM Shop_Region_Branch; -SELECT * FROM Shop_Region_Branch_Audit; - --- Currency -SELECT * FROM Shop_Currency; -SELECT * FROM Shop_Currency_Audit; - --- Taxes and Surcharges -SELECT * FROM Shop_Tax_Or_Surcharge; -SELECT * FROM Shop_Tax_Or_Surcharge_Audit; - --- Products -SELECT * FROM Shop_Product; -SELECT * FROM Shop_Product_Audit; - --- Variation Types -SELECT * FROM Shop_Variation_Type; -SELECT * FROM Shop_Variation_Type_Audit; - --- Variations -SELECT * FROM Shop_Variation; -SELECT * FROM Shop_Variation_Audit; - --- Permutations -SELECT * FROM Shop_Product_Permutation; -SELECT * FROM Shop_Product_Permutation_Audit; - --- Permutation Variation Links -SELECT * FROM Shop_Product_Permutation_Variation_Link; -SELECT * FROM Shop_Product_Permutation_Variation_Link_Audit; - --- Product Currency Links -SELECT * FROM Shop_Product_Currency_Region_Link; -SELECT * FROM Shop_Product_Currency_Region_Link_Audit; - --- Image Types -SELECT * FROM Shop_Image_Type; -SELECT * FROM Shop_Image_Type_Audit; - --- Images -SELECT * FROM Shop_Image; -SELECT * FROM Shop_Image_Audit; - --- Delivery Option Types -SELECT * FROM Shop_Delivery_Option; -SELECT * FROM Shop_Delivery_Option_Audit; - --- Delivery Options -SELECT * FROM Shop_Product_Permutation_Delivery_Option_Link; -SELECT * FROM Shop_Product_Permutation_Delivery_Option_Link_Audit; - --- Discounts -SELECT * FROM Shop_Discount; -SELECT * FROM Shop_Discount_Audit; - --- Discount Delivery Region Links -SELECT * FROM Shop_Discount_Region_Currency_Link; -SELECT * FROM Shop_Discount_Region_Currency_Link_Audit; - - --- Permission Groups -SELECT * FROM Shop_Permission_Group; -SELECT * FROM Shop_Permission_Group_Audit; - --- Permissions -SELECT * FROM Shop_Permission; -SELECT * FROM Shop_Permission_Audit; - --- Roles -SELECT * FROM Shop_Role; -SELECT * FROM Shop_Role_Audit; - --- Role Permission link -SELECT * FROM Shop_Role_Permission_Link; -SELECT * FROM Shop_Role_Permission_Link_Audit; - --- Users -SELECT * FROM Shop_User; -SELECT * FROM Shop_User_Audit; - --- User Role link -SELECT * FROM Shop_User_Role_Link; -SELECT * FROM Shop_User_Role_Link_Audit; - - --- Addresses -SELECT * FROM Shop_Address; -SELECT * FROM Shop_Address_Audit; - --- Basket -SELECT * FROM Shop_User_Basket; -SELECT * FROM Shop_User_Basket_Audit; - --- Order Statuses -SELECT * FROM Shop_User_Order_Status; -SELECT * FROM Shop_User_Order_Status_Audit; - -/* --- Orders -SELECT * FROM Shop_User_Order; -SELECT * FROM Shop_User_Order_Audit; - --- Order Products -SELECT * FROM Shop_User_Order_Product_Link; -SELECT * FROM Shop_User_Order_Product_Link_Audit; -*/ - --- Supplier -SELECT * FROM Shop_Supplier; -SELECT * FROM Shop_Supplier_Audit; - --- Unit Of Measurement -SELECT * FROM Shop_Unit_Measurement; -SELECT * FROM Shop_Unit_Measurement_Audit; - --- Unit of Measurement Conversion -SELECT * FROM Shop_Unit_Measurement_Conversion; -SELECT * FROM Shop_Unit_Measurement_Conversion_Audit; - --- Supplier Purchase Order -SELECT * FROM Shop_Supplier_Purchase_Order; -SELECT * FROM Shop_Supplier_Purchase_Order_Audit; - --- Supplier Purchase Order Product Link -SELECT * FROM Shop_Supplier_Purchase_Order_Product_Link; -SELECT * FROM Shop_Supplier_Purchase_Order_Product_Link_Audit; - --- Manufacturing Purchase Order -SELECT * FROM Shop_Manufacturing_Purchase_Order; -SELECT * FROM Shop_Manufacturing_Purchase_Order_Audit; - --- Manufacturing Purchase Order Product Link -SELECT * FROM Shop_Manufacturing_Purchase_Order_Product_Link; -SELECT * FROM Shop_Manufacturing_Purchase_Order_Product_Link_Audit; - --- Customers -SELECT * FROM Shop_Customer; -SELECT * FROM Shop_Customer_Audit; - --- Customer Sales Order -SELECT * FROM Shop_Customer_Sales_Order; -SELECT * FROM Shop_Customer_Sales_Order_Audit; - --- Customer Sales Order Product Link -SELECT * FROM Shop_Customer_Sales_Order_Product_Link; -SELECT * FROM Shop_Customer_Sales_Order_Product_Link_Audit; - diff --git a/static/PostgreSQL/001_destroy.sql b/static/PostgreSQL/001_destroy.sql deleted file mode 100644 index da1807be..00000000 --- a/static/PostgreSQL/001_destroy.sql +++ /dev/null @@ -1,293 +0,0 @@ - -/* Clear Store DataBase */ - - - --- Drop dependencies -DROP TABLE IF EXISTS Shop_Calc_User_Temp; -DROP TABLE IF EXISTS tmp_Msg_Error; -DROP TABLE IF EXISTS tmp_Currency; -DROP TABLE IF EXISTS tmp_Delivery_Region; -DROP TABLE IF EXISTS tmp_Region; -DROP TABLE IF EXISTS tmp_Shop_User; -DROP TABLE IF EXISTS tmp_Shop_Order; -DROP TABLE IF EXISTS tmp_Shop_Product; -DROP TABLE IF EXISTS tmp_Shop_Product_p_shop_calc_user; -DROP TABLE IF EXISTS tmp_Shop_Image; -DROP TABLE IF EXISTS tmp_Shop_Variation; -DROP TABLE IF EXISTS tmp_Shop_Discount; -DROP TABLE IF EXISTS tmp_Discount; -DROP TABLE IF EXISTS tmp_Shop_Product_Category; -DROP TABLE IF EXISTS tmp_Shop_Product_Currency_Region_Link; -DROP TABLE IF EXISTS tmp_Shop_Product_Currency_Link; -DROP TABLE IF EXISTS tmp_User_Role_Link; -DROP TABLE IF EXISTS tmp_Shop_Basket; -DROP TABLE IF EXISTS tmp_Shop_Supplier_Purchase_Order_Product_Link; -DROP TABLE IF EXISTS tmp_Shop_Supplier_Purchase_Order; -DROP TABLE IF EXISTS tmp_Shop_Supplier; -DROP TABLE IF EXISTS tmp_Shop_Manufacturing_Purchase_Order_Product_Link; -DROP TABLE IF EXISTS tmp_Shop_Manufacturing_Purchase_Order; -DROP TABLE IF EXISTS tmp_Shop_Customer; - - - --- Delete old tables -DROP TABLE IF EXISTS Shop_Customer_Sales_Order_Product_Link_Temp; -DROP TABLE IF EXISTS Shop_Customer_Sales_Order_Product_Link_Audit; -DROP TABLE IF EXISTS Shop_Customer_Sales_Order_Product_Link; - -DROP TABLE IF EXISTS Shop_Customer_Sales_Order_Audit; -DROP TABLE IF EXISTS Shop_Customer_Sales_Order; - -DROP TABLE IF EXISTS Shop_Customer_Audit; -DROP TABLE IF EXISTS Shop_Customer; - -DROP TABLE IF EXISTS Shop_Manufacturing_Purchase_Order_Product_Link_Temp; -DROP TABLE IF EXISTS Shop_Manufacturing_Purchase_Order_Product_Link_Audit; -DROP TABLE IF EXISTS Shop_Manufacturing_Purchase_Order_Product_Link; - -DROP TABLE IF EXISTS Shop_Manufacturing_Purchase_Order_Audit; -DROP TABLE IF EXISTS Shop_Manufacturing_Purchase_Order; - -DROP TABLE IF EXISTS Shop_Supplier_Purchase_Order_Product_Link_Temp; -DROP TABLE IF EXISTS Shop_Supplier_Purchase_Order_Product_Link_Audit; -DROP TABLE IF EXISTS Shop_Supplier_Purchase_Order_Product_Link; - -DROP TABLE IF EXISTS Shop_Supplier_Purchase_Order_Audit; -DROP TABLE IF EXISTS Shop_Supplier_Purchase_Order; - -DROP TABLE IF EXISTS Shop_Unit_Measurement_Conversion_Audit; -DROP TABLE IF EXISTS Shop_Unit_Measurement_Conversion; - -DROP TABLE IF EXISTS Shop_Unit_Measurement_Audit; -DROP TABLE IF EXISTS Shop_Unit_Measurement; - -DROP TABLE IF EXISTS Shop_Supplier_Audit; -DROP TABLE IF EXISTS Shop_Supplier; - -DROP TABLE IF EXISTS Shop_User_Order_Product_Link_Audit; -DROP TABLE IF EXISTS Shop_User_Order_Product_Link; - -DROP TABLE IF EXISTS Shop_User_Order_Audit; -DROP TABLE IF EXISTS Shop_User_Order; - -DROP TABLE IF EXISTS Shop_User_Order_Status_Audit; -DROP TABLE IF EXISTS Shop_User_Order_Status; - -DROP TABLE IF EXISTS Shop_User_Basket_Audit; -DROP TABLE IF EXISTS Shop_User_Basket; - -DROP TABLE IF EXISTS Shop_Address_Audit; -DROP TABLE IF EXISTS Shop_Address; - -DROP TABLE IF EXISTS Shop_User_Role_Link_Audit; -DROP TABLE IF EXISTS Shop_User_Role_Link; - -DROP TABLE IF EXISTS Shop_User_Audit; -DROP TABLE IF EXISTS Shop_User; - -DROP TABLE IF EXISTS Shop_Role_Permission_Link_Audit; -DROP TABLE IF EXISTS Shop_Role_Permission_Link; - -DROP TABLE IF EXISTS Shop_Role_Audit; -DROP TABLE IF EXISTS Shop_Role; - -DROP TABLE IF EXISTS Shop_Permission_Audit; -DROP TABLE IF EXISTS Shop_Permission; - -DROP TABLE IF EXISTS Shop_Permission_Group_Audit; -DROP TABLE IF EXISTS Shop_Permission_Group; - - -DROP TABLE IF EXISTS Shop_Discount_Region_Currency_Link_Audit; -DROP TABLE IF EXISTS Shop_Discount_Region_Currency_Link; - -DROP TABLE IF EXISTS Shop_Discount_Audit; -DROP TABLE IF EXISTS Shop_Discount; - -DROP TABLE IF EXISTS Shop_Product_Permutation_Delivery_Option_Link_Audit; -DROP TABLE IF EXISTS Shop_Product_Permutation_Delivery_Option_Link; - -DROP TABLE IF EXISTS Shop_Delivery_Option_Audit; -DROP TABLE IF EXISTS Shop_Delivery_Option; - -DROP TABLE IF EXISTS Shop_Image_Audit; -DROP TABLE IF EXISTS Shop_Image; - -DROP TABLE IF EXISTS Shop_Image_Type_Audit; -DROP TABLE IF EXISTS Shop_Image_Type; - -DROP TABLE IF EXISTS Shop_Product_Currency_Region_Link_Audit; -DROP TABLE IF EXISTS Shop_Product_Currency_Region_Link; -DROP TABLE IF EXISTS Shop_Product_Currency_Link_Audit; -DROP TABLE IF EXISTS Shop_Product_Currency_Link; - -DROP TABLE IF EXISTS Shop_Product_Variation_Link_Audit; -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_Product_Permutation_Audit; -DROP TABLE IF EXISTS Shop_Product_Permutation; - -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_Variation_Type_Audit; -DROP TABLE IF EXISTS Shop_Variation_Type; - -DROP TABLE IF EXISTS Shop_Product_Audit; -DROP TABLE IF EXISTS Shop_Product; - -DROP TABLE IF EXISTS Shop_Tax_Or_Surcharge_Audit; -DROP TABLE IF EXISTS Shop_Tax_Or_Surcharge; - -DROP TABLE IF EXISTS Shop_Currency_Audit; -DROP TABLE IF EXISTS Shop_Currency; - -DROP TABLE IF EXISTS Shop_Delivery_Region_Branch_Audit; -DROP TABLE IF EXISTS Shop_Delivery_Region_Branch; -DROP TABLE IF EXISTS Shop_Region_Branch_Audit; -DROP TABLE IF EXISTS Shop_Region_Branch; - -DROP TABLE IF EXISTS Shop_Delivery_Region_Audit; -DROP TABLE IF EXISTS Shop_Delivery_Region; -DROP TABLE IF EXISTS Shop_Region_Audit; -DROP TABLE IF EXISTS Shop_Region; - -DROP TABLE IF EXISTS Shop_Interval_Recurrence_Audit; -DROP TABLE IF EXISTS Shop_Interval_Recurrence; - -DROP TABLE IF EXISTS Shop_Product_Category_Audit; -DROP TABLE IF EXISTS Shop_Product_Category; - -DROP TABLE IF EXISTS Shop_General_Audit; -DROP TABLE IF EXISTS Shop_General; - -DROP TABLE IF EXISTS File_Type_Audit; -DROP TABLE IF EXISTS File_Type; - -DROP TABLE IF EXISTS Msg_Error_Type; - -DROP TABLE IF EXISTS Shop_Access_Level_Audit; -DROP TABLE IF EXISTS Shop_Access_Level; - -DROP TABLE IF EXISTS Shop_Sales_And_Purchasing_Change_Set; -DROP TABLE IF EXISTS Shop_User_Change_Set; - -DROP TABLE IF EXISTS Shop_Msg_Error_Type; - -DROP TABLE IF EXISTS Shop_Product_Change_Set; - -DO $$ -BEGIN - RAISE NOTICE 'TABLE DELETION COMPLETE'; -END $$; - - -DROP FUNCTION IF EXISTS fn_shop_user_eval; -DROP FUNCTION IF EXISTS p_shop_calc_user; -DROP PROCEDURE IF EXISTS fn_shop_user_eval; -DROP PROCEDURE IF EXISTS p_shop_calc_user; - -DROP FUNCTION IF EXISTS fn_shop_save_product; -DROP FUNCTION IF EXISTS p_shop_save_product; -DROP PROCEDURE IF EXISTS fn_shop_save_product; -DROP PROCEDURE IF EXISTS p_shop_save_product; - -DROP FUNCTION IF EXISTS fn_shop_save_supplier; -DROP FUNCTION IF EXISTS p_shop_save_supplier; -DROP PROCEDURE IF EXISTS fn_shop_save_supplier; -DROP PROCEDURE IF EXISTS p_shop_save_supplier; - -DROP FUNCTION IF EXISTS fn_shop_save_supplier_purchase_order; -DROP FUNCTION IF EXISTS p_shop_save_supplier_purchase_order; -DROP PROCEDURE IF EXISTS fn_shop_save_supplier_purchase_order; -DROP PROCEDURE IF EXISTS p_shop_save_supplier_purchase_order; - -DROP FUNCTION IF EXISTS fn_shop_save_manufacturing_purchase_order; -DROP FUNCTION IF EXISTS p_shop_save_manufacturing_purchase_order; -DROP PROCEDURE IF EXISTS fn_shop_save_manufacturing_purchase_order; -DROP PROCEDURE IF EXISTS p_shop_save_manufacturing_purchase_order; - -DROP FUNCTION IF EXISTS fn_shop_save_customer; -DROP FUNCTION IF EXISTS p_shop_save_customer; -DROP PROCEDURE IF EXISTS fn_shop_save_customer; -DROP PROCEDURE IF EXISTS p_shop_save_customer; - -DROP FUNCTION IF EXISTS fn_shop_save_customer_sales_order; -DROP FUNCTION IF EXISTS p_shop_save_customer_sales_order; -DROP PROCEDURE IF EXISTS fn_shop_save_customer_sales_order; -DROP PROCEDURE IF EXISTS p_shop_save_customer_sales_order; - -DROP FUNCTION IF EXISTS fn_shop_save_user; -DROP FUNCTION IF EXISTS p_shop_save_user; -DROP PROCEDURE IF EXISTS fn_shop_save_user; -DROP PROCEDURE IF EXISTS p_shop_save_user; - -DROP FUNCTION IF EXISTS fn_shop_save_user_basket; -DROP FUNCTION IF EXISTS p_shop_save_user_basket; -DROP PROCEDURE IF EXISTS fn_shop_save_user_basket; -DROP PROCEDURE IF EXISTS p_shop_save_user_basket; - -DROP FUNCTION IF EXISTS fn_shop_get_many_product; -DROP FUNCTION IF EXISTS p_shop_get_many_product; -DROP PROCEDURE IF EXISTS fn_shop_get_many_product; -DROP PROCEDURE IF EXISTS p_shop_get_many_product; - -DROP FUNCTION IF EXISTS fn_shop_get_many_role_permission; -DROP FUNCTION IF EXISTS p_shop_get_many_role_permission; -DROP PROCEDURE IF EXISTS fn_shop_get_many_role_permission; -DROP PROCEDURE IF EXISTS p_shop_get_many_role_permission; - -DROP FUNCTION IF EXISTS fn_shop_get_many_currency; -DROP FUNCTION IF EXISTS p_shop_get_many_currency; -DROP PROCEDURE IF EXISTS fn_shop_get_many_currency; -DROP PROCEDURE IF EXISTS p_shop_get_many_currency; - -DROP FUNCTION IF EXISTS fn_shop_get_many_region; -DROP FUNCTION IF EXISTS p_shop_get_many_region; -DROP PROCEDURE IF EXISTS fn_shop_get_many_region; -DROP PROCEDURE IF EXISTS p_shop_get_many_region; - -DROP FUNCTION IF EXISTS fn_shop_get_many_user_order; -DROP FUNCTION IF EXISTS p_shop_get_many_user_order; -DROP PROCEDURE IF EXISTS fn_shop_get_many_user_order; -DROP PROCEDURE IF EXISTS p_shop_get_many_user_order; - -DROP FUNCTION IF EXISTS fn_shop_get_many_stripe_product_new; -DROP FUNCTION IF EXISTS p_shop_get_many_stripe_product_new; -DROP PROCEDURE IF EXISTS fn_shop_get_many_stripe_product_new; -DROP PROCEDURE IF EXISTS p_shop_get_many_stripe_product_new; - -DROP FUNCTION IF EXISTS fn_shop_get_many_stripe_price_new; -DROP FUNCTION IF EXISTS p_shop_get_many_stripe_price_new; -DROP PROCEDURE IF EXISTS fn_shop_get_many_stripe_price_new; -DROP PROCEDURE IF EXISTS p_shop_get_many_stripe_price_new; - -DROP FUNCTION IF EXISTS fn_shop_get_many_supplier; -DROP FUNCTION IF EXISTS p_shop_get_many_supplier; -DROP PROCEDURE IF EXISTS fn_shop_get_many_supplier; -DROP PROCEDURE IF EXISTS p_shop_get_many_supplier; - -DROP FUNCTION IF EXISTS fn_shop_get_many_supplier_purchase_order; -DROP FUNCTION IF EXISTS p_shop_get_many_supplier_purchase_order; -DROP PROCEDURE IF EXISTS fn_shop_get_many_supplier_purchase_order; -DROP PROCEDURE IF EXISTS p_shop_get_many_supplier_purchase_order; - -DROP FUNCTION IF EXISTS fn_shop_get_many_manufacturing_purchase_order; -DROP FUNCTION IF EXISTS p_shop_get_many_manufacturing_purchase_order; -DROP PROCEDURE IF EXISTS fn_shop_get_many_manufacturing_purchase_order; -DROP PROCEDURE IF EXISTS p_shop_get_many_manufacturing_purchase_order; - -DROP FUNCTION IF EXISTS fn_shop_get_many_customer; -DROP FUNCTION IF EXISTS p_shop_get_many_customer; -DROP PROCEDURE IF EXISTS fn_shop_get_many_customer; -DROP PROCEDURE IF EXISTS p_shop_get_many_customer; - -DROP FUNCTION IF EXISTS fn_shop_get_many_customer_sales_order; -DROP FUNCTION IF EXISTS p_shop_get_many_customer_sales_order; -DROP PROCEDURE IF EXISTS fn_shop_get_many_customer_sales_order; -DROP PROCEDURE IF EXISTS p_shop_get_many_customer_sales_order; \ No newline at end of file diff --git a/static/PostgreSQL/100.0_tbl_Shop_Product_Change_Set.sql b/static/PostgreSQL/100.0_tbl_Shop_Product_Change_Set.sql deleted file mode 100644 index b1dcc507..00000000 --- a/static/PostgreSQL/100.0_tbl_Shop_Product_Change_Set.sql +++ /dev/null @@ -1,13 +0,0 @@ - --- Product Change Sets - - - -SELECT CONCAT('WARNING: Table ', TABLE_NAME, ' already exists.') AS msg_warning FROM INFORMATION_SCHEMA.TABLES WHERE TABLE_NAME = 'Shop_Product_Change_Set'; - -CREATE TABLE Shop_Product_Change_Set ( - id_change_set INTEGER NOT NULL PRIMARY KEY GENERATED ALWAYS AS IDENTITY, - comment VARCHAR(4000), - updated_last_on TIMESTAMP, - updated_last_by VARCHAR(100) -); \ No newline at end of file diff --git a/static/PostgreSQL/100.1_tbl_Shop_User_Change_Set.sql b/static/PostgreSQL/100.1_tbl_Shop_User_Change_Set.sql deleted file mode 100644 index ed444f86..00000000 --- a/static/PostgreSQL/100.1_tbl_Shop_User_Change_Set.sql +++ /dev/null @@ -1,13 +0,0 @@ - --- User Change Sets - - - -SELECT CONCAT('WARNING: Table ', TABLE_NAME, ' already exists.') AS msg_warning FROM INFORMATION_SCHEMA.TABLES WHERE TABLE_NAME = 'Shop_User_Change_Set'; - -CREATE TABLE IF NOT EXISTS Shop_User_Change_Set ( - id_change_set INTEGER NOT NULL PRIMARY KEY GENERATED ALWAYS AS IDENTITY, - comment VARCHAR(4000), - updated_last_on TIMESTAMP, - updated_last_by VARCHAR(100) -); \ No newline at end of file diff --git a/static/PostgreSQL/100.2_tbl_Shop_Access_Level.sql b/static/PostgreSQL/100.2_tbl_Shop_Access_Level.sql deleted file mode 100644 index 4921d6d2..00000000 --- a/static/PostgreSQL/100.2_tbl_Shop_Access_Level.sql +++ /dev/null @@ -1,21 +0,0 @@ - --- Access Levels - - - -SELECT CONCAT('WARNING: Table ', TABLE_NAME, ' already exists.') AS msg_warning FROM INFORMATION_SCHEMA.TABLES WHERE TABLE_NAME = 'Shop_Access_Level'; - -CREATE TABLE IF NOT EXISTS Shop_Access_Level ( - id_access_level INTEGER NOT NULL PRIMARY KEY GENERATED ALWAYS AS IDENTITY, - code VARCHAR(50), - name VARCHAR(255), - priority INTEGER NOT NULL, - active BOOLEAN NOT NULL DEFAULT TRUE, - display_order INTEGER NOT NULL, - created_on TIMESTAMP, - created_by INT, - id_change_set INTEGER, - CONSTRAINT FK_Shop_Access_Level_id_change_set - FOREIGN KEY (id_change_set) - REFERENCES Shop_User_Change_Set(id_change_set) -); \ No newline at end of file diff --git a/static/PostgreSQL/100.2_tbl_Shop_Sales_And_Purchasing_Change_Set.sql b/static/PostgreSQL/100.2_tbl_Shop_Sales_And_Purchasing_Change_Set.sql deleted file mode 100644 index 754d2a92..00000000 --- a/static/PostgreSQL/100.2_tbl_Shop_Sales_And_Purchasing_Change_Set.sql +++ /dev/null @@ -1,13 +0,0 @@ - --- Sales And Purchasing Change Sets - - - -SELECT CONCAT('WARNING: Table ', TABLE_NAME, ' already exists.') AS msg_warning FROM INFORMATION_SCHEMA.TABLES WHERE TABLE_NAME = 'Shop_Sales_And_Purchasing_Change_Set'; - -CREATE TABLE Shop_Sales_And_Purchasing_Change_Set ( - id_change_set INTEGER NOT NULL PRIMARY KEY GENERATED ALWAYS AS IDENTITY, - comment VARCHAR(4000), - updated_last_on TIMESTAMP, - updated_last_by VARCHAR(100) -); \ No newline at end of file diff --git a/static/PostgreSQL/100.3_tbl_Shop_Access_Level_Audit.sql b/static/PostgreSQL/100.3_tbl_Shop_Access_Level_Audit.sql deleted file mode 100644 index 930b0167..00000000 --- a/static/PostgreSQL/100.3_tbl_Shop_Access_Level_Audit.sql +++ /dev/null @@ -1,22 +0,0 @@ - --- Access Level Audits - - - -SELECT CONCAT('WARNING: Table ', TABLE_NAME, ' already exists.') AS msg_warning FROM INFORMATION_SCHEMA.TABLES WHERE TABLE_NAME = 'Shop_Access_Level_Audit'; - -CREATE TABLE IF NOT EXISTS Shop_Access_Level_Audit ( - id_audit INTEGER NOT NULL PRIMARY KEY GENERATED ALWAYS AS IDENTITY, - id_access_level INTEGER NOT NULL, - CONSTRAINT FK_Shop_Access_Level_Audit_id_access_level - FOREIGN KEY (id_access_level) - REFERENCES Shop_Access_Level(id_access_level) - ON UPDATE RESTRICT, - name_field VARCHAR(50), - value_prev VARCHAR(255), - value_new VARCHAR(255), - id_change_set INTEGER NOT NULL, - CONSTRAINT FK_Shop_Access_Level_Audit_id_change_set - FOREIGN KEY (id_change_set) - REFERENCES Shop_User_Change_Set(id_change_set) -); \ No newline at end of file diff --git a/static/PostgreSQL/100_tbl_Msg_Error_Type.sql b/static/PostgreSQL/100_tbl_Msg_Error_Type.sql deleted file mode 100644 index e5268d39..00000000 --- a/static/PostgreSQL/100_tbl_Msg_Error_Type.sql +++ /dev/null @@ -1,13 +0,0 @@ - --- Error Message Type - - - -SELECT CONCAT('WARNING: Table ', TABLE_NAME, ' already exists.') AS msg_warning FROM INFORMATION_SCHEMA.TABLES WHERE TABLE_NAME = 'Shop_Msg_Error_Type'; - -CREATE TABLE IF NOT EXISTS Shop_Msg_Error_Type ( - id_type INTEGER NOT NULL PRIMARY KEY GENERATED ALWAYS AS IDENTITY, - code VARCHAR(50) NOT NULL, - name VARCHAR(200) NOT NULL, - description VARCHAR(1000) -); diff --git a/static/PostgreSQL/102_tbl_File_Type.sql b/static/PostgreSQL/102_tbl_File_Type.sql deleted file mode 100644 index 24823251..00000000 --- a/static/PostgreSQL/102_tbl_File_Type.sql +++ /dev/null @@ -1,17 +0,0 @@ - --- File Types - - - -SELECT CONCAT('WARNING: Table ', TABLE_NAME, ' already exists.') AS msg_warning FROM INFORMATION_SCHEMA.TABLES WHERE TABLE_NAME = 'File_Type'; - -CREATE TABLE IF NOT EXISTS File_Type ( - id_type INTEGER NOT NULL PRIMARY KEY GENERATED ALWAYS AS IDENTITY, - code VARCHAR(50), - name VARCHAR(100), - extension VARCHAR(50), - created_on TIMESTAMP, - created_by INT, - updated_last_on TIMESTAMP, - updated_last_by VARCHAR(100) -); diff --git a/static/PostgreSQL/103_tbl_File_Type_Audit.sql b/static/PostgreSQL/103_tbl_File_Type_Audit.sql deleted file mode 100644 index 895a3f45..00000000 --- a/static/PostgreSQL/103_tbl_File_Type_Audit.sql +++ /dev/null @@ -1,22 +0,0 @@ - --- File Type Audit - - - -SELECT CONCAT('WARNING: Table ', TABLE_NAME, ' already exists.') AS msg_warning FROM INFORMATION_SCHEMA.TABLES WHERE TABLE_NAME = 'File_Type_Audit'; - -CREATE TABLE IF NOT EXISTS File_Type_Audit ( - id_audit INTEGER NOT NULL PRIMARY KEY GENERATED ALWAYS AS IDENTITY, - id_type INTEGER NOT NULL, - CONSTRAINT FK_File_Type_Audit_id_type - FOREIGN KEY (id_type) - REFERENCES File_Type(id_type) - ON UPDATE RESTRICT, - name_field VARCHAR(50), - value_prev VARCHAR(100), - value_new VARCHAR(100), - created_on TIMESTAMP, - created_by INT, - updated_last_on TIMESTAMP, - updated_last_by VARCHAR(100) -); \ No newline at end of file diff --git a/static/PostgreSQL/104_tbl_Shop_General.sql b/static/PostgreSQL/104_tbl_Shop_General.sql deleted file mode 100644 index 087e8209..00000000 --- a/static/PostgreSQL/104_tbl_Shop_General.sql +++ /dev/null @@ -1,17 +0,0 @@ - --- Generic / shared properties - - - -SELECT CONCAT('WARNING: Table ', TABLE_NAME, ' already exists.') AS msg_warning FROM INFORMATION_SCHEMA.TABLES WHERE TABLE_NAME = 'Shop_General'; - -CREATE TABLE IF NOT EXISTS Shop_General ( - id_general INTEGER NOT NULL PRIMARY KEY GENERATED ALWAYS AS IDENTITY, - quantity_max REAL, - created_on TIMESTAMP, - created_by INT, - id_change_set INTEGER, - CONSTRAINT CHK_Shop_General_id_change_set - FOREIGN KEY (id_change_set) - REFERENCES Shop_Product_Change_Set(id_change_set) -); \ No newline at end of file diff --git a/static/PostgreSQL/105_tbl_Shop_General_Audit.sql b/static/PostgreSQL/105_tbl_Shop_General_Audit.sql deleted file mode 100644 index 36e5a3a4..00000000 --- a/static/PostgreSQL/105_tbl_Shop_General_Audit.sql +++ /dev/null @@ -1,22 +0,0 @@ - --- Shop General Audits - - - -SELECT CONCAT('WARNING: Table ', TABLE_NAME, ' already exists.') AS msg_warning FROM INFORMATION_SCHEMA.TABLES WHERE TABLE_NAME = 'Shop_General_Audit'; - -CREATE TABLE IF NOT EXISTS Shop_General_Audit ( - id_audit INTEGER NOT NULL PRIMARY KEY GENERATED ALWAYS AS IDENTITY, - id_general INTEGER NOT NULL, - CONSTRAINT FK_Shop_General_Audit_id_general - FOREIGN KEY (id_general) - REFERENCES Shop_General(id_general) - ON UPDATE RESTRICT, - name_field VARCHAR(50), - value_prev VARCHAR(100), - value_new VARCHAR(100), - id_change_set INTEGER NOT NULL, - CONSTRAINT FK_Shop_General_Audit_id_change_set - FOREIGN KEY (id_change_set) - REFERENCES Shop_Product_Change_Set(id_change_set) -); \ No newline at end of file diff --git a/static/PostgreSQL/106_tbl_Shop_Category.sql b/static/PostgreSQL/106_tbl_Shop_Category.sql deleted file mode 100644 index 28e3e698..00000000 --- a/static/PostgreSQL/106_tbl_Shop_Category.sql +++ /dev/null @@ -1,21 +0,0 @@ - --- Categories - - - -SELECT CONCAT('WARNING: Table ', TABLE_NAME, ' already exists.') AS msg_warning FROM INFORMATION_SCHEMA.TABLES WHERE TABLE_NAME = 'Shop_Product_Category'; - -CREATE TABLE IF NOT EXISTS Shop_Product_Category ( - id_category INTEGER NOT NULL PRIMARY KEY GENERATED ALWAYS AS IDENTITY, - code VARCHAR(50), - name VARCHAR(255), - description VARCHAR(4000), - active BOOLEAN NOT NULL DEFAULT TRUE, - display_order INTEGER NOT NULL, - created_on TIMESTAMP, - created_by INT, - id_change_set INTEGER, - CONSTRAINT FK_Shop_Product_Category_id_change_set - FOREIGN KEY (id_change_set) - REFERENCES Shop_Product_Change_Set(id_change_set) -); diff --git a/static/PostgreSQL/107_tbl_Shop_Category_Audit.sql b/static/PostgreSQL/107_tbl_Shop_Category_Audit.sql deleted file mode 100644 index ba0ec8be..00000000 --- a/static/PostgreSQL/107_tbl_Shop_Category_Audit.sql +++ /dev/null @@ -1,22 +0,0 @@ - --- Category Audits - - - -SELECT CONCAT('WARNING: Table ', TABLE_NAME, ' already exists.') AS msg_warning FROM INFORMATION_SCHEMA.TABLES WHERE TABLE_NAME = 'Shop_Product_Category_Audit'; - -CREATE TABLE IF NOT EXISTS Shop_Product_Category_Audit ( - id_audit INTEGER NOT NULL PRIMARY KEY GENERATED ALWAYS AS IDENTITY, - id_category INTEGER NOT NULL, - CONSTRAINT FK_Shop_Product_Category_Audit_id_category - FOREIGN KEY (id_category) - REFERENCES Shop_Product_Category(id_category) - ON UPDATE RESTRICT, - name_field VARCHAR(50), - value_prev VARCHAR(4000), - value_new VARCHAR(4000), - id_change_set INTEGER NOT NULL, - CONSTRAINT FK_Shop_Product_Category_Audit_id_change_set - FOREIGN KEY (id_change_set) - REFERENCES Shop_Product_Change_Set(id_change_set) -); diff --git a/static/PostgreSQL/108_tbl_Shop_Recurrence_Interval.sql b/static/PostgreSQL/108_tbl_Shop_Recurrence_Interval.sql deleted file mode 100644 index 4075a57e..00000000 --- a/static/PostgreSQL/108_tbl_Shop_Recurrence_Interval.sql +++ /dev/null @@ -1,20 +0,0 @@ - --- Recurrence Interval - - - -SELECT CONCAT('WARNING: Table ', TABLE_NAME, ' already exists.') AS msg_warning FROM INFORMATION_SCHEMA.TABLES WHERE TABLE_NAME = 'Shop_Interval_Recurrence'; - -CREATE TABLE IF NOT EXISTS Shop_Interval_Recurrence ( - id_interval INTEGER NOT NULL PRIMARY KEY GENERATED ALWAYS AS IDENTITY, - code VARCHAR(50), - name VARCHAR(255), - name_plural VARCHAR(256), - active BOOLEAN NOT NULL DEFAULT TRUE, - created_on TIMESTAMP, - created_by INT, - id_change_set INTEGER, - CONSTRAINT FK_Shop_Interval_Recurrence_id_change_set - FOREIGN KEY (id_change_set) - REFERENCES Shop_Product_Change_Set(id_change_set) -); diff --git a/static/PostgreSQL/109_tbl_Shop_Recurrence_Interval_Audit.sql b/static/PostgreSQL/109_tbl_Shop_Recurrence_Interval_Audit.sql deleted file mode 100644 index 8ca9184b..00000000 --- a/static/PostgreSQL/109_tbl_Shop_Recurrence_Interval_Audit.sql +++ /dev/null @@ -1,22 +0,0 @@ - --- Recurrence Interval Audits - - - -SELECT CONCAT('WARNING: Table ', TABLE_NAME, ' already exists.') AS msg_warning FROM INFORMATION_SCHEMA.TABLES WHERE TABLE_NAME = 'Shop_Interval_Recurrence_Audit'; - -CREATE TABLE IF NOT EXISTS Shop_Interval_Recurrence_Audit ( - id_audit INTEGER NOT NULL PRIMARY KEY GENERATED ALWAYS AS IDENTITY, - id_interval INTEGER NOT NULL, - CONSTRAINT FK_Shop_Interval_Recurrence_Audit_id_interval - FOREIGN KEY (id_interval) - REFERENCES Shop_Interval_Recurrence(id_interval) - ON UPDATE RESTRICT, - name_field VARCHAR(50), - value_prev VARCHAR(256), - value_new VARCHAR(256), - id_change_set INTEGER NOT NULL, - CONSTRAINT FK_Shop_Interval_Recurrence_Audit_id_change_set - FOREIGN KEY (id_change_set) - REFERENCES Shop_Product_Change_Set(id_change_set) -); diff --git a/static/PostgreSQL/110.0_tbl_Shop_Region.sql b/static/PostgreSQL/110.0_tbl_Shop_Region.sql deleted file mode 100644 index c5246629..00000000 --- a/static/PostgreSQL/110.0_tbl_Shop_Region.sql +++ /dev/null @@ -1,20 +0,0 @@ - --- Regions - - - -SELECT CONCAT('WARNING: Table ', TABLE_NAME, ' already exists.') AS msg_warning FROM INFORMATION_SCHEMA.TABLES WHERE TABLE_NAME = 'Shop_Region'; - -CREATE TABLE IF NOT EXISTS Shop_Region ( - id_region INTEGER NOT NULL PRIMARY KEY GENERATED ALWAYS AS IDENTITY, - code VARCHAR(50) NOT NULL, - name VARCHAR(200) NOT NULL, - active BOOLEAN NOT NULL DEFAULT TRUE, - display_order INTEGER NOT NULL, - created_on TIMESTAMP, - created_by INT, - id_change_set INTEGER, - CONSTRAINT FK_Shop_Region_id_change_set - FOREIGN KEY (id_change_set) - REFERENCES Shop_Product_Change_Set(id_change_set) -); \ No newline at end of file diff --git a/static/PostgreSQL/110.1_tbl_Shop_Region_Audit.sql b/static/PostgreSQL/110.1_tbl_Shop_Region_Audit.sql deleted file mode 100644 index 07a36839..00000000 --- a/static/PostgreSQL/110.1_tbl_Shop_Region_Audit.sql +++ /dev/null @@ -1,22 +0,0 @@ - --- Region Audits - - - -SELECT CONCAT('WARNING: Table ', TABLE_NAME, ' already exists.') AS msg_warning FROM INFORMATION_SCHEMA.TABLES WHERE TABLE_NAME = 'Shop_Region_Audit'; - -CREATE TABLE IF NOT EXISTS Shop_Region_Audit ( - id_audit INTEGER NOT NULL PRIMARY KEY GENERATED ALWAYS AS IDENTITY, - id_region INTEGER NOT NULL, - CONSTRAINT FK_Shop_Region_Audit_id_region - FOREIGN KEY (id_region) - REFERENCES Shop_Region(id_region) - ON UPDATE RESTRICT, - name_field VARCHAR(64) NOT NULL, - value_prev VARCHAR(200), - value_new VARCHAR(200), - id_change_set INTEGER NOT NULL, - CONSTRAINT FK_Shop_Region_Audit_id_change_set - FOREIGN KEY (id_change_set) - REFERENCES Shop_Product_Change_Set(id_change_set) -); \ No newline at end of file diff --git a/static/PostgreSQL/110.2_tbl_Shop_Region_Branch.sql b/static/PostgreSQL/110.2_tbl_Shop_Region_Branch.sql deleted file mode 100644 index 42e1ae32..00000000 --- a/static/PostgreSQL/110.2_tbl_Shop_Region_Branch.sql +++ /dev/null @@ -1,29 +0,0 @@ - --- Region Branchs - - - -SELECT CONCAT('WARNING: Table ', TABLE_NAME, ' already exists.') AS msg_warning FROM INFORMATION_SCHEMA.TABLES WHERE TABLE_NAME = 'Shop_Region_Branch'; - -CREATE TABLE IF NOT EXISTS Shop_Region_Branch ( - id_branch INTEGER NOT NULL PRIMARY KEY GENERATED ALWAYS AS IDENTITY, - id_region_parent INTEGER NOT NULL, - CONSTRAINT FK_Shop_Region_Branch_id_region_parent - FOREIGN KEY (id_region_parent) - REFERENCES Shop_Region(id_region) - ON UPDATE RESTRICT, - id_region_child INTEGER NOT NULL, - CONSTRAINT FK_Shop_Region_Branch_id_region_child - FOREIGN KEY (id_region_child) - REFERENCES Shop_Region(id_region) - ON UPDATE RESTRICT, - -- depth INTEGER NOT NULL, - active BOOLEAN NOT NULL DEFAULT TRUE, - display_order INTEGER NOT NULL, - created_on TIMESTAMP, - created_by INT, - id_change_set INTEGER, - CONSTRAINT FK_Shop_Region_Branch_id_change_set - FOREIGN KEY (id_change_set) - REFERENCES Shop_Product_Change_Set(id_change_set) -); \ No newline at end of file diff --git a/static/PostgreSQL/110.3_tbl_Shop_Region_Branch_Audit.sql b/static/PostgreSQL/110.3_tbl_Shop_Region_Branch_Audit.sql deleted file mode 100644 index fed4446a..00000000 --- a/static/PostgreSQL/110.3_tbl_Shop_Region_Branch_Audit.sql +++ /dev/null @@ -1,22 +0,0 @@ - --- Region Audits - - - -SELECT CONCAT('WARNING: Table ', TABLE_NAME, ' already exists.') AS msg_warning FROM INFORMATION_SCHEMA.TABLES WHERE TABLE_NAME = 'Shop_Region_Branch_Audit'; - -CREATE TABLE IF NOT EXISTS Shop_Region_Branch_Audit ( - id_audit INTEGER NOT NULL PRIMARY KEY GENERATED ALWAYS AS IDENTITY, - id_branch INTEGER NOT NULL, - CONSTRAINT FK_Shop_Region_Branch_Audit_id_branch - FOREIGN KEY (id_branch) - REFERENCES Shop_Region_Branch(id_branch) - ON UPDATE RESTRICT, - name_field VARCHAR(64) NOT NULL, - value_prev VARCHAR(10), - value_new VARCHAR(10), - id_change_set INTEGER NOT NULL, - CONSTRAINT FK_Shop_Region_Branch_Audit_id_change_set - FOREIGN KEY (id_change_set) - REFERENCES Shop_Product_Change_Set(id_change_set) -); \ No newline at end of file diff --git a/static/PostgreSQL/110.4_tbl_Shop_Currency.sql b/static/PostgreSQL/110.4_tbl_Shop_Currency.sql deleted file mode 100644 index 5e3b6530..00000000 --- a/static/PostgreSQL/110.4_tbl_Shop_Currency.sql +++ /dev/null @@ -1,23 +0,0 @@ - --- Currencies - - - -SELECT CONCAT('WARNING: Table ', TABLE_NAME, ' already exists.') AS msg_warning FROM INFORMATION_SCHEMA.TABLES WHERE TABLE_NAME = 'Shop_Currency'; - -CREATE TABLE IF NOT EXISTS Shop_Currency ( - id_currency INTEGER NOT NULL PRIMARY KEY GENERATED ALWAYS AS IDENTITY, - code VARCHAR(50) NOT NULL, - name VARCHAR(255) NOT NULL, - symbol VARCHAR(1) NOT NULL, - factor_from_GBP REAL NOT NULL, - active BOOLEAN NOT NULL DEFAULT TRUE, - display_order INTEGER NOT NULL, - created_on TIMESTAMP, - created_by INT, - id_change_set INTEGER, - CONSTRAINT FK_Shop_Currency_id_change_set - FOREIGN KEY (id_change_set) - REFERENCES Shop_Product_Change_Set(id_change_set) - ON UPDATE RESTRICT -); \ No newline at end of file diff --git a/static/PostgreSQL/110.5_tbl_Shop_Currency_Audit.sql b/static/PostgreSQL/110.5_tbl_Shop_Currency_Audit.sql deleted file mode 100644 index cb68b4ae..00000000 --- a/static/PostgreSQL/110.5_tbl_Shop_Currency_Audit.sql +++ /dev/null @@ -1,23 +0,0 @@ - --- Currency Audits - - - -SELECT CONCAT('WARNING: Table ', TABLE_NAME, ' already exists.') AS msg_warning FROM INFORMATION_SCHEMA.TABLES WHERE TABLE_NAME = 'Shop_Currency_Audit'; - -CREATE TABLE IF NOT EXISTS Shop_Currency_Audit ( - id_audit INTEGER NOT NULL PRIMARY KEY GENERATED ALWAYS AS IDENTITY, - id_currency INTEGER NOT NULL, - CONSTRAINT FK_Shop_Currency_Audit_id_currency - FOREIGN KEY (id_currency) - REFERENCES Shop_Currency(id_currency) - ON UPDATE RESTRICT, - name_field VARCHAR(50), - value_prev VARCHAR(255), - value_new VARCHAR(255), - id_change_set INTEGER NOT NULL, - CONSTRAINT FK_Shop_Currency_Audit_id_change_set - FOREIGN KEY (id_change_set) - REFERENCES Shop_User_Change_Set(id_change_set) - ON UPDATE RESTRICT -); \ No newline at end of file diff --git a/static/PostgreSQL/110.6_tbl_Shop_Tax_Or_Surcharge.sql b/static/PostgreSQL/110.6_tbl_Shop_Tax_Or_Surcharge.sql deleted file mode 100644 index 77ba8f90..00000000 --- a/static/PostgreSQL/110.6_tbl_Shop_Tax_Or_Surcharge.sql +++ /dev/null @@ -1,38 +0,0 @@ - --- Taxes and Surcharges - - - -SELECT CONCAT('WARNING: Table ', TABLE_NAME, ' already exists.') AS msg_warning FROM INFORMATION_SCHEMA.TABLES WHERE TABLE_NAME = 'Shop_Tax_Or_Surcharge'; - -CREATE TABLE Shop_Tax_Or_Surcharge ( - id_tax INTEGER NOT NULL PRIMARY KEY GENERATED ALWAYS AS IDENTITY, - code VARCHAR(50) NOT NULL, - name VARCHAR(200) NOT NULL, - id_region_buyer INTEGER NOT NULL, - CONSTRAINT FK_Shop_Tax_Or_Surcharge_id_region_buyer - FOREIGN KEY (id_region_buyer) - REFERENCES Shop_Region(id_region), - id_region_seller INTEGER NOT NULL, - CONSTRAINT FK_Shop_Tax_Or_Surcharge_id_region_seller - FOREIGN KEY (id_region_seller) - REFERENCES Shop_Region(id_region), - id_currency INTEGER, - CONSTRAINT FK_Shop_Tax_Or_Surcharge_id_currency - FOREIGN KEY (id_currency) - REFERENCES Shop_Currency(id_currency) - ON UPDATE RESTRICT, - fixed_fee REAL NOT NULL DEFAULT 0, - multiplier REAL NOT NULL DEFAULT 1 CHECK (multiplier > 0), - apply_fixed_fee_before_multiplier BOOLEAN NOT NULL DEFAULT TRUE, - quantity_min REAL NOT NULL DEFAULT 0, - quantity_max REAL NOT NULL, - active BOOLEAN NOT NULL DEFAULT TRUE, - display_order INTEGER NOT NULL, - created_on TIMESTAMP, - created_by INT, - id_change_set INTEGER, - CONSTRAINT FK_Shop_Tax_Or_Surcharge_id_change_set - FOREIGN KEY (id_change_set) - REFERENCES Shop_Product_Change_Set(id_change_set) -); diff --git a/static/PostgreSQL/110.7_tbl_Shop_Tax_Or_Surcharge_Audit.sql b/static/PostgreSQL/110.7_tbl_Shop_Tax_Or_Surcharge_Audit.sql deleted file mode 100644 index c753c207..00000000 --- a/static/PostgreSQL/110.7_tbl_Shop_Tax_Or_Surcharge_Audit.sql +++ /dev/null @@ -1,23 +0,0 @@ - --- Tax Or Surcharge Audits - - - -SELECT CONCAT('WARNING: Table ', TABLE_NAME, ' already exists.') AS msg_warning FROM INFORMATION_SCHEMA.TABLES WHERE TABLE_NAME = 'Shop_Tax_Or_Surcharge_Audit'; - -CREATE TABLE IF NOT EXISTS Shop_Tax_Or_Surcharge_Audit ( - id_audit INTEGER NOT NULL PRIMARY KEY GENERATED ALWAYS AS IDENTITY, - id_tax INTEGER NOT NULL, - CONSTRAINT FK_Shop_Tax_Or_Surcharge_Audit_id_discount - FOREIGN KEY (id_tax) - REFERENCES Shop_Tax_Or_Surcharge(id_tax) - ON UPDATE RESTRICT, - name_field VARCHAR(50), - value_prev VARCHAR(200), - value_new VARCHAR(200), - id_change_set INTEGER NOT NULL, - CONSTRAINT FK_Shop_Tax_Or_Surcharge_Audit_id_change_set - FOREIGN KEY (id_change_set) - REFERENCES Shop_Product_Change_Set(id_change_set) - ON UPDATE RESTRICT -); \ No newline at end of file diff --git a/static/PostgreSQL/110.8_tbl_Shop_Product.sql b/static/PostgreSQL/110.8_tbl_Shop_Product.sql deleted file mode 100644 index ed44d554..00000000 --- a/static/PostgreSQL/110.8_tbl_Shop_Product.sql +++ /dev/null @@ -1,48 +0,0 @@ - --- Products - - - -SELECT CONCAT('WARNING: Table ', TABLE_NAME, ' already exists.') AS msg_warning FROM INFORMATION_SCHEMA.TABLES WHERE TABLE_NAME = 'Shop_Product'; - -CREATE TABLE IF NOT EXISTS Shop_Product ( - id_product INTEGER NOT NULL PRIMARY KEY GENERATED ALWAYS AS IDENTITY, - name VARCHAR(255) NOT NULL, - -- description VARCHAR(4000), - id_category INTEGER NOT NULL, - has_variations BOOLEAN NOT NULL, - /* - price_GBP_full REAL, - price_GBP_min REAL, - -- ratio_discount_overall REAL NOT NULL DEFAULT 0, - CONSTRAINT FK_Shop_Product_id_category - FOREIGN KEY (id_category) - REFERENCES Shop_Product_Category(id_category) - ON UPDATE RESTRICT, - latency_manuf INTEGER, - quantity_min REAL, - quantity_max REAL, - quantity_step REAL, - quantity_stock REAL, - is_subscription BOOLEAN, - id_unit_measurement_interval_recurrence INTEGER, - CONSTRAINT FK_Shop_Product_id_unit_measurement_interval_recurrence - FOREIGN KEY (id_unit_measurement_interval_recurrence) - REFERENCES Shop_Interval_Recurrence(id_interval), - count_interval_recurrence INTEGER, - */ - id_access_level_required INTEGER NOT NULL, - CONSTRAINT FK_Shop_Product_id_access_level_required - FOREIGN KEY (id_access_level_required) - REFERENCES Shop_Access_Level(id_access_level), - -- id_stripe_product VARCHAR(100), - -- id_stripe_price VARCHAR(100) NOT NULL, - active BOOLEAN NOT NULL DEFAULT TRUE, - display_order INTEGER NOT NULL, - created_on TIMESTAMP, - created_by INT, - id_change_set INTEGER, - CONSTRAINT FK_Shop_Product_id_change_set - FOREIGN KEY (id_change_set) - REFERENCES Shop_Product_Change_Set(id_change_set) -); diff --git a/static/PostgreSQL/110.9_tbl_Shop_Product_Audit.sql b/static/PostgreSQL/110.9_tbl_Shop_Product_Audit.sql deleted file mode 100644 index 932c2b0d..00000000 --- a/static/PostgreSQL/110.9_tbl_Shop_Product_Audit.sql +++ /dev/null @@ -1,22 +0,0 @@ - --- Products - - - -SELECT CONCAT('WARNING: Table ', TABLE_NAME, ' already exists.') AS msg_warning FROM INFORMATION_SCHEMA.TABLES WHERE TABLE_NAME = 'Shop_Product_Audit'; - -CREATE TABLE IF NOT EXISTS Shop_Product_Audit ( - id_audit INTEGER NOT NULL PRIMARY KEY GENERATED ALWAYS AS IDENTITY, - id_product INTEGER NOT NULL, - CONSTRAINT FK_Shop_Product_Audit_id_product - FOREIGN KEY (id_product) - REFERENCES Shop_Product(id_product) - ON UPDATE RESTRICT, - name_field VARCHAR(50), - value_prev VARCHAR(255), - value_new VARCHAR(255), - id_change_set INTEGER NOT NULL, - CONSTRAINT FK_Shop_Product_Audit_id_change_set - FOREIGN KEY (id_change_set) - REFERENCES Shop_Product_Change_Set(id_change_set) -); \ No newline at end of file diff --git a/static/PostgreSQL/112_tbl_Shop_Variation_Type.sql b/static/PostgreSQL/112_tbl_Shop_Variation_Type.sql deleted file mode 100644 index 8a77d963..00000000 --- a/static/PostgreSQL/112_tbl_Shop_Variation_Type.sql +++ /dev/null @@ -1,21 +0,0 @@ - --- Variation Types - - - -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 INTEGER NOT NULL PRIMARY KEY GENERATED ALWAYS AS IDENTITY, - code VARCHAR(50), - name VARCHAR(255), - name_plural VARCHAR(256), - active BOOLEAN NOT NULL DEFAULT TRUE, - display_order INTEGER NOT NULL, - created_on TIMESTAMP, - created_by INT, - id_change_set INTEGER, - CONSTRAINT FK_Shop_Variation_Type_id_change_set - FOREIGN KEY (id_change_set) - REFERENCES Shop_Product_Change_Set(id_change_set) -); \ No newline at end of file diff --git a/static/PostgreSQL/113.0_tbl_Shop_Variation_Type_Audit.sql b/static/PostgreSQL/113.0_tbl_Shop_Variation_Type_Audit.sql deleted file mode 100644 index 1ae8c678..00000000 --- a/static/PostgreSQL/113.0_tbl_Shop_Variation_Type_Audit.sql +++ /dev/null @@ -1,22 +0,0 @@ - --- Variation Type Audits - - - -SELECT CONCAT('WARNING: Table ', TABLE_NAME, ' already exists.') AS msg_warning FROM INFORMATION_SCHEMA.TABLES WHERE TABLE_NAME = 'Shop_Variation_Type_Audit'; - -CREATE TABLE IF NOT EXISTS Shop_Variation_Type_Audit ( - id_audit INTEGER NOT NULL PRIMARY KEY GENERATED ALWAYS AS IDENTITY, - id_type INTEGER NOT NULL, - CONSTRAINT FK_Shop_Variation_Type_Audit_id_type - FOREIGN KEY (id_type) - REFERENCES Shop_Variation_Type(id_type) - ON UPDATE RESTRICT, - name_field VARCHAR(50), - value_prev VARCHAR(256), - value_new VARCHAR(256), - id_change_set INTEGER NOT NULL, - CONSTRAINT FK_Shop_Variation_Type_Audit_id_change_set - FOREIGN KEY (id_change_set) - REFERENCES Shop_Product_Change_Set(id_change_set) -); diff --git a/static/PostgreSQL/114_tbl_Shop_Variation.sql b/static/PostgreSQL/114_tbl_Shop_Variation.sql deleted file mode 100644 index 8f0ae1ae..00000000 --- a/static/PostgreSQL/114_tbl_Shop_Variation.sql +++ /dev/null @@ -1,25 +0,0 @@ - --- Variations - - - -SELECT CONCAT('WARNING: Table ', TABLE_NAME, ' already exists.') AS msg_warning FROM INFORMATION_SCHEMA.TABLES WHERE TABLE_NAME = 'Shop_Variation'; - -CREATE TABLE Shop_Variation ( - id_variation INTEGER NOT NULL PRIMARY KEY GENERATED ALWAYS AS IDENTITY, - id_type INTEGER NOT NULL, - CONSTRAINT FK_Shop_Variation_id_type - FOREIGN KEY (id_type) - REFERENCES Shop_Variation_Type(id_type) - ON UPDATE RESTRICT, - code VARCHAR(50), - name VARCHAR(255), - active BOOLEAN NOT NULL DEFAULT TRUE, - display_order INTEGER NOT NULL, - created_on TIMESTAMP, - created_by INT, - id_change_set INTEGER, - CONSTRAINT FK_Shop_Variation_id_change_set - FOREIGN KEY (id_change_set) - REFERENCES Shop_Product_Change_Set(id_change_set) -); diff --git a/static/PostgreSQL/115_tbl_Shop_Variation_Audit.sql b/static/PostgreSQL/115_tbl_Shop_Variation_Audit.sql deleted file mode 100644 index f439d2b8..00000000 --- a/static/PostgreSQL/115_tbl_Shop_Variation_Audit.sql +++ /dev/null @@ -1,22 +0,0 @@ - --- Variation Audits - - - -SELECT CONCAT('WARNING: Table ', TABLE_NAME, ' already exists.') AS msg_warning FROM INFORMATION_SCHEMA.TABLES WHERE TABLE_NAME = 'Shop_Variation_Audit'; - -CREATE TABLE IF NOT EXISTS Shop_Variation_Audit ( - id_audit INTEGER NOT NULL PRIMARY KEY GENERATED ALWAYS AS IDENTITY, - id_variation INTEGER NOT NULL, - CONSTRAINT FK_Shop_Variation_Audit_id_variation - FOREIGN KEY (id_variation) - REFERENCES Shop_Variation(id_variation) - ON UPDATE RESTRICT, - name_field VARCHAR(50), - value_prev VARCHAR(255), - value_new VARCHAR(255), - id_change_set INTEGER NOT NULL, - CONSTRAINT FK_Shop_Variation_Audit_id_change_set - FOREIGN KEY (id_change_set) - REFERENCES Shop_Product_Change_Set(id_change_set) -); diff --git a/static/PostgreSQL/117.1_tbl_Shop_Product_Permutation.sql b/static/PostgreSQL/117.1_tbl_Shop_Product_Permutation.sql deleted file mode 100644 index b7a0ebd8..00000000 --- a/static/PostgreSQL/117.1_tbl_Shop_Product_Permutation.sql +++ /dev/null @@ -1,47 +0,0 @@ - --- Product Permutation - - - -SELECT CONCAT('WARNING: Table ', TABLE_NAME, ' already exists.') AS msg_warning FROM INFORMATION_SCHEMA.TABLES WHERE TABLE_NAME = 'Shop_Product_Permutation'; - -CREATE TABLE IF NOT EXISTS Shop_Product_Permutation ( - id_permutation INTEGER NOT NULL PRIMARY KEY GENERATED ALWAYS AS IDENTITY, - id_product INTEGER NOT NULL, - CONSTRAINT FK_Shop_Product_Variation_Link_id_product - FOREIGN KEY (id_product) - REFERENCES Shop_Product(id_product) - ON UPDATE RESTRICT, - -- name VARCHAR(255) NOT NULL, - description VARCHAR(4000) NOT NULL, - cost_local REAL NOT NULL, - id_currency_cost INTEGER NOT NULL, - profit_local_min REAL NOT NULL, - -- id_currency_profit_min INTEGER NOT NULL, - latency_manufacture INTEGER NOT NULL, - quantity_min REAL NOT NULL, - quantity_max REAL NOT NULL, - quantity_step REAL NOT NULL, - quantity_stock REAL NOT NULL, - is_subscription BOOLEAN NOT NULL, - id_unit_measurement_interval_recurrence INTEGER, - CONSTRAINT FK_Shop_Product_Permutation_id_unit_measurement_interval_recurrence - FOREIGN KEY (id_unit_measurement_interval_recurrence) - REFERENCES Shop_Interval_Recurrence(id_interval), - count_interval_recurrence INTEGER, - /* - id_access_level_required INTEGER NOT NULL, - CONSTRAINT FK_Shop_Product_Permutation_id_access_level_required - FOREIGN KEY (id_access_level_required) - REFERENCES Shop_Access_Level(id_access_level), - */ - id_stripe_product VARCHAR(100) NULL, - active BOOLEAN NOT NULL DEFAULT TRUE, - display_order INTEGER NOT NULL, - created_on TIMESTAMP, - created_by INT, - id_change_set INTEGER, - CONSTRAINT FK_Shop_Product_Variation_Link_id_change_set - FOREIGN KEY (id_change_set) - REFERENCES Shop_Product_Change_Set(id_change_set) -); diff --git a/static/PostgreSQL/117.2_tbl_Shop_Product_Permutation_Audit.sql b/static/PostgreSQL/117.2_tbl_Shop_Product_Permutation_Audit.sql deleted file mode 100644 index d4d4c443..00000000 --- a/static/PostgreSQL/117.2_tbl_Shop_Product_Permutation_Audit.sql +++ /dev/null @@ -1,23 +0,0 @@ - --- Product Permutation Audits - - - -SELECT CONCAT('WARNING: Table ', TABLE_NAME, ' already exists.') AS msg_warning FROM INFORMATION_SCHEMA.TABLES WHERE TABLE_NAME = 'Shop_Product_Permutation_Audit'; - -CREATE TABLE IF NOT EXISTS Shop_Product_Permutation_Audit ( - id_audit INTEGER NOT NULL PRIMARY KEY GENERATED ALWAYS AS IDENTITY, - id_permutation INTEGER NOT NULL, - CONSTRAINT FK_Shop_Product_Permutation_Audit_id_permutation - FOREIGN KEY (id_permutation) - REFERENCES Shop_Product_Permutation(id_permutation) - ON UPDATE RESTRICT, - name_field VARCHAR(50), - value_prev VARCHAR(4000), - value_new VARCHAR(4000), - id_change_set INTEGER NOT NULL, - CONSTRAINT FK_Shop_Product_Permutation_Audit_id_change_set - FOREIGN KEY (id_change_set) - REFERENCES Shop_Product_Change_Set(id_change_set) - ON UPDATE RESTRICT -); diff --git a/static/PostgreSQL/117.3_tbl_Shop_Product_Permutation_Variation_Link.sql b/static/PostgreSQL/117.3_tbl_Shop_Product_Permutation_Variation_Link.sql deleted file mode 100644 index 50b0e03c..00000000 --- a/static/PostgreSQL/117.3_tbl_Shop_Product_Permutation_Variation_Link.sql +++ /dev/null @@ -1,28 +0,0 @@ - --- Product Permutation Variation Link - - - -SELECT CONCAT('WARNING: Table ', TABLE_NAME, ' already exists.') AS msg_warning FROM INFORMATION_SCHEMA.TABLES WHERE TABLE_NAME = 'Shop_Product_Permutation_Variation_Link'; - -CREATE TABLE IF NOT EXISTS Shop_Product_Permutation_Variation_Link ( - id_link INTEGER NOT NULL PRIMARY KEY GENERATED ALWAYS AS IDENTITY, - id_permutation INTEGER NOT NULL, - CONSTRAINT FK_Shop_Product_Permutation_Variation_Link_id_permutation - FOREIGN KEY (id_permutation) - REFERENCES Shop_Product_Permutation(id_permutation) - ON UPDATE RESTRICT, - id_variation INTEGER NOT NULL, - CONSTRAINT FK_Shop_Product_Permutation_Variation_Link_id_variation - FOREIGN KEY (id_variation) - REFERENCES Shop_Variation(id_variation) - ON UPDATE RESTRICT, - active BOOLEAN NOT NULL DEFAULT TRUE, - display_order INTEGER NOT NULL, - created_on TIMESTAMP, - created_by INT, - id_change_set INTEGER, - CONSTRAINT FK_Shop_Product_Permutation_Variation_Link_id_change_set - FOREIGN KEY (id_change_set) - REFERENCES Shop_Product_Change_Set(id_change_set) -); diff --git a/static/PostgreSQL/117.4_tbl_Shop_Product_Permutation_Variation_Link_Audit.sql b/static/PostgreSQL/117.4_tbl_Shop_Product_Permutation_Variation_Link_Audit.sql deleted file mode 100644 index 3cce2d5c..00000000 --- a/static/PostgreSQL/117.4_tbl_Shop_Product_Permutation_Variation_Link_Audit.sql +++ /dev/null @@ -1,23 +0,0 @@ - --- Product Permutation Variation Link Audits - - - -SELECT CONCAT('WARNING: Table ', TABLE_NAME, ' already exists.') AS msg_warning FROM INFORMATION_SCHEMA.TABLES WHERE TABLE_NAME = 'Shop_Product_Permutation_Variation_Link_Audit'; - -CREATE TABLE IF NOT EXISTS Shop_Product_Permutation_Variation_Link_Audit ( - id_audit INTEGER NOT NULL PRIMARY KEY GENERATED ALWAYS AS IDENTITY, - id_link INTEGER NOT NULL, - CONSTRAINT FK_Shop_Product_Permutation_Variation_Link_Audit_id_link - FOREIGN KEY (id_link) - REFERENCES Shop_Product_Permutation_Variation_Link(id_link) - ON UPDATE RESTRICT, - name_field VARCHAR(50), - value_prev VARCHAR(10), - value_new VARCHAR(10), - id_change_set INTEGER NOT NULL, - CONSTRAINT FK_Shop_Product_Permutation_Variation_Link_Audit_id_change_set - FOREIGN KEY (id_change_set) - REFERENCES Shop_Product_Change_Set(id_change_set) - ON UPDATE RESTRICT -); \ No newline at end of file diff --git a/static/PostgreSQL/117.5_tbl_Shop_Product_Currency_Region_Link.sql b/static/PostgreSQL/117.5_tbl_Shop_Product_Currency_Region_Link.sql deleted file mode 100644 index 0055dc9d..00000000 --- a/static/PostgreSQL/117.5_tbl_Shop_Product_Currency_Region_Link.sql +++ /dev/null @@ -1,40 +0,0 @@ - --- Product Currency Region link - - - -SELECT CONCAT('WARNING: Table ', TABLE_NAME, ' already exists.') AS msg_warning FROM INFORMATION_SCHEMA.TABLES WHERE TABLE_NAME = 'Shop_Product_Currency_Region_Link'; - -CREATE TABLE IF NOT EXISTS Shop_Product_Currency_Region_Link ( - id_link INTEGER NOT NULL PRIMARY KEY GENERATED ALWAYS AS IDENTITY, - id_product INTEGER NOT NULL, - CONSTRAINT FK_Shop_Product_Currency_Region_Link_id_product - FOREIGN KEY (id_product) - REFERENCES Shop_Product(id_product) - ON UPDATE RESTRICT, - id_permutation INTEGER NULL, - CONSTRAINT FK_Shop_Product_Currency_Region_Link_id_permutation - FOREIGN KEY (id_permutation) - REFERENCES Shop_Product_Permutation(id_permutation) - ON UPDATE RESTRICT, - id_currency INTEGER NOT NULL, - CONSTRAINT FK_Shop_Product_Currency_Region_Link_id_currency - FOREIGN KEY (id_currency) - REFERENCES Shop_Currency(id_currency) - ON UPDATE RESTRICT, - id_region_purchase INTEGER NOT NULL, - CONSTRAINT FK_Shop_Product_Currency_Region_Link_id_region_purchase - FOREIGN KEY (id_region_purchase) - REFERENCES Shop_Region(id_region) - ON UPDATE RESTRICT, - price_local_VAT_incl REAL NULL, - price_local_VAT_excl REAL NULL, - id_stripe_price VARCHAR(200), - active BOOLEAN NOT NULL DEFAULT TRUE, - created_on TIMESTAMP, - created_by INT, - id_change_set INTEGER, - CONSTRAINT FK_Shop_Product_Currency_Region_Link_id_change_set - FOREIGN KEY (id_change_set) - REFERENCES Shop_Product_Change_Set(id_change_set) -); \ No newline at end of file diff --git a/static/PostgreSQL/117.6_tbl_Shop_Product_Currency_Region_Link_Audit.sql b/static/PostgreSQL/117.6_tbl_Shop_Product_Currency_Region_Link_Audit.sql deleted file mode 100644 index 2aa7d47b..00000000 --- a/static/PostgreSQL/117.6_tbl_Shop_Product_Currency_Region_Link_Audit.sql +++ /dev/null @@ -1,22 +0,0 @@ - --- Product Currency Region Link Audits - - - -SELECT CONCAT('WARNING: Table ', TABLE_NAME, ' already exists.') AS msg_warning FROM INFORMATION_SCHEMA.TABLES WHERE TABLE_NAME = 'Shop_Product_Currency_Region_Link_Audit'; - -CREATE TABLE IF NOT EXISTS Shop_Product_Currency_Region_Link_Audit ( - id_audit INTEGER NOT NULL PRIMARY KEY GENERATED ALWAYS AS IDENTITY, - id_link INTEGER NOT NULL, - CONSTRAINT FK_Shop_Product_Currency_Region_Link_Audit_id_link - FOREIGN KEY (id_link) - REFERENCES Shop_Product_Currency_Region_Link(id_link) - ON UPDATE RESTRICT, - name_field VARCHAR(50), - value_prev VARCHAR(10), - value_new VARCHAR(10), - id_change_set INTEGER NOT NULL, - CONSTRAINT FK_Shop_Product_Currency_Region_Link_Audit_id_change_set - FOREIGN KEY (id_change_set) - REFERENCES Shop_Product_Change_Set(id_change_set) -); diff --git a/static/PostgreSQL/118_tbl_Shop_Image_Type.sql b/static/PostgreSQL/118_tbl_Shop_Image_Type.sql deleted file mode 100644 index 4a8a8d71..00000000 --- a/static/PostgreSQL/118_tbl_Shop_Image_Type.sql +++ /dev/null @@ -1,21 +0,0 @@ - --- Image Types - - - -SELECT CONCAT('WARNING: Table ', TABLE_NAME, ' already exists.') AS msg_warning FROM INFORMATION_SCHEMA.TABLES WHERE TABLE_NAME = 'Shop_Image_Type'; - -CREATE TABLE IF NOT EXISTS Shop_Image_Type ( - id_type INTEGER NOT NULL PRIMARY KEY GENERATED ALWAYS AS IDENTITY, - code VARCHAR(50), - name VARCHAR(255), - name_plural VARCHAR(256), - active BOOLEAN NOT NULL DEFAULT TRUE, - display_order INTEGER NOT NULL, - created_on TIMESTAMP, - created_by INT, - id_change_set INTEGER, - CONSTRAINT FK_Shop_Image_Type_id_change_set - FOREIGN KEY (id_change_set) - REFERENCES Shop_Product_Change_Set(id_change_set) -); diff --git a/static/PostgreSQL/119_tbl_Shop_Image_Type_Audit.sql b/static/PostgreSQL/119_tbl_Shop_Image_Type_Audit.sql deleted file mode 100644 index bebb9ccd..00000000 --- a/static/PostgreSQL/119_tbl_Shop_Image_Type_Audit.sql +++ /dev/null @@ -1,22 +0,0 @@ - --- Image Type Audits - - - -SELECT CONCAT('WARNING: Table ', TABLE_NAME, ' already exists.') AS msg_warning FROM INFORMATION_SCHEMA.TABLES WHERE TABLE_NAME = 'Shop_Image_Type_Audit'; - -CREATE TABLE IF NOT EXISTS Shop_Image_Type_Audit ( - id_audit INTEGER NOT NULL PRIMARY KEY GENERATED ALWAYS AS IDENTITY, - id_type INTEGER NOT NULL, - CONSTRAINT FK_Shop_Image_Type_Audit_id_type - FOREIGN KEY (id_type) - REFERENCES Shop_Image_Type(id_type) - ON UPDATE RESTRICT, - name_field VARCHAR(50), - value_prev VARCHAR(256), - value_new VARCHAR(256), - id_change_set INTEGER NOT NULL, - CONSTRAINT FK_Shop_Image_Type_Audit_id_change_set - FOREIGN KEY (id_change_set) - REFERENCES Shop_Product_Change_Set(id_change_set) -); \ No newline at end of file diff --git a/static/PostgreSQL/120_tbl_Shop_Image.sql b/static/PostgreSQL/120_tbl_Shop_Image.sql deleted file mode 100644 index acf18eba..00000000 --- a/static/PostgreSQL/120_tbl_Shop_Image.sql +++ /dev/null @@ -1,35 +0,0 @@ - --- Images - - - -SELECT CONCAT('WARNING: Table ', TABLE_NAME, ' already exists.') AS msg_warning FROM INFORMATION_SCHEMA.TABLES WHERE TABLE_NAME = 'Shop_Image'; - -CREATE TABLE IF NOT EXISTS Shop_Image ( - id_image INTEGER NOT NULL PRIMARY KEY GENERATED ALWAYS AS IDENTITY, - id_type_image INTEGER NOT NULL, - CONSTRAINT FK_Shop_Image_id_type_image - FOREIGN KEY (id_type_image) - REFERENCES Shop_Image_Type(id_type), - id_type_file INTEGER NOT NULL, - CONSTRAINT FK_Shop_Image_id_type_file - FOREIGN KEY (id_type_file) - REFERENCES File_Type(id_type), - id_product INTEGER NULL, - CONSTRAINT FK_Shop_Image_id_product - FOREIGN KEY (id_product) - REFERENCES Shop_Product(id_product), - id_permutation INTEGER NULL, - CONSTRAINT FK_Shop_Image_id_permutation - FOREIGN KEY (id_permutation) - REFERENCES Shop_Product_Permutation(id_permutation), - url VARCHAR(255), - active BOOLEAN NOT NULL DEFAULT TRUE, - display_order INTEGER NOT NULL, - created_on TIMESTAMP, - created_by INT, - id_change_set INTEGER, - CONSTRAINT FK_Shop_Image_id_change_set - FOREIGN KEY (id_change_set) - REFERENCES Shop_Product_Change_Set(id_change_set) -); \ No newline at end of file diff --git a/static/PostgreSQL/121_tbl_Shop_Image_Audit.sql b/static/PostgreSQL/121_tbl_Shop_Image_Audit.sql deleted file mode 100644 index 23060b27..00000000 --- a/static/PostgreSQL/121_tbl_Shop_Image_Audit.sql +++ /dev/null @@ -1,21 +0,0 @@ - --- Image Type Audits - - - -SELECT CONCAT('WARNING: Table ', TABLE_NAME, ' already exists.') AS msg_warning FROM INFORMATION_SCHEMA.TABLES WHERE TABLE_NAME = 'Shop_Image_Audit'; - -CREATE TABLE IF NOT EXISTS Shop_Image_Audit ( - id_audit INTEGER NOT NULL PRIMARY KEY GENERATED ALWAYS AS IDENTITY, - id_image INTEGER NOT NULL, - CONSTRAINT FK_Shop_Image_Audit_id_image - FOREIGN KEY (id_image) - REFERENCES Shop_Image(id_image), - name_field VARCHAR(50), - value_prev VARCHAR(10), - value_new VARCHAR(10), - id_change_set INTEGER NOT NULL, - CONSTRAINT FK_Shop_Image_Audit_id_change_set - FOREIGN KEY (id_change_set) - REFERENCES Shop_Product_Change_Set(id_change_set) -); \ No newline at end of file diff --git a/static/PostgreSQL/122_tbl_Shop_Delivery_Option.sql b/static/PostgreSQL/122_tbl_Shop_Delivery_Option.sql deleted file mode 100644 index d4241ff4..00000000 --- a/static/PostgreSQL/122_tbl_Shop_Delivery_Option.sql +++ /dev/null @@ -1,25 +0,0 @@ - --- Delivery Options - - - -SELECT CONCAT('WARNING: Table ', TABLE_NAME, ' already exists.') AS msg_warning FROM INFORMATION_SCHEMA.TABLES WHERE TABLE_NAME = 'Shop_Delivery_Option'; - -CREATE TABLE IF NOT EXISTS Shop_Delivery_Option ( - id_option INTEGER NOT NULL PRIMARY KEY GENERATED ALWAYS AS IDENTITY, - code VARCHAR(50) NOT NULL, - name VARCHAR(100) NOT NULL, - description VARCHAR(4000), - latency_delivery_min INTEGER NOT NULL, - latency_delivery_max INTEGER NOT NULL, - quantity_min INTEGER NOT NULL, - quantity_max INTEGER NOT NULL, - active BOOLEAN NOT NULL DEFAULT TRUE, - display_order INTEGER NOT NULL, - created_on TIMESTAMP, - created_by INT, - id_change_set INTEGER, - CONSTRAINT FK_Shop_Delivery_Option_Type_id_change_set - FOREIGN KEY (id_change_set) - REFERENCES Shop_Product_Change_Set(id_change_set) -); diff --git a/static/PostgreSQL/123_tbl_Shop_Delivery_Option_Audit.sql b/static/PostgreSQL/123_tbl_Shop_Delivery_Option_Audit.sql deleted file mode 100644 index 5c0a8e06..00000000 --- a/static/PostgreSQL/123_tbl_Shop_Delivery_Option_Audit.sql +++ /dev/null @@ -1,22 +0,0 @@ - --- Delivery Option Audits - - - -SELECT CONCAT('WARNING: Table ', TABLE_NAME, ' already exists.') AS msg_warning FROM INFORMATION_SCHEMA.TABLES WHERE TABLE_NAME = 'Shop_Delivery_Option_Audit'; - -CREATE TABLE IF NOT EXISTS Shop_Delivery_Option_Audit ( - id_audit INTEGER NOT NULL PRIMARY KEY GENERATED ALWAYS AS IDENTITY, - id_option INTEGER NOT NULL, - CONSTRAINT FK_Shop_Delivery_Option_Audit_id_option - FOREIGN KEY (id_option) - REFERENCES Shop_Delivery_Option(id_option) - ON UPDATE RESTRICT, - name_field VARCHAR(50), - value_prev VARCHAR(4000), - value_new VARCHAR(4000), - id_change_set INTEGER NOT NULL, - CONSTRAINT FK_Shop_Delivery_Option_Audit_id_change_set - FOREIGN KEY (id_change_set) - REFERENCES Shop_Product_Change_Set(id_change_set) -); \ No newline at end of file diff --git a/static/PostgreSQL/124_tbl_Shop_Product_Delivery_Option_Link.sql b/static/PostgreSQL/124_tbl_Shop_Product_Delivery_Option_Link.sql deleted file mode 100644 index 3f5b9952..00000000 --- a/static/PostgreSQL/124_tbl_Shop_Product_Delivery_Option_Link.sql +++ /dev/null @@ -1,44 +0,0 @@ - --- Delivery Option - - - -SELECT CONCAT('WARNING: Table ', TABLE_NAME, ' already exists.') AS msg_warning FROM INFORMATION_SCHEMA.TABLES WHERE TABLE_NAME = 'Shop_Product_Permutation_Delivery_Option_Link'; - -CREATE TABLE IF NOT EXISTS Shop_Product_Permutation_Delivery_Option_Link ( - id_link INTEGER NOT NULL PRIMARY KEY GENERATED ALWAYS AS IDENTITY, - id_product INTEGER NOT NULL, - CONSTRAINT FK_Shop_Product_Permutation_Delivery_Option_Link_id_product - FOREIGN KEY (id_product) - REFERENCES Shop_Product(id_product) - ON UPDATE RESTRICT, - id_permutation INTEGER, - CONSTRAINT FK_Shop_Product_Permutation_Delivery_Option_Link_id_permutation - FOREIGN KEY (id_permutation) - REFERENCES Shop_Product_Permutation(id_permutation) - ON UPDATE RESTRICT, - id_delivery_option INTEGER NOT NULL, - CONSTRAINT FK_Shop_Product_Permutation_Delivery_Option_Link_id_delivery_option - FOREIGN KEY (id_delivery_option) - REFERENCES Shop_Delivery_Option(id_option) - ON UPDATE RESTRICT, - id_region INTEGER NOT NULL, - CONSTRAINT FK_Shop_Product_Permutation_Delivery_Option_Link_id_region - FOREIGN KEY (id_region) - REFERENCES Shop_Region(id_region) - ON UPDATE RESTRICT, - id_currency INTEGER NOT NULL, - CONSTRAINT FK_Shop_Product_Permutation_Delivery_Option_Link_id_currency - FOREIGN KEY (id_currency) - REFERENCES Shop_Currency(id_currency) - ON UPDATE RESTRICT, - price_local REAL NOT NULL, - active BOOLEAN NOT NULL DEFAULT TRUE, - display_order INTEGER NOT NULL, - created_on TIMESTAMP, - created_by INT, - id_change_set INTEGER, - CONSTRAINT FK_Shop_Product_Permutation_Delivery_Option_Link_id_change_set - FOREIGN KEY (id_change_set) - REFERENCES Shop_Product_Change_Set(id_change_set) -); \ No newline at end of file diff --git a/static/PostgreSQL/125_tbl_Shop_Product_Delivery_Option_Link_Audit.sql b/static/PostgreSQL/125_tbl_Shop_Product_Delivery_Option_Link_Audit.sql deleted file mode 100644 index 1101429d..00000000 --- a/static/PostgreSQL/125_tbl_Shop_Product_Delivery_Option_Link_Audit.sql +++ /dev/null @@ -1,22 +0,0 @@ - --- Delivery Option Audits - - - -SELECT CONCAT('WARNING: Table ', TABLE_NAME, ' already exists.') AS msg_warning FROM INFORMATION_SCHEMA.TABLES WHERE TABLE_NAME = 'Shop_Product_Permutation_Delivery_Option_Link_Audit'; - -CREATE TABLE IF NOT EXISTS Shop_Product_Permutation_Delivery_Option_Link_Audit ( - id_audit INTEGER NOT NULL PRIMARY KEY GENERATED ALWAYS AS IDENTITY, - id_link INTEGER NOT NULL, - CONSTRAINT FK_Shop_Product_Permutation_Delivery_Option_Link_Audit_id_link - FOREIGN KEY (id_link) - REFERENCES Shop_Product_Permutation_Delivery_Option_Link(id_link) - ON UPDATE RESTRICT, - name_field VARCHAR(64) NOT NULL, - value_prev VARCHAR(10), - value_new VARCHAR(10), - id_change_set INTEGER NOT NULL, - CONSTRAINT FK_Shop_Product_Permutation_Delivery_Option_Link_Audit_id_change_set - FOREIGN KEY (id_change_set) - REFERENCES Shop_Product_Change_Set(id_change_set) -); \ No newline at end of file diff --git a/static/PostgreSQL/130.4_tbl_Shop_Discount.sql b/static/PostgreSQL/130.4_tbl_Shop_Discount.sql deleted file mode 100644 index c7641a47..00000000 --- a/static/PostgreSQL/130.4_tbl_Shop_Discount.sql +++ /dev/null @@ -1,48 +0,0 @@ - --- Discounts - - - -SELECT CONCAT('WARNING: Table ', TABLE_NAME, ' already exists.') AS msg_warning FROM INFORMATION_SCHEMA.TABLES WHERE TABLE_NAME = 'Shop_Discount'; - -CREATE TABLE Shop_Discount ( - id_discount INTEGER NOT NULL PRIMARY KEY GENERATED ALWAYS AS IDENTITY, - code VARCHAR(50) NOT NULL, - name VARCHAR(200) NOT NULL, - id_product INTEGER NOT NULL, - CONSTRAINT FK_Shop_Discount_id_product - FOREIGN KEY (id_product) - REFERENCES Shop_Product(id_product), - id_permutation INTEGER, - CONSTRAINT FK_Shop_Discount_id_permutation - FOREIGN KEY (id_permutation) - REFERENCES Shop_Product_Permutation(id_permutation) - ON UPDATE RESTRICT, - /* - id_delivery_region INTEGER, - CONSTRAINT FK_Shop_Discount_id_delivery_region - FOREIGN KEY (id_delivery_region) - REFERENCES Shop_Delivery_Region(id_region) - ON UPDATE RESTRICT, - id_currency INTEGER, - CONSTRAINT FK_Shop_Discount_id_currency - FOREIGN KEY (id_currency) - REFERENCES Shop_Currency(id_currency) - ON UPDATE RESTRICT, - */ - multiplier REAL NOT NULL DEFAULT 1 CHECK (multiplier > 0), - subtractor REAL NOT NULL DEFAULT 0, - apply_multiplier_first BOOLEAN NOT NULL DEFAULT TRUE, - quantity_min REAL NOT NULL DEFAULT 0, - quantity_max REAL NOT NULL, - date_start TIMESTAMP NOT NULL, - date_end TIMESTAMP NOT NULL, - active BOOLEAN NOT NULL DEFAULT TRUE, - display_order INTEGER NOT NULL, - created_on TIMESTAMP, - created_by INT, - id_change_set INTEGER, - CONSTRAINT FK_Shop_Discount_id_change_set - FOREIGN KEY (id_change_set) - REFERENCES Shop_Product_Change_Set(id_change_set) -); diff --git a/static/PostgreSQL/131_tbl_Shop_Discount_Audit.sql b/static/PostgreSQL/131_tbl_Shop_Discount_Audit.sql deleted file mode 100644 index 71a27cb5..00000000 --- a/static/PostgreSQL/131_tbl_Shop_Discount_Audit.sql +++ /dev/null @@ -1,23 +0,0 @@ - --- Discount Audits - - - -SELECT CONCAT('WARNING: Table ', TABLE_NAME, ' already exists.') AS msg_warning FROM INFORMATION_SCHEMA.TABLES WHERE TABLE_NAME = 'Shop_Discount_Audit'; - -CREATE TABLE IF NOT EXISTS Shop_Discount_Audit ( - id_audit INTEGER NOT NULL PRIMARY KEY GENERATED ALWAYS AS IDENTITY, - id_discount INTEGER NOT NULL, - CONSTRAINT FK_Shop_Discount_Audit_id_discount - FOREIGN KEY (id_discount) - REFERENCES Shop_Discount(id_discount) - ON UPDATE RESTRICT, - name_field VARCHAR(50), - value_prev VARCHAR(200), - value_new VARCHAR(200), - id_change_set INTEGER NOT NULL, - CONSTRAINT FK_Shop_Discount_Audit_id_change_set - FOREIGN KEY (id_change_set) - REFERENCES Shop_Product_Change_Set(id_change_set) - ON UPDATE RESTRICT -); \ No newline at end of file diff --git a/static/PostgreSQL/132_tbl_Shop_Discount_Region_Currency_Link.sql b/static/PostgreSQL/132_tbl_Shop_Discount_Region_Currency_Link.sql deleted file mode 100644 index a03740e2..00000000 --- a/static/PostgreSQL/132_tbl_Shop_Discount_Region_Currency_Link.sql +++ /dev/null @@ -1,32 +0,0 @@ - --- Discount Region Currency Link - - - -SELECT CONCAT('WARNING: Table ', TABLE_NAME, ' already exists.') AS msg_warning FROM INFORMATION_SCHEMA.TABLES WHERE TABLE_NAME = 'Shop_Discount_Region_Currency_Link'; - -CREATE TABLE IF NOT EXISTS Shop_Discount_Region_Currency_Link ( - id_link INTEGER NOT NULL PRIMARY KEY GENERATED ALWAYS AS IDENTITY, - id_discount INTEGER NOT NULL, - CONSTRAINT FK_Shop_Discount_Region_Currency_Link_id_discount - FOREIGN KEY (id_discount) - REFERENCES Shop_Discount(id_discount) - ON UPDATE RESTRICT, - id_region INTEGER NOT NULL, - CONSTRAINT FK_Shop_Discount_Region_Currency_Link_id_region - FOREIGN KEY (id_region) - REFERENCES Shop_Region(id_region) - ON UPDATE RESTRICT, - id_currency INTEGER NOT NULL, - CONSTRAINT FK_Shop_Discount_Region_Currency_Link_id_currency - FOREIGN KEY (id_currency) - REFERENCES Shop_Currency(id_currency) - ON UPDATE RESTRICT, - active BOOLEAN NOT NULL DEFAULT TRUE, - created_on TIMESTAMP, - created_by INT, - id_change_set INTEGER, - CONSTRAINT FK_Shop_Discount_Region_Currency_Link_id_change_set - FOREIGN KEY (id_change_set) - REFERENCES Shop_Product_Change_Set(id_change_set) -); \ No newline at end of file diff --git a/static/PostgreSQL/133_tbl_Shop_Discount_Region_Currency_Link_Audit.sql b/static/PostgreSQL/133_tbl_Shop_Discount_Region_Currency_Link_Audit.sql deleted file mode 100644 index 5640d207..00000000 --- a/static/PostgreSQL/133_tbl_Shop_Discount_Region_Currency_Link_Audit.sql +++ /dev/null @@ -1,23 +0,0 @@ - --- Discount Region Currency Link Audits - - - -SELECT CONCAT('WARNING: Table ', TABLE_NAME, ' already exists.') AS msg_warning FROM INFORMATION_SCHEMA.TABLES WHERE TABLE_NAME = 'Shop_Discount_Region_Currency_Link_Audit'; - -CREATE TABLE IF NOT EXISTS Shop_Discount_Region_Currency_Link_Audit ( - id_audit INTEGER NOT NULL PRIMARY KEY GENERATED ALWAYS AS IDENTITY, - id_link INTEGER NOT NULL, - CONSTRAINT FK_Shop_Discount_Region_Currency_Link_Audit_id_link - FOREIGN KEY (id_link) - REFERENCES Shop_Discount_Region_Currency_Link(id_link) - ON UPDATE RESTRICT, - name_field VARCHAR(50), - value_prev VARCHAR(10), - value_new VARCHAR(10), - id_change_set INTEGER NOT NULL, - CONSTRAINT FK_Shop_Discount_Region_Currency_Link_Audit_id_change_set - FOREIGN KEY (id_change_set) - REFERENCES Shop_Product_Change_Set(id_change_set) - ON UPDATE RESTRICT -); \ No newline at end of file diff --git a/static/PostgreSQL/153_tbl_Shop_Permission_Group.sql b/static/PostgreSQL/153_tbl_Shop_Permission_Group.sql deleted file mode 100644 index 38fd7f44..00000000 --- a/static/PostgreSQL/153_tbl_Shop_Permission_Group.sql +++ /dev/null @@ -1,21 +0,0 @@ - --- Permission Groups - - - -SELECT CONCAT('WARNING: Table ', TABLE_NAME, ' already exists.') AS msg_warning FROM INFORMATION_SCHEMA.TABLES WHERE TABLE_NAME = 'Shop_Permission_Group'; - -CREATE TABLE IF NOT EXISTS Shop_Permission_Group ( - id_group INTEGER NOT NULL PRIMARY KEY GENERATED ALWAYS AS IDENTITY, - code VARCHAR(50), - name VARCHAR(255), - active BOOLEAN NOT NULL DEFAULT TRUE, - display_order INTEGER NOT NULL, - created_on TIMESTAMP, - created_by INT, - id_change_set INTEGER, - CONSTRAINT FK_Shop_Permission_Group_id_change_set - FOREIGN KEY (id_change_set) - REFERENCES Shop_User_Change_Set(id_change_set) - ON UPDATE RESTRICT -); \ No newline at end of file diff --git a/static/PostgreSQL/154_tbl_Shop_Permission_Group_Audit.sql b/static/PostgreSQL/154_tbl_Shop_Permission_Group_Audit.sql deleted file mode 100644 index 9fa6120f..00000000 --- a/static/PostgreSQL/154_tbl_Shop_Permission_Group_Audit.sql +++ /dev/null @@ -1,23 +0,0 @@ - --- Permission Group Audits - - - -SELECT CONCAT('WARNING: Table ', TABLE_NAME, ' already exists.') AS msg_warning FROM INFORMATION_SCHEMA.TABLES WHERE TABLE_NAME = 'Shop_Permission_Group_Audit'; - -CREATE TABLE IF NOT EXISTS Shop_Permission_Group_Audit ( - id_audit INTEGER NOT NULL PRIMARY KEY GENERATED ALWAYS AS IDENTITY, - id_group INTEGER NOT NULL, - CONSTRAINT FK_Shop_Permission_Group_Audit_id_group - FOREIGN KEY (id_group) - REFERENCES Shop_Permission_Group(id_group) - ON UPDATE RESTRICT, - name_field VARCHAR(50), - value_prev VARCHAR(255), - value_new VARCHAR(255), - id_change_set INTEGER NOT NULL, - CONSTRAINT FK_Shop_Permission_Group_Audit_id_change_set - FOREIGN KEY (id_change_set) - REFERENCES Shop_User_Change_Set(id_change_set) - ON UPDATE RESTRICT -); \ No newline at end of file diff --git a/static/PostgreSQL/155_tbl_Shop_Permission.sql b/static/PostgreSQL/155_tbl_Shop_Permission.sql deleted file mode 100644 index bf9cb136..00000000 --- a/static/PostgreSQL/155_tbl_Shop_Permission.sql +++ /dev/null @@ -1,29 +0,0 @@ - --- Permissions - - - -SELECT CONCAT('WARNING: Table ', TABLE_NAME, ' already exists.') AS msg_warning FROM INFORMATION_SCHEMA.TABLES WHERE TABLE_NAME = 'Shop_Permission'; - -CREATE TABLE IF NOT EXISTS Shop_Permission ( - id_permission INTEGER NOT NULL PRIMARY KEY GENERATED ALWAYS AS IDENTITY, - code VARCHAR(50), - name VARCHAR(255), - id_permission_group INTEGER NOT NULL, - CONSTRAINT FK_Shop_Permission_id_permission_group - FOREIGN KEY (id_permission_group) - REFERENCES Shop_Permission_Group(id_group) - ON UPDATE RESTRICT, - id_access_level_required INTEGER NOT NULL, - CONSTRAINT FK_Shop_Permission_id_access_level_required - FOREIGN KEY (id_access_level_required) - REFERENCES Shop_Access_Level(id_access_level), - active BOOLEAN NOT NULL DEFAULT TRUE, - display_order INTEGER NOT NULL, - created_on TIMESTAMP, - created_by INT, - id_change_set INTEGER, - CONSTRAINT FK_Shop_Permission_id_change_set - FOREIGN KEY (id_change_set) - REFERENCES Shop_User_Change_Set(id_change_set) -); \ No newline at end of file diff --git a/static/PostgreSQL/156_tbl_Shop_Permission_Audit.sql b/static/PostgreSQL/156_tbl_Shop_Permission_Audit.sql deleted file mode 100644 index ad7ce0bc..00000000 --- a/static/PostgreSQL/156_tbl_Shop_Permission_Audit.sql +++ /dev/null @@ -1,23 +0,0 @@ - --- Permission Audits - - - -SELECT CONCAT('WARNING: Table ', TABLE_NAME, ' already exists.') AS msg_warning FROM INFORMATION_SCHEMA.TABLES WHERE TABLE_NAME = 'Shop_Permission_Audit'; - -CREATE TABLE IF NOT EXISTS Shop_Permission_Audit ( - id_audit INTEGER NOT NULL PRIMARY KEY GENERATED ALWAYS AS IDENTITY, - id_permission INTEGER NOT NULL, - CONSTRAINT FK_Shop_Permission_Audit_id_permission - FOREIGN KEY (id_permission) - REFERENCES Shop_Permission(id_permission) - ON UPDATE RESTRICT, - name_field VARCHAR(50), - value_prev VARCHAR(255), - value_new VARCHAR(255), - id_change_set INTEGER NOT NULL, - CONSTRAINT FK_Shop_Permission_Audit_id_change_set - FOREIGN KEY (id_change_set) - REFERENCES Shop_User_Change_Set(id_change_set) - ON UPDATE RESTRICT -); \ No newline at end of file diff --git a/static/PostgreSQL/157_tbl_Shop_Role.sql b/static/PostgreSQL/157_tbl_Shop_Role.sql deleted file mode 100644 index b2a1bdfb..00000000 --- a/static/PostgreSQL/157_tbl_Shop_Role.sql +++ /dev/null @@ -1,20 +0,0 @@ - --- Roles - - - -SELECT CONCAT('WARNING: Table ', TABLE_NAME, ' already exists.') AS msg_warning FROM INFORMATION_SCHEMA.TABLES WHERE TABLE_NAME = 'Shop_Role'; - -CREATE TABLE IF NOT EXISTS Shop_Role ( - id_role INTEGER NOT NULL PRIMARY KEY GENERATED ALWAYS AS IDENTITY, - code VARCHAR(50), - name VARCHAR(255), - active BOOLEAN NOT NULL DEFAULT TRUE, - display_order INTEGER NOT NULL, - created_on TIMESTAMP, - created_by INT, - id_change_set INTEGER, - CONSTRAINT FK_Shop_Role_id_change_set - FOREIGN KEY (id_change_set) - REFERENCES Shop_User_Change_Set(id_change_set) -); \ No newline at end of file diff --git a/static/PostgreSQL/158_tbl_Shop_Role_Audit.sql b/static/PostgreSQL/158_tbl_Shop_Role_Audit.sql deleted file mode 100644 index f8385f8c..00000000 --- a/static/PostgreSQL/158_tbl_Shop_Role_Audit.sql +++ /dev/null @@ -1,23 +0,0 @@ - --- Role Audits - - - -SELECT CONCAT('WARNING: Table ', TABLE_NAME, ' already exists.') AS msg_warning FROM INFORMATION_SCHEMA.TABLES WHERE TABLE_NAME = 'Shop_Role_Audit'; - -CREATE TABLE Shop_Role_Audit ( - id_audit INTEGER NOT NULL PRIMARY KEY GENERATED ALWAYS AS IDENTITY, - id_role INTEGER NOT NULL, - CONSTRAINT FK_Shop_Role_Audit_id_role - FOREIGN KEY (id_role) - REFERENCES Shop_Role(id_role) - ON UPDATE RESTRICT, - name_field VARCHAR(50), - value_prev VARCHAR(255), - value_new VARCHAR(255), - id_change_set INTEGER NOT NULL, - CONSTRAINT FK_Shop_Role_Audit_id_change_set - FOREIGN KEY (id_change_set) - REFERENCES Shop_User_Change_Set(id_change_set) - ON UPDATE RESTRICT -); \ No newline at end of file diff --git a/static/PostgreSQL/159_tbl_Shop_Role_Permission_Link.sql b/static/PostgreSQL/159_tbl_Shop_Role_Permission_Link.sql deleted file mode 100644 index 2fa67c58..00000000 --- a/static/PostgreSQL/159_tbl_Shop_Role_Permission_Link.sql +++ /dev/null @@ -1,31 +0,0 @@ - --- Role Permission link - - - -SELECT CONCAT('WARNING: Table ', TABLE_NAME, ' already exists.') AS msg_warning FROM INFORMATION_SCHEMA.TABLES WHERE TABLE_NAME = 'Shop_Role_Permission_Link'; - -CREATE TABLE IF NOT EXISTS Shop_Role_Permission_Link ( - id_link INTEGER NOT NULL PRIMARY KEY GENERATED ALWAYS AS IDENTITY, - id_role INTEGER, - CONSTRAINT FK_Shop_Role_Permission_Link_id_role - FOREIGN KEY (id_role) - REFERENCES Shop_Role(id_role) - ON UPDATE RESTRICT, - id_permission INTEGER, - CONSTRAINT FK_Shop_Role_Permission_Link_id_permission - FOREIGN KEY (id_permission) - REFERENCES Shop_Permission(id_permission) - ON UPDATE RESTRICT, - id_access_level INTEGER, - CONSTRAINT FK_Shop_Role_Permission_Link_id_access_level - FOREIGN KEY (id_access_level) - REFERENCES Shop_Access_Level(id_access_level), - active BOOLEAN NOT NULL DEFAULT TRUE, - created_on TIMESTAMP, - created_by INT, - id_change_set INTEGER, - CONSTRAINT FK_Shop_Role_Permission_Link_id_change_set - FOREIGN KEY (id_change_set) - REFERENCES Shop_User_Change_Set(id_change_set) -); \ No newline at end of file diff --git a/static/PostgreSQL/160_tbl_Shop_Role_Permission_Link_Audit.sql b/static/PostgreSQL/160_tbl_Shop_Role_Permission_Link_Audit.sql deleted file mode 100644 index 8793c4e8..00000000 --- a/static/PostgreSQL/160_tbl_Shop_Role_Permission_Link_Audit.sql +++ /dev/null @@ -1,22 +0,0 @@ - --- Role Permission link Audits - - - -SELECT CONCAT('WARNING: Table ', TABLE_NAME, ' already exists.') AS msg_warning FROM INFORMATION_SCHEMA.TABLES WHERE TABLE_NAME = 'Shop_Role_Permission_Link_Audit'; - -CREATE TABLE IF NOT EXISTS Shop_Role_Permission_Link_Audit ( - id_audit INTEGER NOT NULL PRIMARY KEY GENERATED ALWAYS AS IDENTITY, - id_link INTEGER NOT NULL, - CONSTRAINT FK_Shop_Role_Permission_Link_Audit_id_link - FOREIGN KEY (id_link) - REFERENCES Shop_Role_Permission_Link(id_link) - ON UPDATE RESTRICT, - name_field VARCHAR(50), - value_prev VARCHAR(10), - value_new VARCHAR(10), - id_change_set INTEGER NOT NULL, - CONSTRAINT FK_Shop_Role_Permission_Link_Audit_id_change_set - FOREIGN KEY (id_change_set) - REFERENCES Shop_User_Change_Set(id_change_set) -); \ No newline at end of file diff --git a/static/PostgreSQL/161_tbl_Shop_User.sql b/static/PostgreSQL/161_tbl_Shop_User.sql deleted file mode 100644 index 197a472e..00000000 --- a/static/PostgreSQL/161_tbl_Shop_User.sql +++ /dev/null @@ -1,22 +0,0 @@ - --- Users - - - -SELECT CONCAT('WARNING: Table ', TABLE_NAME, ' already exists.') AS msg_warning FROM INFORMATION_SCHEMA.TABLES WHERE TABLE_NAME = 'Shop_User'; - -CREATE TABLE IF NOT EXISTS Shop_User ( - id_user INTEGER NOT NULL PRIMARY KEY GENERATED ALWAYS AS IDENTITY, - id_user_oauth VARCHAR(200) NOT NULL, - name VARCHAR(255) NOT NULL, - email VARCHAR(254) NOT NULL, - is_email_verified BOOLEAN NOT NULL DEFAULT FALSE, - is_super_user BOOLEAN NOT NULL DEFAULT FALSE, - active BOOLEAN NOT NULL DEFAULT TRUE, - created_on TIMESTAMP, - created_by INT, - id_change_set INTEGER, - CONSTRAINT FK_Shop_User_id_change_set - FOREIGN KEY (id_change_set) - REFERENCES Shop_User_Change_Set(id_change_set) -); diff --git a/static/PostgreSQL/162_tbl_Shop_User_Audit.sql b/static/PostgreSQL/162_tbl_Shop_User_Audit.sql deleted file mode 100644 index d7544cf7..00000000 --- a/static/PostgreSQL/162_tbl_Shop_User_Audit.sql +++ /dev/null @@ -1,23 +0,0 @@ - --- User Audits - - - -SELECT CONCAT('WARNING: Table ', TABLE_NAME, ' already exists.') AS msg_warning FROM INFORMATION_SCHEMA.TABLES WHERE TABLE_NAME = 'Shop_User_Audit'; - -CREATE TABLE IF NOT EXISTS Shop_User_Audit ( - id_audit INTEGER NOT NULL PRIMARY KEY GENERATED ALWAYS AS IDENTITY, - id_user INTEGER, - CONSTRAINT FK_Shop_User_Audit_id_user - FOREIGN KEY (id_user) - REFERENCES Shop_User(id_user) - ON UPDATE RESTRICT, - name_field VARCHAR(50), - value_prev VARCHAR(255), - value_new VARCHAR(255), - id_change_set INTEGER NOT NULL, - CONSTRAINT FK_Shop_User_Audit_id_change_set - FOREIGN KEY (id_change_set) - REFERENCES Shop_User_Change_Set(id_change_set) - ON UPDATE RESTRICT -); \ No newline at end of file diff --git a/static/PostgreSQL/163_tbl_Shop_User_Role_Link.sql b/static/PostgreSQL/163_tbl_Shop_User_Role_Link.sql deleted file mode 100644 index 55b92c30..00000000 --- a/static/PostgreSQL/163_tbl_Shop_User_Role_Link.sql +++ /dev/null @@ -1,26 +0,0 @@ - --- User Role link - - - -SELECT CONCAT('WARNING: Table ', TABLE_NAME, ' already exists.') AS msg_warning FROM INFORMATION_SCHEMA.TABLES WHERE TABLE_NAME = 'Shop_User_Role_Link'; - -CREATE TABLE IF NOT EXISTS Shop_User_Role_Link ( - id_link INTEGER NOT NULL PRIMARY KEY GENERATED ALWAYS AS IDENTITY, - id_user INTEGER, - CONSTRAINT FK_Shop_User_Role_Link_id_user - FOREIGN KEY (id_user) - REFERENCES Shop_User(id_user) - ON UPDATE RESTRICT, - id_role INTEGER NOT NULL, - CONSTRAINT FK_Shop_User_Role_Link_id_role - FOREIGN KEY (id_role) - REFERENCES Shop_Role(id_role), - active BOOLEAN NOT NULL DEFAULT TRUE, - created_on TIMESTAMP, - created_by INT, - id_change_set INTEGER, - CONSTRAINT FK_Shop_User_Role_Link_id_change_set - FOREIGN KEY (id_change_set) - REFERENCES Shop_User_Change_Set(id_change_set) -); \ No newline at end of file diff --git a/static/PostgreSQL/164_tbl_Shop_User_Role_Link_Audit.sql b/static/PostgreSQL/164_tbl_Shop_User_Role_Link_Audit.sql deleted file mode 100644 index 3d5a4d38..00000000 --- a/static/PostgreSQL/164_tbl_Shop_User_Role_Link_Audit.sql +++ /dev/null @@ -1,22 +0,0 @@ - --- User Role Link Audits - - - -SELECT CONCAT('WARNING: Table ', TABLE_NAME, ' already exists.') AS msg_warning FROM INFORMATION_SCHEMA.TABLES WHERE TABLE_NAME = 'Shop_User_Role_Link_Audit'; - -CREATE TABLE IF NOT EXISTS Shop_User_Role_Link_Audit ( - id_audit INTEGER NOT NULL PRIMARY KEY GENERATED ALWAYS AS IDENTITY, - id_link INTEGER NOT NULL, - CONSTRAINT FK_Shop_User_Role_Link_Audit_id_link - FOREIGN KEY (id_link) - REFERENCES Shop_User_Role_Link(id_link) - ON UPDATE RESTRICT, - name_field VARCHAR(50), - value_prev VARCHAR(200), - value_new VARCHAR(200), - id_change_set INTEGER NOT NULL, - CONSTRAINT FK_Shop_User_Role_Link_Audit_id_change_set - FOREIGN KEY (id_change_set) - REFERENCES Shop_User_Change_Set(id_change_set) -); diff --git a/static/PostgreSQL/165_tbl_Shop_Address.sql b/static/PostgreSQL/165_tbl_Shop_Address.sql deleted file mode 100644 index 01024659..00000000 --- a/static/PostgreSQL/165_tbl_Shop_Address.sql +++ /dev/null @@ -1,33 +0,0 @@ - --- Addresses - - - -SELECT CONCAT('WARNING: Table ', TABLE_NAME, ' already exists.') AS msg_warning FROM INFORMATION_SCHEMA.TABLES WHERE TABLE_NAME = 'Shop_Address'; - -CREATE TABLE Shop_Address ( - id_address INTEGER NOT NULL PRIMARY KEY GENERATED ALWAYS AS IDENTITY, - /* - a_id_user INTEGER, - CONSTRAINT FK_Shop_Address_id_user - FOREIGN KEY (id_user) - REFERENCES Shop_User(id_user) - ON UPDATE RESTRICT, - */ - -- region VARCHAR(100) NOT NULL, - id_region INTEGER NOT NULL, - name_full VARCHAR(255) NOT NULL, - phone_number VARCHAR(20) NOT NULL, - postcode VARCHAR(20) NOT NULL, - address_line_1 VARCHAR(100) NOT NULL, - address_line_2 VARCHAR(100) NOT NULL, - city VARCHAR(50) NOT NULL, - county VARCHAR(100) NOT NULL, - active BOOLEAN NOT NULL DEFAULT TRUE, - created_on TIMESTAMP, - created_by INT, - id_change_set INTEGER, - CONSTRAINT FK_Shop_Address_id_change_set - FOREIGN KEY (id_change_set) - REFERENCES Shop_User_Change_Set(id_change_set) -); \ No newline at end of file diff --git a/static/PostgreSQL/166_tbl_Shop_Address_Audit.sql b/static/PostgreSQL/166_tbl_Shop_Address_Audit.sql deleted file mode 100644 index 948a70c3..00000000 --- a/static/PostgreSQL/166_tbl_Shop_Address_Audit.sql +++ /dev/null @@ -1,23 +0,0 @@ - --- Address Audits - - - -SELECT CONCAT('WARNING: Table ', TABLE_NAME, ' already exists.') AS msg_warning FROM INFORMATION_SCHEMA.TABLES WHERE TABLE_NAME = 'Shop_Address_Audit'; - -CREATE TABLE IF NOT EXISTS Shop_Address_Audit ( - id_audit INTEGER NOT NULL PRIMARY KEY GENERATED ALWAYS AS IDENTITY, - id_address INTEGER NOT NULL, - CONSTRAINT FK_Shop_Address_Audit_id_address - FOREIGN KEY (id_address) - REFERENCES Shop_Address(id_address) - ON UPDATE RESTRICT, - name_field VARCHAR(50), - value_prev VARCHAR(255), - value_new VARCHAR(255), - id_change_set INTEGER NOT NULL, - CONSTRAINT FK_Shop_Address_Audit_id_change_set - FOREIGN KEY (id_change_set) - REFERENCES Shop_User_Change_Set(id_change_set) - ON UPDATE RESTRICT -); \ No newline at end of file diff --git a/static/PostgreSQL/167_tbl_Shop_User_Basket.sql b/static/PostgreSQL/167_tbl_Shop_User_Basket.sql deleted file mode 100644 index 4dcbf836..00000000 --- a/static/PostgreSQL/167_tbl_Shop_User_Basket.sql +++ /dev/null @@ -1,39 +0,0 @@ - --- User Basket (Product Link) - - - -SELECT CONCAT('WARNING: Table ', TABLE_NAME, ' already exists.') AS msg_warning FROM INFORMATION_SCHEMA.TABLES WHERE TABLE_NAME = 'Shop_User_Basket'; - -CREATE TABLE IF NOT EXISTS Shop_User_Basket ( - id_item INTEGER NOT NULL PRIMARY KEY GENERATED ALWAYS AS IDENTITY, - id_user INTEGER, - CONSTRAINT FK_Shop_User_Basket_id_user - FOREIGN KEY (id_user) - REFERENCES Shop_User(id_user) - ON UPDATE RESTRICT, - id_product INTEGER NOT NULL, - CONSTRAINT FK_Shop_User_Basket_id_product - FOREIGN KEY (id_product) - REFERENCES Shop_Product(id_product) - ON UPDATE RESTRICT, - id_permutation INTEGER, - CONSTRAINT FK_Shop_User_Basket_id_permutation - FOREIGN KEY (id_permutation) - REFERENCES Shop_Product_Permutation(id_permutation) - ON UPDATE RESTRICT, - quantity INTEGER NOT NULL, - active BOOLEAN NOT NULL DEFAULT TRUE, - created_on TIMESTAMP, - created_by INT, - id_change_set_user INTEGER, - CONSTRAINT FK_Shop_User_Basket_id_change_set_user - FOREIGN KEY (id_change_set_user) - REFERENCES Shop_User_Change_Set(id_change_set) - /* - id_change_set_product INTEGER, - CONSTRAINT FK_Shop_User_Basket_id_change_set_product - FOREIGN KEY (id_change_set_product) - REFERENCES Shop_Product_Change_Set(id_change_set) - */ -); diff --git a/static/PostgreSQL/168_tbl_Shop_User_Basket_Audit.sql b/static/PostgreSQL/168_tbl_Shop_User_Basket_Audit.sql deleted file mode 100644 index 7c512907..00000000 --- a/static/PostgreSQL/168_tbl_Shop_User_Basket_Audit.sql +++ /dev/null @@ -1,27 +0,0 @@ - --- Product Basket Audits - - -SELECT CONCAT('WARNING: Table ', TABLE_NAME, ' already exists.') AS msg_warning FROM INFORMATION_SCHEMA.TABLES WHERE TABLE_NAME = 'Shop_User_Basket_Audit'; - -CREATE TABLE IF NOT EXISTS Shop_User_Basket_Audit ( - id_audit INTEGER NOT NULL PRIMARY KEY GENERATED ALWAYS AS IDENTITY, - id_item INTEGER NOT NULL, - CONSTRAINT FK_Shop_User_Basket_Audit_id_link - FOREIGN KEY (id_item) - REFERENCES Shop_User_Basket(id_item) - ON UPDATE RESTRICT, - name_field VARCHAR(50), - value_prev VARCHAR(200), - value_new VARCHAR(200), - id_change_set_user INTEGER, - CONSTRAINT FK_Shop_User_Basket_Audit_id_change_set_user - FOREIGN KEY (id_change_set_user) - REFERENCES Shop_User_Change_Set(id_change_set) - /* - id_change_set_product INTEGER, - CONSTRAINT FK_Shop_User_Basket_Audit_id_change_set_product - FOREIGN KEY (id_change_set_product) - REFERENCES Shop_Product_Change_Set(id_change_set) - */ -); diff --git a/static/PostgreSQL/169_tbl_Shop_User_Order_Status.sql b/static/PostgreSQL/169_tbl_Shop_User_Order_Status.sql deleted file mode 100644 index 0a51f5b9..00000000 --- a/static/PostgreSQL/169_tbl_Shop_User_Order_Status.sql +++ /dev/null @@ -1,21 +0,0 @@ - --- User Order Types - - - -SELECT CONCAT('WARNING: Table ', TABLE_NAME, ' already exists.') AS msg_warning FROM INFORMATION_SCHEMA.TABLES WHERE TABLE_NAME = 'Shop_User_Order_Status'; - -CREATE TABLE IF NOT EXISTS Shop_User_Order_Status ( - id_status INTEGER NOT NULL PRIMARY KEY GENERATED ALWAYS AS IDENTITY, - code VARCHAR(50), - name VARCHAR(255), - name_plural VARCHAR(256), - active BOOLEAN NOT NULL DEFAULT TRUE, - display_order INTEGER NOT NULL, - created_on TIMESTAMP, - created_by INT, - id_change_set INTEGER, - CONSTRAINT FK_Shop_User_Order_Status_id_change_set - FOREIGN KEY (id_change_set) - REFERENCES Shop_User_Change_Set(id_change_set) -); diff --git a/static/PostgreSQL/170_tbl_Shop_User_Order_Status_Audit.sql b/static/PostgreSQL/170_tbl_Shop_User_Order_Status_Audit.sql deleted file mode 100644 index 25dbb368..00000000 --- a/static/PostgreSQL/170_tbl_Shop_User_Order_Status_Audit.sql +++ /dev/null @@ -1,22 +0,0 @@ - --- Order Type Audits - - - -SELECT CONCAT('WARNING: Table ', TABLE_NAME, ' already exists.') AS msg_warning FROM INFORMATION_SCHEMA.TABLES WHERE TABLE_NAME = 'Shop_User_Order_Status_Audit'; - -CREATE TABLE IF NOT EXISTS Shop_User_Order_Status_Audit ( - id_audit INTEGER NOT NULL PRIMARY KEY GENERATED ALWAYS AS IDENTITY, - id_status INTEGER NOT NULL, - CONSTRAINT FK_Shop_User_Order_Status_Audit_id_status - FOREIGN KEY (id_status) - REFERENCES Shop_User_Order_Status(id_status) - ON UPDATE RESTRICT, - name_field VARCHAR(50), - value_prev VARCHAR(256), - value_new VARCHAR(256), - id_change_set INTEGER NOT NULL, - CONSTRAINT FK_Shop_User_Order_Status_Audit_id_change_set - FOREIGN KEY (id_change_set) - REFERENCES Shop_Product_Change_Set(id_change_set) -); \ No newline at end of file diff --git a/static/PostgreSQL/181.0_tbl_Shop_Supplier.sql b/static/PostgreSQL/181.0_tbl_Shop_Supplier.sql deleted file mode 100644 index 6f45d42f..00000000 --- a/static/PostgreSQL/181.0_tbl_Shop_Supplier.sql +++ /dev/null @@ -1,32 +0,0 @@ - --- Supplier - - - -SELECT CONCAT('WARNING: Table ', TABLE_NAME, ' already exists.') AS msg_warning FROM INFORMATION_SCHEMA.TABLES WHERE TABLE_NAME = 'Shop_Supplier'; - -CREATE TABLE IF NOT EXISTS Shop_Supplier ( - id_supplier INTEGER NOT NULL PRIMARY KEY GENERATED ALWAYS AS IDENTITY, - name_company VARCHAR(255) NOT NULL, - name_contact VARCHAR(255) NULL, - department_contact VARCHAR(255) NULL, - id_address INTEGER NOT NULL, - CONSTRAINT FK_Shop_Supplier_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 INTEGER NOT NULL, - CONSTRAINT FK_Shop_Supplier_id_currency - FOREIGN KEY (id_currency) - REFERENCES Shop_Currency(id_currency), - active BOOLEAN NOT NULL DEFAULT TRUE, - created_on TIMESTAMP, - created_by INT, - id_change_set INTEGER, - CONSTRAINT FK_Shop_Supplier_id_change_set - FOREIGN KEY (id_change_set) - REFERENCES Shop_User_Change_Set(id_change_set) -); diff --git a/static/PostgreSQL/181.1_tbl_Shop_Supplier_Audit.sql b/static/PostgreSQL/181.1_tbl_Shop_Supplier_Audit.sql deleted file mode 100644 index ca866eea..00000000 --- a/static/PostgreSQL/181.1_tbl_Shop_Supplier_Audit.sql +++ /dev/null @@ -1,22 +0,0 @@ - --- Supplier Audits - - - -SELECT CONCAT('WARNING: Table ', TABLE_NAME, ' already exists.') AS msg_warning FROM INFORMATION_SCHEMA.TABLES WHERE TABLE_NAME = 'Shop_Supplier_Audit'; - -CREATE TABLE IF NOT EXISTS Shop_Supplier_Audit ( - id_audit INTEGER NOT NULL PRIMARY KEY GENERATED ALWAYS AS IDENTITY, - id_supplier INTEGER NOT NULL, - CONSTRAINT FK_Shop_Supplier_Audit_id_supplier - FOREIGN KEY (id_supplier) - REFERENCES Shop_Supplier(id_supplier) - ON UPDATE RESTRICT, - name_field VARCHAR(50), - value_prev VARCHAR(255), - value_new VARCHAR(255), - id_change_set INTEGER NOT NULL, - CONSTRAINT FK_Shop_Supplier_Audit_id_change_set - FOREIGN KEY (id_change_set) - REFERENCES Shop_User_Change_Set(id_change_set) -); diff --git a/static/PostgreSQL/181.2_tbl_Shop_Unit_Measurement.sql b/static/PostgreSQL/181.2_tbl_Shop_Unit_Measurement.sql deleted file mode 100644 index f26169fc..00000000 --- a/static/PostgreSQL/181.2_tbl_Shop_Unit_Measurement.sql +++ /dev/null @@ -1,22 +0,0 @@ - --- Unit of Measurement - - - -SELECT CONCAT('WARNING: Table ', TABLE_NAME, ' already exists.') AS msg_warning FROM INFORMATION_SCHEMA.TABLES WHERE TABLE_NAME = 'Shop_Unit_Measurement'; - -CREATE TABLE IF NOT EXISTS Shop_Unit_Measurement ( - id_unit_measurement INTEGER NOT NULL PRIMARY KEY GENERATED ALWAYS AS IDENTITY, - name_singular VARCHAR(255) NOT NULL, - name_plural VARCHAR(256) NOT NULL, - symbol VARCHAR(50) NOT NULL, - is_base_unit BOOLEAN NOT NULL DEFAULT FALSE, - - active BOOLEAN NOT NULL DEFAULT TRUE, - created_on TIMESTAMP, - created_by INT, - id_change_set INTEGER, - CONSTRAINT FK_Shop_Unit_Measurement_id_change_set - FOREIGN KEY (id_change_set) - REFERENCES Shop_Product_Change_Set(id_change_set) -); diff --git a/static/PostgreSQL/181.3_tbl_Shop_Unit_Measurement_Audit.sql b/static/PostgreSQL/181.3_tbl_Shop_Unit_Measurement_Audit.sql deleted file mode 100644 index 9ee19084..00000000 --- a/static/PostgreSQL/181.3_tbl_Shop_Unit_Measurement_Audit.sql +++ /dev/null @@ -1,22 +0,0 @@ - --- Unit of Measurement Audits - - - -SELECT CONCAT('WARNING: Table ', TABLE_NAME, ' already exists.') AS msg_warning FROM INFORMATION_SCHEMA.TABLES WHERE TABLE_NAME = 'Shop_Unit_Measurement_Audit'; - -CREATE TABLE IF NOT EXISTS Shop_Unit_Measurement_Audit ( - id_audit INTEGER NOT NULL PRIMARY KEY GENERATED ALWAYS AS IDENTITY, - id_unit_measurement INTEGER NOT NULL, - CONSTRAINT FK_Shop_Unit_Measurement_Audit_id_unit_measurement - FOREIGN KEY (id_unit_measurement) - REFERENCES Shop_Unit_Measurement(id_unit_measurement) - ON UPDATE RESTRICT, - name_field VARCHAR(50), - value_prev VARCHAR(256), - value_new VARCHAR(256), - id_change_set INTEGER NOT NULL, - CONSTRAINT FK_Shop_Unit_Measurement_Audit_id_change_set - FOREIGN KEY (id_change_set) - REFERENCES Shop_Product_Change_Set(id_change_set) -); diff --git a/static/PostgreSQL/181.4_tbl_Shop_Unit_Measurement_Conversion.sql b/static/PostgreSQL/181.4_tbl_Shop_Unit_Measurement_Conversion.sql deleted file mode 100644 index fafb6fd3..00000000 --- a/static/PostgreSQL/181.4_tbl_Shop_Unit_Measurement_Conversion.sql +++ /dev/null @@ -1,22 +0,0 @@ - --- Unit of Measurement Conversion - - - -SELECT CONCAT('WARNING: Table ', TABLE_NAME, ' already exists.') AS msg_warning FROM INFORMATION_SCHEMA.TABLES WHERE TABLE_NAME = 'Shop_Unit_Measurement_Conversion'; - -CREATE TABLE IF NOT EXISTS Shop_Unit_Measurement_Conversion ( - id_conversion INTEGER NOT NULL PRIMARY KEY, - id_unit_derived INTEGER NOT NULL, - id_unit_base INTEGER NOT NULL, - power_unit_base REAL NOT NULL, - multiplier_unit_base REAL NOT NULL, - increment_unit_base REAL NOT NULL, - active BOOLEAN NOT NULL DEFAULT TRUE, - created_on TIMESTAMP, - created_by INT, - id_change_set INTEGER, - CONSTRAINT FK_Shop_Unit_Measurement_Conversion_id_change_set - FOREIGN KEY (id_change_set) - REFERENCES Shop_Product_Change_Set(id_change_set) -); diff --git a/static/PostgreSQL/181.5_tbl_Shop_Unit_Measurement_Conversion_Audit.sql b/static/PostgreSQL/181.5_tbl_Shop_Unit_Measurement_Conversion_Audit.sql deleted file mode 100644 index 6ec246ff..00000000 --- a/static/PostgreSQL/181.5_tbl_Shop_Unit_Measurement_Conversion_Audit.sql +++ /dev/null @@ -1,22 +0,0 @@ - --- Unit of Measurement Conversion Audits - - - -SELECT CONCAT('WARNING: Table ', TABLE_NAME, ' already exists.') AS msg_warning FROM INFORMATION_SCHEMA.TABLES WHERE TABLE_NAME = 'Shop_Unit_Measurement_Conversion_Audit'; - -CREATE TABLE IF NOT EXISTS Shop_Unit_Measurement_Conversion_Audit ( - id_audit INTEGER NOT NULL PRIMARY KEY GENERATED ALWAYS AS IDENTITY, - id_conversion INTEGER NOT NULL, - CONSTRAINT FK_Shop_Unit_Measurement_Conversion_Audit_id_conversion - FOREIGN KEY (id_conversion) - REFERENCES Shop_Unit_Measurement_Conversion(id_conversion) - ON UPDATE RESTRICT, - name_field VARCHAR(50), - value_prev VARCHAR(100), - value_new VARCHAR(100), - id_change_set INTEGER NOT NULL, - CONSTRAINT FK_Shop_Unit_Measurement_Conversion_Audit_id_change_set - FOREIGN KEY (id_change_set) - REFERENCES Shop_Product_Change_Set(id_change_set) -); diff --git a/static/PostgreSQL/181.6_tbl_Shop_Supplier_Purchase_Order.sql b/static/PostgreSQL/181.6_tbl_Shop_Supplier_Purchase_Order.sql deleted file mode 100644 index a36cfa4c..00000000 --- a/static/PostgreSQL/181.6_tbl_Shop_Supplier_Purchase_Order.sql +++ /dev/null @@ -1,41 +0,0 @@ - --- Supplier Purchase Order - - - -SELECT CONCAT('WARNING: Table ', TABLE_NAME, ' already exists.') AS msg_warning FROM INFORMATION_SCHEMA.TABLES WHERE TABLE_NAME = 'Shop_Supplier_Purchase_Order'; - -CREATE TABLE IF NOT EXISTS Shop_Supplier_Purchase_Order ( - id_order INTEGER NOT NULL PRIMARY KEY GENERATED ALWAYS AS IDENTITY, - id_supplier_ordered INTEGER NOT NULL, - CONSTRAINT FK_Shop_Supplier_Purchase_Order_id_supplier_ordered - FOREIGN KEY (id_supplier_ordered) - REFERENCES Shop_Supplier(id_supplier), - /* - id_supplier_fulfilled INTEGER NOT NULL, - CONSTRAINT FK_Shop_Supplier_Purchase_Order_id_supplier_fulfilled - FOREIGN KEY (id_supplier_fulfilled) - REFERENCES Shop_Supplier(id_supplier), - */ - cost_total_local REAL NOT NULL, - id_currency_cost INTEGER NOT NULL, - /* - latency_delivery INTEGER NOT NULL, - quantity_ordered REAL NOT NULL, - id_unit_quantity INTEGER NOT NULL, - CONSTRAINT FK_Shop_Supplier_Purchase_Order_id_unit_quantity - FOREIGN KEY (id_unit_quantity) - REFERENCES Shop_Unit_Measurement(id_unit), - -- quantity_received INTEGER NULL, - display_order INTEGER NOT NULL, - */ - active BOOLEAN NOT NULL DEFAULT TRUE, - created_on TIMESTAMP, - created_by INT, - updated_last_on TIMESTAMP NULL, - created_last_by VARCHAR(100) NULL, - id_change_set INTEGER NULL, - CONSTRAINT FK_Shop_Supplier_Purchase_Order_id_change_set - FOREIGN KEY (id_change_set) - REFERENCES Shop_Sales_And_Purchasing_Change_Set(id_change_set) -); diff --git a/static/PostgreSQL/181.7_tbl_Shop_Supplier_Purchase_Order_Audit.sql b/static/PostgreSQL/181.7_tbl_Shop_Supplier_Purchase_Order_Audit.sql deleted file mode 100644 index 2b303dce..00000000 --- a/static/PostgreSQL/181.7_tbl_Shop_Supplier_Purchase_Order_Audit.sql +++ /dev/null @@ -1,22 +0,0 @@ - --- Supplier Purchase Order Audits - - - -SELECT CONCAT('WARNING: Table ', TABLE_NAME, ' already exists.') AS msg_warning FROM INFORMATION_SCHEMA.TABLES WHERE TABLE_NAME = 'Shop_Supplier_Purchase_Order_Audit'; - -CREATE TABLE IF NOT EXISTS Shop_Supplier_Purchase_Order_Audit ( - id_audit INTEGER NOT NULL PRIMARY KEY GENERATED ALWAYS AS IDENTITY, - id_order INTEGER NOT NULL, - CONSTRAINT FK_Shop_Supplier_Purchase_Order_Audit_id_order - FOREIGN KEY (id_order) - REFERENCES Shop_Supplier_Purchase_Order(id_order) - ON UPDATE RESTRICT, - name_field VARCHAR(50), - value_prev VARCHAR(10), - value_new VARCHAR(10), - id_change_set INTEGER NOT NULL, - CONSTRAINT FK_Shop_Supplier_Purchase_Order_Audit_id_change_set - FOREIGN KEY (id_change_set) - REFERENCES Shop_Sales_And_Purchasing_Change_Set(id_change_set) -); diff --git a/static/PostgreSQL/181.8_tbl_Shop_Supplier_Purchase_Order_Product_Link.sql b/static/PostgreSQL/181.8_tbl_Shop_Supplier_Purchase_Order_Product_Link.sql deleted file mode 100644 index 0dbd93eb..00000000 --- a/static/PostgreSQL/181.8_tbl_Shop_Supplier_Purchase_Order_Product_Link.sql +++ /dev/null @@ -1,37 +0,0 @@ - --- Supplier Purchase Order Product Link - - - -SELECT CONCAT('WARNING: Table ', TABLE_NAME, ' already exists.') AS msg_warning FROM INFORMATION_SCHEMA.TABLES WHERE TABLE_NAME = 'Shop_Supplier_Purchase_Order_Product_Link'; - -CREATE TABLE IF NOT EXISTS Shop_Supplier_Purchase_Order_Product_Link ( - id_link INTEGER NOT NULL PRIMARY KEY GENERATED ALWAYS AS IDENTITY, - id_order INTEGER NOT NULL, - CONSTRAINT FK_Shop_Supplier_Purchase_Order_Product_Link_id_order - FOREIGN KEY (id_order) - REFERENCES Shop_Supplier_Purchase_Order(id_order), - id_permutation INTEGER NOT NULL, - CONSTRAINT FK_Shop_Supplier_Purchase_Order_Product_Link_id_permutation - FOREIGN KEY (id_permutation) - REFERENCES Shop_Product_Permutation(id_permutation), - cost_total_local REAL NOT NULL, - id_currency_cost INTEGER NOT NULL, - quantity_ordered REAL NOT NULL, - id_unit_quantity INTEGER NOT NULL, - CONSTRAINT FK_Shop_Supplier_Purchase_Order_Product_Link_id_unit_quantity - FOREIGN KEY (id_unit_quantity) - REFERENCES Shop_Unit_Measurement(id_unit_measurement), - quantity_received REAL NULL, - latency_delivery_days INTEGER NOT NULL, - display_order INTEGER NOT NULL, - active BOOLEAN NOT NULL, - created_on TIMESTAMP, - created_by INT, - updated_last_on TIMESTAMP NULL, - created_last_by VARCHAR(100) NULL, - id_change_set INTEGER NULL, - CONSTRAINT FK_Shop_Supplier_Purchase_Order_Product_Link_id_change_set - FOREIGN KEY (id_change_set) - REFERENCES Shop_Sales_And_Purchasing_Change_Set(id_change_set) -); diff --git a/static/PostgreSQL/181.9_tbl_Shop_Supplier_Purchase_Order_Product_Link_Audit.sql b/static/PostgreSQL/181.9_tbl_Shop_Supplier_Purchase_Order_Product_Link_Audit.sql deleted file mode 100644 index 66520dfa..00000000 --- a/static/PostgreSQL/181.9_tbl_Shop_Supplier_Purchase_Order_Product_Link_Audit.sql +++ /dev/null @@ -1,22 +0,0 @@ - --- Supplier Purchase Order Product Link Audits - - - -SELECT CONCAT('WARNING: Table ', TABLE_NAME, ' already exists.') AS msg_warning FROM INFORMATION_SCHEMA.TABLES WHERE TABLE_NAME = 'Shop_Supplier_Purchase_Order_Product_Link_Audit'; - -CREATE TABLE IF NOT EXISTS Shop_Supplier_Purchase_Order_Product_Link_Audit ( - id_audit INTEGER NOT NULL PRIMARY KEY GENERATED ALWAYS AS IDENTITY, - id_link INTEGER NOT NULL, - CONSTRAINT FK_Supplier_Purch_Order_Product_Link_Audit_id_link - FOREIGN KEY (id_link) - REFERENCES Shop_Supplier_Purchase_Order_Product_Link(id_link) - ON UPDATE RESTRICT, - name_field VARCHAR(50), - value_prev VARCHAR(10), - value_new VARCHAR(10), - id_change_set INTEGER NOT NULL, - CONSTRAINT FK_Supplier_Purch_Order_Product_Link_Audit_id_change_set - FOREIGN KEY (id_change_set) - REFERENCES Shop_Sales_And_Purchasing_Change_Set(id_change_set) -); diff --git a/static/PostgreSQL/182.0_tbl_Shop_Supplier_Purchase_Order_Product_Link_Temp.sql b/static/PostgreSQL/182.0_tbl_Shop_Supplier_Purchase_Order_Product_Link_Temp.sql deleted file mode 100644 index d088fbb0..00000000 --- a/static/PostgreSQL/182.0_tbl_Shop_Supplier_Purchase_Order_Product_Link_Temp.sql +++ /dev/null @@ -1,34 +0,0 @@ - --- Supplier Purchase Order Product Link Temp - - - --- drop table Shop_Supplier_Purchase_Order_Product_Link_Temp; - -SELECT CONCAT('WARNING: Table ', TABLE_NAME, ' already exists.') AS msg_warning FROM INFORMATION_SCHEMA.TABLES WHERE TABLE_NAME = 'Shop_Supplier_Purchase_Order_Product_Link_Temp'; - -CREATE TABLE IF NOT EXISTS Shop_Supplier_Purchase_Order_Product_Link_Temp ( - id_link INTEGER NOT NULL PRIMARY KEY, - GUID UUID NOT NULL, - id_order INTEGER NOT NULL, - /* - CONSTRAINT FK_Supplier_Purchase_Order_Product_Link_Temp_id_order - FOREIGN KEY (id_order) - REFERENCES Shop_Supplier_Purchase_Order(id_order), - */ - id_permutation INTEGER NOT NULL, - CONSTRAINT FK_Supplier_Purchase_Order_Product_Link_Temp_id_permutation - FOREIGN KEY (id_permutation) - REFERENCES Shop_Product_Permutation(id_permutation), - cost_total_local REAL NOT NULL, - id_currency_cost INTEGER NOT NULL, - quantity_ordered REAL NOT NULL, - id_unit_quantity INTEGER NOT NULL, - CONSTRAINT FK_Supplier_Purchase_Order_Product_Link_Temp_id_unit_quantity - FOREIGN KEY (id_unit_quantity) - REFERENCES Shop_Unit_Measurement(id_unit_measurement), - quantity_received REAL NULL, - latency_delivery_days INTEGER NOT NULL, - display_order INTEGER NOT NULL, - active BOOLEAN NOT NULL -); diff --git a/static/PostgreSQL/183_tbl_Shop_Manufacturing_Purchase_Order.sql b/static/PostgreSQL/183_tbl_Shop_Manufacturing_Purchase_Order.sql deleted file mode 100644 index 0870e058..00000000 --- a/static/PostgreSQL/183_tbl_Shop_Manufacturing_Purchase_Order.sql +++ /dev/null @@ -1,33 +0,0 @@ - - --- Manufacturing Purchase Order - - - -SELECT CONCAT('WARNING: Table ', TABLE_NAME, ' already exists.') AS msg_warning FROM INFORMATION_SCHEMA.TABLES WHERE TABLE_NAME = 'Shop_Manufacturing_Purchase_Order'; - -CREATE TABLE IF NOT EXISTS Shop_Manufacturing_Purchase_Order ( - id_order INTEGER NOT NULL PRIMARY KEY GENERATED ALWAYS AS IDENTITY, - cost_total_local REAL NOT NULL, - id_currency_cost INTEGER NOT NULL, - value_produced_total_local REAL NOT NULL, - /* - latency_delivery INTEGER NOT NULL, - quantity_ordered REAL NOT NULL, - id_unit_quantity INTEGER NOT NULL, - CONSTRAINT FK_Shop_Manufacturing_Purchase_Order_id_unit_quantity - FOREIGN KEY (id_unit_quantity) - REFERENCES Shop_Unit_Measurement(id_unit), - quantity_received INTEGER NULL, - display_order INTEGER NOT NULL, - */ - active BOOLEAN NOT NULL DEFAULT TRUE, - created_on TIMESTAMP, - created_by INT, - updated_last_on TIMESTAMP NULL, - created_last_by VARCHAR(100) NULL, - id_change_set INTEGER NULL, - CONSTRAINT FK_Shop_Manufacturing_Purchase_Order_id_change_set - FOREIGN KEY (id_change_set) - REFERENCES Shop_Sales_And_Purchasing_Change_Set(id_change_set) -); diff --git a/static/PostgreSQL/184_tbl_Shop_Manufacturing_Purchase_Order_Audit.sql b/static/PostgreSQL/184_tbl_Shop_Manufacturing_Purchase_Order_Audit.sql deleted file mode 100644 index d50b5156..00000000 --- a/static/PostgreSQL/184_tbl_Shop_Manufacturing_Purchase_Order_Audit.sql +++ /dev/null @@ -1,22 +0,0 @@ - --- Manufacturing Purchase Order Audits - - - -SELECT CONCAT('WARNING: Table ', TABLE_NAME, ' already exists.') AS msg_warning FROM INFORMATION_SCHEMA.TABLES WHERE TABLE_NAME = 'Shop_Manufacturing_Purchase_Order_Audit'; - -CREATE TABLE IF NOT EXISTS Shop_Manufacturing_Purchase_Order_Audit ( - id_audit INTEGER NOT NULL PRIMARY KEY GENERATED ALWAYS AS IDENTITY, - id_order INTEGER NOT NULL, - CONSTRAINT FK_Shop_Manufacturing_Purchase_Order_Audit_id_order - FOREIGN KEY (id_order) - REFERENCES Shop_Manufacturing_Purchase_Order(id_order) - ON UPDATE RESTRICT, - name_field VARCHAR(50), - value_prev VARCHAR(10), - value_new VARCHAR(10), - id_change_set INTEGER NOT NULL, - CONSTRAINT FK_Shop_Manufacturing_Purchase_Order_Audit_id_change_set - FOREIGN KEY (id_change_set) - REFERENCES Shop_Sales_And_Purchasing_Change_Set(id_change_set) -); diff --git a/static/PostgreSQL/185_tbl_Shop_Manufacturing_Purchase_Order_Product_Link.sql b/static/PostgreSQL/185_tbl_Shop_Manufacturing_Purchase_Order_Product_Link.sql deleted file mode 100644 index 6ff6f469..00000000 --- a/static/PostgreSQL/185_tbl_Shop_Manufacturing_Purchase_Order_Product_Link.sql +++ /dev/null @@ -1,38 +0,0 @@ - --- Manufacturing Purchase Order Product Link - - - -SELECT CONCAT('WARNING: Table ', TABLE_NAME, ' already exists.') AS msg_warning FROM INFORMATION_SCHEMA.TABLES WHERE TABLE_NAME = 'Shop_Manufacturing_Purchase_Order_Product_Link'; - -CREATE TABLE IF NOT EXISTS Shop_Manufacturing_Purchase_Order_Product_Link ( - id_link INTEGER NOT NULL PRIMARY KEY GENERATED ALWAYS AS IDENTITY, - id_order INTEGER NOT NULL, - CONSTRAINT FK_Manufacturing_Purchase_Order_Product_Link_id_order - FOREIGN KEY (id_order) - REFERENCES Shop_Manufacturing_Purchase_Order(id_order), - id_permutation INTEGER NOT NULL, - CONSTRAINT FK_Manufacturing_Purchase_Order_Product_Link_id_permutation - FOREIGN KEY (id_permutation) - REFERENCES Shop_Product_Permutation(id_permutation), - cost_total_local REAL NOT NULL, - id_currency_cost INTEGER NOT NULL, - value_produced_total_local REAL NOT NULL, - quantity_used REAL NOT NULL, - id_unit_quantity INTEGER NOT NULL, - CONSTRAINT FK_Manufacturing_Purchase_Order_id_unit_quantity - FOREIGN KEY (id_unit_quantity) - REFERENCES Shop_Unit_Measurement(id_unit_measurement), - latency_manufacture INTEGER NOT NULL, - quantity_produced REAL NOT NULL, - display_order INTEGER NOT NULL, - active BOOLEAN NOT NULL, - created_on TIMESTAMP, - created_by INT, - updated_last_on TIMESTAMP NULL, - created_last_by VARCHAR(100) NULL, - id_change_set INTEGER NULL, - CONSTRAINT FK_Manufacturing_Purchase_Order_id_change_set - FOREIGN KEY (id_change_set) - REFERENCES Shop_Sales_And_Purchasing_Change_Set(id_change_set) -); diff --git a/static/PostgreSQL/186.1_tbl_Shop_Manufacturing_Purchase_Order_Product_Link_Temp.sql b/static/PostgreSQL/186.1_tbl_Shop_Manufacturing_Purchase_Order_Product_Link_Temp.sql deleted file mode 100644 index 7237a1aa..00000000 --- a/static/PostgreSQL/186.1_tbl_Shop_Manufacturing_Purchase_Order_Product_Link_Temp.sql +++ /dev/null @@ -1,35 +0,0 @@ - --- Manufacturing Purchase Order Product Link Temp - - - --- DROP TABLE Shop_Manufacturing_Purchase_Order_Product_Link_Temp; --- SELECT * FROM Shop_Manufacturing_Purchase_Order_Product_Link_Temp; - -SELECT CONCAT('WARNING: Table ', TABLE_NAME, ' already exists.') AS msg_warning FROM INFORMATION_SCHEMA.TABLES WHERE TABLE_NAME = 'Shop_Manufacturing_Purchase_Order_Product_Link_Temp'; - -CREATE TABLE IF NOT EXISTS Shop_Manufacturing_Purchase_Order_Product_Link_Temp ( - id_link INTEGER NOT NULL PRIMARY KEY, - GUID UUID NOT NULL, - id_order INTEGER NOT NULL, - /* - CONSTRAINT FK_Manuf_Purch_Order_Product_Link_Temp_id_order - FOREIGN KEY (id_order) - REFERENCES Shop_Manufacturing_Purchase_Order(id_order), - */ - id_permutation INTEGER NOT NULL, - CONSTRAINT FK_Manuf_Purch_Order_Product_Link_Temp_id_permutation - FOREIGN KEY (id_permutation) - REFERENCES Shop_Product_Permutation(id_permutation), - cost_total_local REAL NOT NULL, - id_currency_cost INTEGER NOT NULL, - quantity_used REAL NOT NULL, - id_unit_quantity INTEGER NOT NULL, - CONSTRAINT FK_Manuf_Purch_Order_Product_Link_Temp_id_unit_quantity - FOREIGN KEY (id_unit_quantity) - REFERENCES Shop_Unit_Measurement(id_unit_measurement), - quantity_produced REAL NULL, - latency_manufacture INTEGER NOT NULL, - display_order INTEGER NOT NULL, - active BOOLEAN NOT NULL -); diff --git a/static/PostgreSQL/186_tbl_Shop_Manufacturing_Purchase_Order_Product_Link_Audit.sql b/static/PostgreSQL/186_tbl_Shop_Manufacturing_Purchase_Order_Product_Link_Audit.sql deleted file mode 100644 index f6507628..00000000 --- a/static/PostgreSQL/186_tbl_Shop_Manufacturing_Purchase_Order_Product_Link_Audit.sql +++ /dev/null @@ -1,22 +0,0 @@ - --- Manufacturing Purchase Order Product Link Audits - - - -SELECT CONCAT('WARNING: Table ', TABLE_NAME, ' already exists.') AS msg_warning FROM INFORMATION_SCHEMA.TABLES WHERE TABLE_NAME = 'Shop_Manufacturing_Purchase_Order_Product_Link_Audit'; - -CREATE TABLE IF NOT EXISTS Shop_Manufacturing_Purchase_Order_Product_Link_Audit ( - id_audit INTEGER NOT NULL PRIMARY KEY GENERATED ALWAYS AS IDENTITY, - id_link INTEGER NOT NULL, - CONSTRAINT FK_Manufacturing_Purch_Order_Product_Link_Audit_id_link - FOREIGN KEY (id_link) - REFERENCES Shop_Manufacturing_Purchase_Order_Product_Link(id_link) - ON UPDATE RESTRICT, - name_field VARCHAR(50), - value_prev VARCHAR(10), - value_new VARCHAR(10), - id_change_set INTEGER NOT NULL, - CONSTRAINT FK_Manufacturing_Purch_Order_Product_Link_Audit_id_change_set - FOREIGN KEY (id_change_set) - REFERENCES Shop_Sales_And_Purchasing_Change_Set(id_change_set) -); diff --git a/static/PostgreSQL/187.0_tbl_Shop_Customer.sql b/static/PostgreSQL/187.0_tbl_Shop_Customer.sql deleted file mode 100644 index 39ecf58d..00000000 --- a/static/PostgreSQL/187.0_tbl_Shop_Customer.sql +++ /dev/null @@ -1,29 +0,0 @@ --- Customer - - - -SELECT CONCAT('WARNING: Table ', TABLE_NAME, ' already exists.') AS msg_warning FROM INFORMATION_SCHEMA.TABLES WHERE TABLE_NAME = 'Shop_Customer'; - -CREATE TABLE IF NOT EXISTS Shop_Customer ( - id_customer INTEGER NOT NULL PRIMARY KEY GENERATED ALWAYS AS IDENTITY, - name_company VARCHAR(255) NOT NULL, - name_contact VARCHAR(255) NULL, - department_contact VARCHAR(255) NULL, - id_address INTEGER NOT NULL, - CONSTRAINT FK_Shop_Customer_id_address - FOREIGN KEY (id_address) - REFERENCES Shop_Address(id_address), - phone_number VARCHAR(50) NULL, - email VARCHAR(255) NOT NULL, - id_currency INTEGER NOT NULL, - CONSTRAINT FK_Shop_Customer_id_currency - FOREIGN KEY (id_currency) - REFERENCES Shop_Currency(id_currency), - active BOOLEAN NOT NULL DEFAULT TRUE, - created_on TIMESTAMP, - created_by INT, - id_change_set INTEGER, - CONSTRAINT FK_Shop_Customer_id_change_set - FOREIGN KEY (id_change_set) - REFERENCES Shop_Sales_And_Purchasing_Change_Set(id_change_set) -); diff --git a/static/PostgreSQL/187.1_tbl_Shop_Customer_Audit.sql b/static/PostgreSQL/187.1_tbl_Shop_Customer_Audit.sql deleted file mode 100644 index 5ed1e9ca..00000000 --- a/static/PostgreSQL/187.1_tbl_Shop_Customer_Audit.sql +++ /dev/null @@ -1,22 +0,0 @@ - --- Customer Audits - - - -SELECT CONCAT('WARNING: Table ', TABLE_NAME, ' already exists.') AS msg_warning FROM INFORMATION_SCHEMA.TABLES WHERE TABLE_NAME = 'Shop_Customer_Audit'; - -CREATE TABLE IF NOT EXISTS Shop_Customer_Audit ( - id_audit INTEGER NOT NULL PRIMARY KEY GENERATED ALWAYS AS IDENTITY, - id_customer INTEGER NOT NULL, - CONSTRAINT FK_Shop_Customer_Audit_id_customer - FOREIGN KEY (id_customer) - REFERENCES Shop_Customer(id_customer) - ON UPDATE RESTRICT, - name_field VARCHAR(50), - value_prev VARCHAR(255), - value_new VARCHAR(255), - id_change_set INTEGER NOT NULL, - CONSTRAINT FK_Shop_Customer_Audit_id_change_set - FOREIGN KEY (id_change_set) - REFERENCES Shop_Sales_And_Purchasing_Change_Set(id_change_set) -); diff --git a/static/PostgreSQL/187.2_tbl_Shop_Customer_Sales_Order.sql b/static/PostgreSQL/187.2_tbl_Shop_Customer_Sales_Order.sql deleted file mode 100644 index ab831c86..00000000 --- a/static/PostgreSQL/187.2_tbl_Shop_Customer_Sales_Order.sql +++ /dev/null @@ -1,35 +0,0 @@ - --- Customer Sales Purchase Order - - - -SELECT CONCAT('WARNING: Table ', TABLE_NAME, ' already exists.') AS msg_warning FROM INFORMATION_SCHEMA.TABLES WHERE TABLE_NAME = 'Shop_Customer_Sales_Order'; - -CREATE TABLE IF NOT EXISTS Shop_Customer_Sales_Order ( - id_order INTEGER NOT NULL PRIMARY KEY GENERATED ALWAYS AS IDENTITY, - id_customer INTEGER NOT NULL, - CONSTRAINT FK_Shop_Customer_Sales_Order_id_customer - FOREIGN KEY (id_customer) - REFERENCES Shop_Customer(id_customer), - price_total_local REAL NOT NULL, - id_currency_price INTEGER NOT NULL, - /* - latency_delivery INTEGER NOT NULL, - quantity_ordered REAL NOT NULL, - id_unit_quantity INTEGER NOT NULL, - CONSTRAINT FK_Shop_Customer_Sales_Order_id_unit_quantity - FOREIGN KEY (id_unit_quantity) - REFERENCES Shop_Unit_Measurement(id_unit), - quantity_received INTEGER NULL, - display_order INTEGER NOT NULL, - */ - active BOOLEAN NOT NULL DEFAULT TRUE, - created_on TIMESTAMP, - created_by INT, - updated_last_on TIMESTAMP NULL, - created_last_by VARCHAR(100) NULL, - id_change_set INTEGER NULL, - CONSTRAINT FK_Shop_Customer_Sales_Order_id_change_set - FOREIGN KEY (id_change_set) - REFERENCES Shop_Sales_And_Purchasing_Change_Set(id_change_set) -); diff --git a/static/PostgreSQL/188_tbl_Shop_Customer_Sales_Order_Audit.sql b/static/PostgreSQL/188_tbl_Shop_Customer_Sales_Order_Audit.sql deleted file mode 100644 index ff12450c..00000000 --- a/static/PostgreSQL/188_tbl_Shop_Customer_Sales_Order_Audit.sql +++ /dev/null @@ -1,22 +0,0 @@ - --- Customer Sales Order Audits - - - -SELECT CONCAT('WARNING: Table ', TABLE_NAME, ' already exists.') AS msg_warning FROM INFORMATION_SCHEMA.TABLES WHERE TABLE_NAME = 'Shop_Customer_Sales_Order_Audit'; - -CREATE TABLE IF NOT EXISTS Shop_Customer_Sales_Order_Audit ( - id_audit INTEGER NOT NULL PRIMARY KEY GENERATED ALWAYS AS IDENTITY, - id_order INTEGER NOT NULL, - CONSTRAINT FK_Shop_Customer_Sales_Order_Audit_id_order - FOREIGN KEY (id_order) - REFERENCES Shop_Customer_Sales_Order(id_order) - ON UPDATE RESTRICT, - name_field VARCHAR(50), - value_prev VARCHAR(10), - value_new VARCHAR(10), - id_change_set INTEGER NOT NULL, - CONSTRAINT FK_Shop_Customer_Sales_Order_Audit_id_change_set - FOREIGN KEY (id_change_set) - REFERENCES Shop_Sales_And_Purchasing_Change_Set(id_change_set) -); diff --git a/static/PostgreSQL/189_tbl_Shop_Customer_Sales_Order_Product_Link.sql b/static/PostgreSQL/189_tbl_Shop_Customer_Sales_Order_Product_Link.sql deleted file mode 100644 index 058f16b7..00000000 --- a/static/PostgreSQL/189_tbl_Shop_Customer_Sales_Order_Product_Link.sql +++ /dev/null @@ -1,38 +0,0 @@ - --- Customer Sales Order Product Link - - - -SELECT CONCAT('WARNING: Table ', TABLE_NAME, ' already exists.') AS msg_warning FROM INFORMATION_SCHEMA.TABLES WHERE TABLE_NAME = 'Shop_Customer_Sales_Order_Product_Link'; - -CREATE TABLE IF NOT EXISTS Shop_Customer_Sales_Order_Product_Link ( - id_link INTEGER NOT NULL PRIMARY KEY GENERATED ALWAYS AS IDENTITY, - id_order INTEGER NOT NULL, - CONSTRAINT FK_Shop_Customer_Sales_Order_Product_Link_id_order - FOREIGN KEY (id_order) - REFERENCES Shop_Customer_Sales_Order(id_order), - id_permutation INTEGER NOT NULL, - CONSTRAINT FK_Shop_Customer_Sales_Order_Product_Link_id_permutation - FOREIGN KEY (id_permutation) - REFERENCES Shop_Product_Permutation(id_permutation), - price_total_local REAL NOT NULL, - id_currency_price INTEGER NOT NULL, - quantity_ordered REAL NOT NULL, - id_unit_quantity INTEGER NOT NULL, - CONSTRAINT FK_Shop_Customer_Sales_Order_Product_Link_id_unit_quantity - FOREIGN KEY (id_unit_quantity) - REFERENCES Shop_Unit_Measurement(id_unit_measurement), - quantity_delivered REAL NOT NULL, - latency_delivery_days INTEGER NOT NULL, - display_order INTEGER NOT NULL, - - active BOOLEAN NOT NULL, - created_on TIMESTAMP, - created_by INT, - updated_last_on TIMESTAMP NULL, - created_last_by VARCHAR(100) NULL, - id_change_set INTEGER NULL, - CONSTRAINT FK_Shop_Customer_Sales_Order_Product_Link_id_change_set - FOREIGN KEY (id_change_set) - REFERENCES Shop_Sales_And_Purchasing_Change_Set(id_change_set) -); diff --git a/static/PostgreSQL/190_tbl_Shop_Customer_Sales_Order_Product_Link_Audit.sql b/static/PostgreSQL/190_tbl_Shop_Customer_Sales_Order_Product_Link_Audit.sql deleted file mode 100644 index a2da163b..00000000 --- a/static/PostgreSQL/190_tbl_Shop_Customer_Sales_Order_Product_Link_Audit.sql +++ /dev/null @@ -1,22 +0,0 @@ - --- Customer Sales Order Product Link Audits - - - -SELECT CONCAT('WARNING: Table ', TABLE_NAME, ' already exists.') AS msg_warning FROM INFORMATION_SCHEMA.TABLES WHERE TABLE_NAME = 'Shop_Customer_Sales_Order_Product_Link_Audit'; - -CREATE TABLE IF NOT EXISTS Shop_Customer_Sales_Order_Product_Link_Audit ( - id_audit INTEGER NOT NULL PRIMARY KEY GENERATED ALWAYS AS IDENTITY, - id_link INTEGER NOT NULL, - CONSTRAINT FK_Shop_Customer_Sales_Order_Product_Link_Audit_id_link - FOREIGN KEY (id_link) - REFERENCES Shop_Customer_Sales_Order_Product_Link(id_link) - ON UPDATE RESTRICT, - name_field VARCHAR(50), - value_prev VARCHAR(10), - value_new VARCHAR(10), - id_change_set INTEGER NOT NULL, - CONSTRAINT FK_Shop_Customer_Sales_Order_Product_Link_Audit_id_change_set - FOREIGN KEY (id_change_set) - REFERENCES Shop_Sales_And_Purchasing_Change_Set(id_change_set) -); diff --git a/static/PostgreSQL/191_tbl_Shop_Customer_Sales_Order_Product_Link_Temp.sql b/static/PostgreSQL/191_tbl_Shop_Customer_Sales_Order_Product_Link_Temp.sql deleted file mode 100644 index 3a6e352c..00000000 --- a/static/PostgreSQL/191_tbl_Shop_Customer_Sales_Order_Product_Link_Temp.sql +++ /dev/null @@ -1,34 +0,0 @@ - --- Customer Sales Order Product Link Temp - - - --- DROP TABLE Shop_Customer_Sales_Order_Product_Link_Temp; - -SELECT CONCAT('WARNING: Table ', TABLE_NAME, ' already exists.') AS msg_warning FROM INFORMATION_SCHEMA.TABLES WHERE TABLE_NAME = 'Shop_Customer_Sales_Order_Product_Link_Temp'; - -CREATE TABLE IF NOT EXISTS Shop_Customer_Sales_Order_Product_Link_Temp ( - id_link INTEGER NOT NULL PRIMARY KEY, - GUID UUID NOT NULL, - id_order INTEGER NOT NULL, - /* - CONSTRAINT FK_Customer_Sales_Order_Product_Link_Temp_id_order - FOREIGN KEY (id_order) - REFERENCES Shop_Customer_Sales_Order(id_order), - */ - id_permutation INTEGER NOT NULL, - CONSTRAINT FK_Customer_Sales_Order_Product_Link_Temp_id_permutation - FOREIGN KEY (id_permutation) - REFERENCES Shop_Product_Permutation(id_permutation), - price_total_local REAL NOT NULL, - id_currency_price INTEGER NOT NULL, - quantity_ordered REAL NOT NULL, - id_unit_quantity INTEGER NOT NULL, - CONSTRAINT FK_Customer_Sales_Order_Product_Link_Temp_id_unit_quantity - FOREIGN KEY (id_unit_quantity) - REFERENCES Shop_Unit_Measurement(id_unit_measurement), - quantity_delivered REAL NULL, - latency_delivery_days INTEGER NOT NULL, - display_order INTEGER NOT NULL, - active BOOLEAN NOT NULL -); diff --git a/static/PostgreSQL/300.2_tri_Shop_Sales_And_Purchasing_Change_Set.sql b/static/PostgreSQL/300.2_tri_Shop_Sales_And_Purchasing_Change_Set.sql deleted file mode 100644 index 044661bf..00000000 --- a/static/PostgreSQL/300.2_tri_Shop_Sales_And_Purchasing_Change_Set.sql +++ /dev/null @@ -1,26 +0,0 @@ - -DO $$ -BEGIN - RAISE NOTICE 'TABLE CREATION COMPLETE'; -END $$; - --- Product Change Set - -CREATE OR REPLACE FUNCTION before_insert_Shop_Sales_And_Purchasing_Change_Set() -RETURNS TRIGGER AS $$ -BEGIN - IF NEW.updated_last_on IS NULL THEN - NEW.updated_last_on = CURRENT_TIMESTAMP; - END IF; - IF NEW.updated_last_by IS NULL THEN - NEW.updated_last_by = CURRENT_USER; - END IF; - RETURN NEW; -END; -$$ LANGUAGE plpgsql; - -CREATE OR REPLACE TRIGGER tri_before_insert_Shop_Sales_And_Purchasing_Change_Set -BEFORE INSERT ON Shop_Sales_And_Purchasing_Change_Set -FOR EACH ROW -EXECUTE FUNCTION before_insert_Shop_Sales_And_Purchasing_Change_Set(); - diff --git a/static/PostgreSQL/301.1_tri_Shop_User_Change_Set.sql b/static/PostgreSQL/301.1_tri_Shop_User_Change_Set.sql deleted file mode 100644 index 0e5fdb16..00000000 --- a/static/PostgreSQL/301.1_tri_Shop_User_Change_Set.sql +++ /dev/null @@ -1,20 +0,0 @@ - --- Shop User Change Set - -CREATE OR REPLACE FUNCTION before_insert_Shop_User_Change_Set() -RETURNS TRIGGER AS $$ -BEGIN - IF NEW.updated_last_on IS NULL THEN - NEW.updated_last_on = CURRENT_TIMESTAMP; - END IF; - IF NEW.updated_last_by IS NULL THEN - NEW.updated_last_by = CURRENT_USER; - END IF; - RETURN NEW; -END; -$$ LANGUAGE plpgsql; - -CREATE OR REPLACE TRIGGER tri_before_insert_Shop_User_Change_Set -BEFORE INSERT ON Shop_User_Change_Set -FOR EACH ROW -EXECUTE FUNCTION before_insert_Shop_User_Change_Set(); diff --git a/static/PostgreSQL/301.2_tri_Shop_Access_Level.sql b/static/PostgreSQL/301.2_tri_Shop_Access_Level.sql deleted file mode 100644 index d4175132..00000000 --- a/static/PostgreSQL/301.2_tri_Shop_Access_Level.sql +++ /dev/null @@ -1,66 +0,0 @@ - --- Shop Access Level - -CREATE OR REPLACE FUNCTION before_insert_Shop_Access_Level() -RETURNS TRIGGER AS $$ -BEGIN - IF NEW.created_on IS NULL THEN - NEW.created_on = CURRENT_TIMESTAMP; - END IF; - IF NEW.created_by IS NULL THEN - NEW.created_by = CURRENT_USER; - END IF; - RETURN NEW; -END; -$$ LANGUAGE plpgsql; - -CREATE OR REPLACE TRIGGER tri_before_insert_Shop_Access_Level -BEFORE INSERT ON Shop_Access_Level -FOR EACH ROW -EXECUTE FUNCTION before_insert_Shop_Access_Level(); - - -CREATE OR REPLACE FUNCTION before_update_Shop_Access_Level() -RETURNS TRIGGER AS $$ -BEGIN - IF OLD.id_change_set IS NOT DISTINCT FROM NEW.id_change_set THEN - RAISE EXCEPTION 'New change Set ID must be provided.' - USING ERRCODE = '45000'; - END IF; - - INSERT INTO Shop_Access_Level_Audit ( - id_access_level, - name_field, - value_prev, - value_new, - id_change_set - ) - -- Changed code - SELECT NEW.id_access_level, 'code', OLD.code, NEW.code, NEW.id_change_set - WHERE NOT (OLD.code <=> NEW.code) - UNION - -- Changed name - SELECT NEW.id_access_level, 'name', OLD.name, NEW.name, NEW.id_change_set - WHERE NOT (OLD.name <=> NEW.name) - UNION - -- Changed priority - SELECT NEW.id_access_level, 'priority', CONVERT(OLD.priority, CHAR), CONVERT(NEW.priority, CHAR), NEW.id_change_set - WHERE NOT (OLD.priority <=> NEW.priority) - UNION - -- Changed active - SELECT NEW.id_access_level, 'active', CONVERT(CONVERT(OLD.active, SIGNED), CHAR), CONVERT(CONVERT(NEW.active, SIGNED), CHAR), NEW.id_change_set - WHERE NOT (OLD.active <=> NEW.active) - UNION - -- Changed display_order - SELECT NEW.id_access_level, 'display_order', CONVERT(OLD.display_order, CHAR), CONVERT(NEW.display_order, CHAR), NEW.id_change_set - WHERE NOT OLD.display_order <=> NEW.display_order - ; - - RETURN NEW; -END; -$$ LANGUAGE plpgsql; - -CREATE OR REPLACE TRIGGER tri_before_update_Shop_Access_Level -BEFORE UPDATE ON Shop_Access_Level -FOR EACH ROW -EXECUTE FUNCTION before_update_Shop_Access_Level(); diff --git a/static/PostgreSQL/301_tri_Shop_Product_Change_Set.sql b/static/PostgreSQL/301_tri_Shop_Product_Change_Set.sql deleted file mode 100644 index d2a67f54..00000000 --- a/static/PostgreSQL/301_tri_Shop_Product_Change_Set.sql +++ /dev/null @@ -1,22 +0,0 @@ - --- Product Change Set - - - -CREATE OR REPLACE FUNCTION before_insert_Shop_Product_Change_Set() -RETURNS TRIGGER AS $$ -BEGIN - IF NEW.updated_last_on IS NULL THEN - NEW.updated_last_on = CURRENT_TIMESTAMP; - END IF; - IF NEW.updated_last_by IS NULL THEN - NEW.updated_last_by = CURRENT_USER; - END IF; - RETURN NEW; -END; -$$ LANGUAGE plpgsql; - -CREATE OR REPLACE TRIGGER tri_before_insert_Shop_Product_Change_Set -BEFORE INSERT ON Shop_Product_Change_Set -FOR EACH ROW -EXECUTE FUNCTION before_insert_Shop_Product_Change_Set(); diff --git a/static/PostgreSQL/302_tri_File_Type.sql b/static/PostgreSQL/302_tri_File_Type.sql deleted file mode 100644 index 4eacb9a8..00000000 --- a/static/PostgreSQL/302_tri_File_Type.sql +++ /dev/null @@ -1,48 +0,0 @@ - --- File Type - -CREATE OR REPLACE FUNCTION before_insert_File_Type() -RETURNS TRIGGER AS $$ -BEGIN - NEW.created_on = CURRENT_TIMESTAMP; - NEW.created_by = CURRENT_USER; - RETURN NEW; -END; -$$ LANGUAGE plpgsql; - -CREATE OR REPLACE TRIGGER tri_before_insert_File_Type -BEFORE INSERT ON File_Type -FOR EACH ROW -EXECUTE FUNCTION before_insert_File_Type(); - - -CREATE OR REPLACE FUNCTION before_update_File_Type() -RETURNS TRIGGER AS $$ -BEGIN - INSERT INTO File_Type_Audit ( - id_type, - name_field, - value_prev, - value_new - ) - -- Changed code - SELECT NEW.id_type, 'code', OLD.code, NEW.code - WHERE NOT OLD.code <=> NEW.code - UNION - -- Changed name - SELECT NEW.id_type, 'name', OLD.name, NEW.name - WHERE NOT OLD.name <=> NEW.name - UNION - -- Changed extension - SELECT NEW.id_type, 'extension', CONVERT(OLD.extension, CHAR), CONVERT(NEW.extension, CHAR) - WHERE NOT OLD.extension <=> NEW.extension - ; - - RETURN NEW; -END; -$$ LANGUAGE plpgsql; - -CREATE OR REPLACE TRIGGER tri_before_update_File_Type -BEFORE UPDATE ON File_Type -FOR EACH ROW -EXECUTE FUNCTION before_update_File_Type(); diff --git a/static/PostgreSQL/303_tri_File_Type_Audit.sql b/static/PostgreSQL/303_tri_File_Type_Audit.sql deleted file mode 100644 index 7c8ba354..00000000 --- a/static/PostgreSQL/303_tri_File_Type_Audit.sql +++ /dev/null @@ -1,33 +0,0 @@ - --- File Type Audits - -CREATE OR REPLACE FUNCTION before_insert_File_Type_Audit() -RETURNS TRIGGER AS $$ -BEGIN - NEW.created_on = CURRENT_TIMESTAMP; - NEW.created_by = CURRENT_USER; - - RETURN NEW; -END; -$$ LANGUAGE plpgsql; - -CREATE OR REPLACE TRIGGER tri_before_insert_File_Type_Audit -BEFORE INSERT ON File_Type_Audit -FOR EACH ROW -EXECUTE FUNCTION before_insert_File_Type_Audit(); - - -CREATE OR REPLACE FUNCTION before_update_File_Type_Audit() -RETURNS TRIGGER AS $$ -BEGIN - NEW.updated_last_on = CURRENT_TIMESTAMP; - NEW.updated_last_by = CURRENT_USER; - - RETURN NEW; -END; -$$ LANGUAGE plpgsql; - -CREATE OR REPLACE TRIGGER tri_before_update_File_Type_Audit -BEFORE UPDATE ON File_Type_Audit -FOR EACH ROW -EXECUTE FUNCTION before_update_File_Type_Audit(); \ No newline at end of file diff --git a/static/PostgreSQL/304_tri_Shop_General.sql b/static/PostgreSQL/304_tri_Shop_General.sql deleted file mode 100644 index 3628912b..00000000 --- a/static/PostgreSQL/304_tri_Shop_General.sql +++ /dev/null @@ -1,47 +0,0 @@ - --- Shop General - -CREATE OR REPLACE FUNCTION before_insert_Shop_General() -RETURNS TRIGGER AS $$ -BEGIN - NEW.created_on = CURRENT_TIMESTAMP; - NEW.created_by = CURRENT_USER; - - RETURN NEW; -END; -$$ LANGUAGE plpgsql; - -CREATE OR REPLACE TRIGGER tri_before_insert_Shop_General -BEFORE INSERT ON Shop_General -FOR EACH ROW -EXECUTE FUNCTION before_insert_Shop_General(); - - -CREATE OR REPLACE FUNCTION before_update_Shop_General() -RETURNS TRIGGER AS $$ -BEGIN - IF OLD.id_change_set IS NOT DISTINCT FROM NEW.id_change_set THEN - RAISE EXCEPTION 'New change Set ID must be provided.' - USING ERRCODE = '45000'; - END IF; - - INSERT INTO Shop_General_Audit ( - id_general, - name_field, - value_prev, - value_new, - id_change_set - ) - -- Changed quantity max - SELECT NEW.id_general, 'quantity_max', CONVERT(OLD.quantity_max, CHAR), CONVERT(NEW.quantity_max, CHAR), NEW.id_change_set - WHERE NOT OLD.quantity_max <=> NEW.quantity_max - ; - - RETURN NEW; -END; -$$ LANGUAGE plpgsql; - -CREATE OR REPLACE TRIGGER tri_before_update_Shop_General -BEFORE UPDATE ON Shop_General -FOR EACH ROW -EXECUTE FUNCTION before_update_Shop_General(); \ No newline at end of file diff --git a/static/PostgreSQL/306_tri_Shop_Category.sql b/static/PostgreSQL/306_tri_Shop_Category.sql deleted file mode 100644 index 727212ba..00000000 --- a/static/PostgreSQL/306_tri_Shop_Category.sql +++ /dev/null @@ -1,63 +0,0 @@ - --- Shop Category - -CREATE OR REPLACE FUNCTION before_insert_Shop_Product_Category() -RETURNS TRIGGER AS $$ -BEGIN - NEW.created_on = CURRENT_TIMESTAMP; - NEW.created_by = CURRENT_USER; - - RETURN NEW; -END; -$$ LANGUAGE plpgsql; - -CREATE OR REPLACE TRIGGER tri_before_insert_Shop_Product_Category -BEFORE INSERT ON Shop_Product_Category -FOR EACH ROW -EXECUTE FUNCTION before_insert_Shop_Product_Category(); - - -CREATE OR REPLACE FUNCTION before_update_Shop_Product_Category() -RETURNS TRIGGER AS $$ -BEGIN - IF OLD.id_change_set IS NOT DISTINCT FROM NEW.id_change_set THEN - RAISE EXCEPTION 'New change Set ID must be provided.' - USING ERRCODE = '45000'; - END IF; - - INSERT INTO Shop_Product_Category_Audit ( - id_category, - name_field, - value_prev, - value_new, - id_change_set - ) - -- Changed code - SELECT NEW.id_category, 'code', OLD.code, NEW.code, NEW.id_change_set - WHERE NOT OLD.code <=> NEW.code - UNION - -- Changed name - SELECT NEW.id_category, 'name', OLD.name, NEW.name, NEW.id_change_set - WHERE NOT OLD.name <=> NEW.name - UNION - -- Changed description - SELECT NEW.id_category, 'description', OLD.description, NEW.description, NEW.id_change_set - WHERE NOT OLD.description <=> NEW.description - UNION - -- Changed active - SELECT NEW.id_category, 'active', CONVERT(CONVERT(OLD.active, SIGNED), CHAR), CONVERT(CONVERT(NEW.active, SIGNED), CHAR), NEW.id_change_set - WHERE NOT (OLD.active <=> NEW.active) - UNION - -- Changed display_order - SELECT NEW.id_category, 'display_order', CONVERT(OLD.display_order, CHAR), CONVERT(NEW.display_order, CHAR), NEW.id_change_set - WHERE NOT OLD.display_order <=> NEW.display_order - ; - - RETURN NEW; -END; -$$ LANGUAGE plpgsql; - -CREATE OR REPLACE TRIGGER tri_before_update_Shop_Product_Category -BEFORE UPDATE ON Shop_Product_Category -FOR EACH ROW -EXECUTE FUNCTION before_update_Shop_Product_Category(); diff --git a/static/PostgreSQL/308_tri_Shop_Recurrence_Interval.sql b/static/PostgreSQL/308_tri_Shop_Recurrence_Interval.sql deleted file mode 100644 index 0a82210f..00000000 --- a/static/PostgreSQL/308_tri_Shop_Recurrence_Interval.sql +++ /dev/null @@ -1,59 +0,0 @@ - --- Shop Recurrence Interval - -CREATE OR REPLACE FUNCTION before_insert_Shop_Interval_Recurrence() -RETURNS TRIGGER AS $$ -BEGIN - NEW.created_on = CURRENT_TIMESTAMP; - NEW.created_by = CURRENT_USER; - - RETURN NEW; -END; -$$ LANGUAGE plpgsql; - -CREATE OR REPLACE TRIGGER tri_before_insert_Shop_Interval_Recurrence -BEFORE INSERT ON Shop_Interval_Recurrence -FOR EACH ROW -EXECUTE FUNCTION before_insert_Shop_Interval_Recurrence(); - - -CREATE OR REPLACE FUNCTION before_update_Shop_Interval_Recurrence() -RETURNS TRIGGER AS $$ -BEGIN - IF OLD.id_change_set IS NOT DISTINCT FROM NEW.id_change_set THEN - RAISE EXCEPTION 'New change Set ID must be provided.' - USING ERRCODE = '45000'; - END IF; - - INSERT INTO Shop_Interval_Recurrence_Audit ( - id_interval, - name_field, - value_prev, - value_new, - id_change_set - ) - -- Changed code - SELECT NEW.id_interval, 'code', OLD.code, NEW.code, NEW.id_change_set - WHERE NOT OLD.code <=> NEW.code - UNION - -- Changed name - SELECT NEW.id_interval, 'name', OLD.name, NEW.name, NEW.id_change_set - WHERE NOT OLD.name <=> NEW.name - UNION - -- Changed name_plural - SELECT NEW.id_interval, 'name_plural', OLD.name_plural, NEW.name_plural, NEW.id_change_set - WHERE NOT OLD.name_plural <=> NEW.name_plural - UNION - -- Changed name - SELECT NEW.id_interval, 'active', OLD.active, NEW.active, NEW.id_change_set - WHERE NOT OLD.active <=> NEW.active - ; - - RETURN NEW; -END; -$$ LANGUAGE plpgsql; - -CREATE OR REPLACE TRIGGER tri_before_update_Shop_Interval_Recurrence -BEFORE UPDATE ON Shop_Interval_Recurrence -FOR EACH ROW -EXECUTE FUNCTION before_update_Shop_Interval_Recurrence(); diff --git a/static/PostgreSQL/310.0_tri_Shop_Region.sql b/static/PostgreSQL/310.0_tri_Shop_Region.sql deleted file mode 100644 index cb76b90c..00000000 --- a/static/PostgreSQL/310.0_tri_Shop_Region.sql +++ /dev/null @@ -1,59 +0,0 @@ - --- Shop Delivery Region - -CREATE OR REPLACE FUNCTION before_insert_Shop_Region() -RETURNS TRIGGER AS $$ -BEGIN - NEW.created_on = CURRENT_TIMESTAMP; - NEW.created_by = CURRENT_USER; - - RETURN NEW; -END; -$$ LANGUAGE plpgsql; - -CREATE OR REPLACE TRIGGER tri_before_insert_Shop_Region -BEFORE INSERT ON Shop_Region -FOR EACH ROW -EXECUTE FUNCTION before_insert_Shop_Region(); - - -CREATE OR REPLACE FUNCTION before_update_Shop_Region() -RETURNS TRIGGER AS $$ -BEGIN - IF OLD.id_change_set IS NOT DISTINCT FROM NEW.id_change_set THEN - RAISE EXCEPTION 'New change Set ID must be provided.' - USING ERRCODE = '45000'; - END IF; - - INSERT INTO Shop_Region_Audit ( - id_region, - name_field, - value_prev, - value_new, - id_change_set - ) - -- Changed code - SELECT NEW.id_region, 'code', OLD.code, NEW.code, NEW.id_change_set - WHERE NOT OLD.code <=> NEW.code - UNION - -- Changed name - SELECT NEW.id_region, 'name', OLD.name, NEW.name, NEW.id_change_set - WHERE NOT OLD.name <=> NEW.name - UNION - -- Changed active - SELECT NEW.id_region, 'active', CONVERT(OLD.active, CHAR), CONVERT(NEW.active, CHAR), NEW.id_change_set - WHERE NOT OLD.active <=> NEW.active - UNION - -- Changed display_order - SELECT NEW.id_region, 'display_order', CONVERT(OLD.display_order, CHAR), CONVERT(NEW.display_order, CHAR), NEW.id_change_set - WHERE NOT OLD.display_order <=> NEW.display_order - ; - - RETURN NEW; -END; -$$ LANGUAGE plpgsql; - -CREATE OR REPLACE TRIGGER tri_before_update_Shop_Region -BEFORE UPDATE ON Shop_Region -FOR EACH ROW -EXECUTE FUNCTION before_update_Shop_Region(); diff --git a/static/PostgreSQL/310.2_tri_Shop_Region_Branch.sql b/static/PostgreSQL/310.2_tri_Shop_Region_Branch.sql deleted file mode 100644 index 8192c4c7..00000000 --- a/static/PostgreSQL/310.2_tri_Shop_Region_Branch.sql +++ /dev/null @@ -1,57 +0,0 @@ - --- Shop Region Branch - -CREATE OR REPLACE FUNCTION before_insert_Shop_Region_Branch() -RETURNS TRIGGER AS $$ -BEGIN - NEW.created_on = CURRENT_TIMESTAMP; - NEW.created_by = CURRENT_USER; - - RETURN NEW; -END; -$$ LANGUAGE plpgsql; - -CREATE OR REPLACE TRIGGER tri_before_insert_Shop_Region_Branch -BEFORE INSERT ON Shop_Region_Branch -FOR EACH ROW -EXECUTE FUNCTION before_insert_Shop_Region_Branch(); - - -CREATE OR REPLACE FUNCTION before_update_Shop_Region_Branch() -RETURNS TRIGGER AS $$ -BEGIN - IF OLD.id_change_set IS NOT DISTINCT FROM NEW.id_change_set THEN - RAISE EXCEPTION 'New change Set ID must be provided.' - USING ERRCODE = '45000'; - END IF; - - INSERT INTO Shop_Region_Branch_Audit ( - id_branch, - name_field, - value_prev, - value_new, - id_change_set - ) - /* - -- Changed depth - SELECT NEW.id_branch, 'depth', CONVERT(OLD.depth, CHAR), CONVERT(NEW.depth, CHAR), NEW.id_change_set - WHERE NOT OLD.depth <=> NEW.depth - UNION - */ - -- Changed active - SELECT NEW.id_branch, 'active', CONVERT(OLD.active, CHAR), CONVERT(NEW.active, CHAR), NEW.id_change_set - WHERE NOT OLD.active <=> NEW.active - UNION - -- Changed display_order - SELECT NEW.id_branch, 'display_order', CONVERT(OLD.display_order, CHAR), CONVERT(NEW.display_order, CHAR), NEW.id_change_set - WHERE NOT OLD.display_order <=> NEW.display_order - ; - - RETURN NEW; -END; -$$ LANGUAGE plpgsql; - -CREATE OR REPLACE TRIGGER tri_before_update_Shop_Region_Branch -BEFORE UPDATE ON Shop_Region_Branch -FOR EACH ROW -EXECUTE FUNCTION before_update_Shop_Region_Branch(); diff --git a/static/PostgreSQL/310.4_tri_Shop_Currency.sql b/static/PostgreSQL/310.4_tri_Shop_Currency.sql deleted file mode 100644 index 325344e6..00000000 --- a/static/PostgreSQL/310.4_tri_Shop_Currency.sql +++ /dev/null @@ -1,71 +0,0 @@ - --- Shop Currency - -CREATE OR REPLACE FUNCTION before_insert_Shop_Currency() -RETURNS TRIGGER AS $$ -BEGIN - IF NEW.created_on IS NULL THEN - NEW.created_on = CURRENT_TIMESTAMP; - END IF; - IF NEW.created_by IS NULL THEN - NEW.created_by = CURRENT_USER; - END IF; - - RETURN NEW; -END; -$$ LANGUAGE plpgsql; - -CREATE OR REPLACE TRIGGER tri_before_insert_Shop_Currency -BEFORE INSERT ON Shop_Currency -FOR EACH ROW -EXECUTE FUNCTION before_insert_Shop_Currency(); - - -CREATE OR REPLACE FUNCTION before_update_Shop_Currency() -RETURNS TRIGGER AS $$ -BEGIN - IF OLD.id_change_set IS NOT DISTINCT FROM NEW.id_change_set THEN - RAISE EXCEPTION 'New change Set ID must be provided.' - USING ERRCODE = '45000'; - END IF; - - INSERT INTO Shop_Currency_Audit ( - id_currency, - name_field, - value_prev, - value_new, - id_change_set - ) - -- Changed code - SELECT NEW.id_currency, 'code', OLD.code, NEW.code, NEW.id_change_set - WHERE NOT OLD.code <=> NEW.code - UNION - -- Changed name - SELECT NEW.id_currency, 'name', OLD.name, NEW.name, NEW.id_change_set - WHERE NOT OLD.name <=> NEW.name - UNION - -- Changed symbol - SELECT NEW.id_currency, 'symbol', OLD.symbol, NEW.symbol, NEW.id_change_set - WHERE NOT OLD.symbol <=> NEW.symbol - UNION - -- Changed ratio_2_GBP - SELECT NEW.id_currency, 'factor_from_GBP', OLD.factor_from_GBP, NEW.factor_from_GBP, NEW.id_change_set - WHERE NOT OLD.factor_from_GBP <=> NEW.factor_from_GBP - UNION - -- Changed active - SELECT NEW.id_currency, 'active', CONVERT(CONVERT(OLD.active, SIGNED), CHAR), CONVERT(CONVERT(NEW.active, SIGNED), CHAR), NEW.id_change_set - WHERE NOT (OLD.active <=> NEW.active) - UNION - -- Changed display_order - SELECT NEW.id_currency, 'display_order', CONVERT(display_order, CHAR), CONVERT(display_order, CHAR), NEW.id_change_set - WHERE NOT (OLD.display_order <=> NEW.display_order) - ; - - RETURN NEW; -END; -$$ LANGUAGE plpgsql; - -CREATE OR REPLACE TRIGGER tri_before_update_Shop_Currency -BEFORE UPDATE ON Shop_Currency -FOR EACH ROW -EXECUTE FUNCTION before_update_Shop_Currency(); diff --git a/static/PostgreSQL/310.6_tri_Shop_Tax_Or_Surcharge.sql b/static/PostgreSQL/310.6_tri_Shop_Tax_Or_Surcharge.sql deleted file mode 100644 index bb1a86ca..00000000 --- a/static/PostgreSQL/310.6_tri_Shop_Tax_Or_Surcharge.sql +++ /dev/null @@ -1,80 +0,0 @@ - --- Shop Tax_Or_Surcharge - -CREATE OR REPLACE FUNCTION before_insert_Shop_Tax_Or_Surcharge() -RETURNS TRIGGER AS $$ -BEGIN - NEW.created_on = CURRENT_TIMESTAMP; - NEW.created_by = CURRENT_USER; - - RETURN NEW; -END; -$$ LANGUAGE plpgsql; - -CREATE OR REPLACE TRIGGER tri_before_insert_Shop_Tax_Or_Surcharge -BEFORE INSERT ON Shop_Tax_Or_Surcharge -FOR EACH ROW -EXECUTE FUNCTION before_insert_Shop_Tax_Or_Surcharge(); - - -CREATE OR REPLACE FUNCTION before_update_Shop_Tax_Or_Surcharge() -RETURNS TRIGGER AS $$ -BEGIN - IF OLD.id_change_set IS NOT DISTINCT FROM NEW.id_change_set THEN - RAISE EXCEPTION 'New change Set ID must be provided.' - USING ERRCODE = '45000'; - END IF; - - INSERT INTO Shop_Tax_Or_Surcharge_Audit ( - id_tax, - name_field, - value_prev, - value_new, - id_change_set - ) - -- Changed code - SELECT NEW.id_tax, 'code', OLD.code, NEW.code, NEW.id_change_set - WHERE NOT OLD.code <=> NEW.code - UNION - -- Changed name - SELECT NEW.id_tax, 'name', OLD.name, NEW.name, NEW.id_change_set - WHERE NOT OLD.name <=> NEW.name - UNION - -- Changed fixed_fee - SELECT NEW.id_tax, 'fixed_fee', OLD.fixed_fee, NEW.fixed_fee, NEW.id_change_set - WHERE NOT OLD.fixed_fee <=> NEW.fixed_fee - UNION - -- Changed multiplier - SELECT NEW.id_tax, 'multiplier', OLD.multiplier, NEW.multiplier, NEW.id_change_set - WHERE NOT OLD.multiplier <=> NEW.multiplier - UNION - -- Changed apply_fixed_fee_before_multiplier - SELECT NEW.id_tax, 'apply_fixed_fee_before_multiplier', CONVERT(CONVERT(OLD.apply_fixed_fee_before_multiplier, SIGNED), CHAR), CONVERT(CONVERT(NEW.apply_fixed_fee_before_multiplier, SIGNED), CHAR), NEW.id_change_set - WHERE NOT OLD.apply_fixed_fee_before_multiplier <=> NEW.apply_fixed_fee_before_multiplier - UNION - -- Changed quantity_min - SELECT NEW.id_tax, 'quantity_min', OLD.quantity_min, NEW.quantity_min, NEW.id_change_set - WHERE NOT OLD.quantity_min <=> NEW.quantity_min - UNION - -- Changed quantity_max - SELECT NEW.id_tax, 'quantity_max', OLD.quantity_max, NEW.quantity_max, NEW.id_change_set - WHERE NOT OLD.quantity_max <=> NEW.quantity_max - UNION - -- Changed display_order - SELECT NEW.id_tax, 'display_order', CONVERT(OLD.display_order, CHAR), CONVERT(NEW.display_order, CHAR), NEW.id_change_set - WHERE NOT OLD.display_order <=> NEW.display_order - UNION - -- Changed active - SELECT NEW.id_tax, 'active', CONVERT(CONVERT(OLD.active, SIGNED), CHAR), CONVERT(CONVERT(NEW.active, SIGNED), CHAR), NEW.id_change_set - WHERE NOT OLD.active <=> NEW.active - ; - - RETURN NEW; -END; -$$ LANGUAGE plpgsql; - -CREATE OR REPLACE TRIGGER tri_before_update_Shop_Tax_Or_Surcharge -BEFORE UPDATE ON Shop_Tax_Or_Surcharge -FOR EACH ROW -EXECUTE FUNCTION before_update_Shop_Tax_Or_Surcharge(); - diff --git a/static/PostgreSQL/310.8_tri_Shop_Product.sql b/static/PostgreSQL/310.8_tri_Shop_Product.sql deleted file mode 100644 index 4f25d19a..00000000 --- a/static/PostgreSQL/310.8_tri_Shop_Product.sql +++ /dev/null @@ -1,173 +0,0 @@ - --- Shop Product - -CREATE OR REPLACE FUNCTION before_insert_Shop_Product() -RETURNS TRIGGER AS $$ -BEGIN - NEW.created_on = CURRENT_TIMESTAMP; - NEW.created_by = CURRENT_USER; - - RETURN NEW; -END; -$$ LANGUAGE plpgsql; - -CREATE OR REPLACE TRIGGER tri_before_insert_Shop_Product -BEFORE INSERT ON Shop_Product -FOR EACH ROW -EXECUTE FUNCTION before_insert_Shop_Product(); - - -CREATE OR REPLACE FUNCTION before_update_Shop_Product() -RETURNS TRIGGER AS $$ -BEGIN - IF OLD.id_change_set IS NOT DISTINCT FROM NEW.id_change_set THEN - RAISE EXCEPTION 'New change Set ID must be provided.' - USING ERRCODE = '45000'; - END IF; - /* - IF NOT NEW.has_variations THEN - IF ISNULL(NEW.price_GBP_full) THEN - SIGNAL SQLSTATE '45000' - SET MESSAGE_TEXT = 'Product must have price or variations (with prices).'; - END IF; - IF ISNULL(NEW.price_GBP_min) THEN - SIGNAL SQLSTATE '45000' - SET MESSAGE_TEXT = 'Product must have minimum price or variations (with prices).'; - END IF; - IF ISNULL(NEW.latency_manuf) THEN - SIGNAL SQLSTATE '45000' - SET MESSAGE_TEXT = 'Product must have manufacturing latency or variations (with manufacturing latencies).'; - END IF; - IF ISNULL(NEW.quantity_min) THEN - SIGNAL SQLSTATE '45000' - SET MESSAGE_TEXT = 'Product must have minimum quantity or variations (with minimum quantities).'; - END IF; - IF ISNULL(NEW.quantity_max) THEN - SIGNAL SQLSTATE '45000' - SET MESSAGE_TEXT = 'Product must have maximum quantity or variations (with maximum quantities).'; - END IF; - IF ISNULL(NEW.quantity_step) THEN - SIGNAL SQLSTATE '45000' - SET MESSAGE_TEXT = 'Product must have increment of quantity or variations (with increments of quantities).'; - END IF; - IF ISNULL(NEW.quantity_stock) THEN - SIGNAL SQLSTATE '45000' - SET MESSAGE_TEXT = 'Product must have stock quantity or variations (with stock quantities).'; - END IF; - IF ISNULL(NEW.is_subscription) THEN - SIGNAL SQLSTATE '45000' - SET MESSAGE_TEXT = 'Product must have subscription status or variations (with subscription statuses).'; - END IF; - IF ISNULL(NEW.id_unit_measurement_interval_recurrence) THEN - SIGNAL SQLSTATE '45000' - SET MESSAGE_TEXT = 'Product must have recurrence interval or variations (with recurrence intervals).'; - END IF; - IF ISNULL(NEW.count_interval_recurrence) THEN - SIGNAL SQLSTATE '45000' - SET MESSAGE_TEXT = 'Product must have recurrence interval count or variations (with recurrence interval counts).'; - END IF; - END IF; - */ - - INSERT INTO Shop_Product_Audit ( - id_product, - name_field, - value_prev, - value_new, - id_change_set - ) - -- Changed name - SELECT NEW.id_product, 'name', OLD.name, NEW.name, NEW.id_change_set - WHERE NOT OLD.name <=> NEW.name - /* - UNION - -- Changed description - SELECT NEW.id_product, 'description', OLD.description, NEW.description, NEW.id_change_set - WHERE NOT OLD.description <=> NEW.description - UNION - -- Changed price_GBP_full - SELECT NEW.id_product, 'price_GBP_full', CONVERT(OLD.price_GBP_full, CHAR), CONVERT(NEW.price_GBP_full, CHAR), NEW.id_change_set - WHERE NOT OLD.price_GBP_full <=> NEW.price_GBP_full - UNION - -- Changed price_GBP_min - SELECT NEW.id_product, 'price_GBP_min', CONVERT(OLD.price_GBP_min, CHAR), CONVERT(NEW.price_GBP_min, CHAR), NEW.id_change_set - WHERE NOT OLD.price_GBP_min <=> NEW.price_GBP_min - UNION - / - -- Changed discount - SELECT NEW.id_product, 'discount', CONVERT(OLD.discount, CHAR), CONVERT(NEW.discount, CHAR), NEW.id_change_set - WHERE NOT OLD.discount <=> NEW.discount - */ - UNION - -- Changed id_category - SELECT NEW.id_product, 'id_category', CONVERT(OLD.id_category, CHAR), CONVERT(NEW.id_category, CHAR), NEW.id_change_set - WHERE NOT OLD.id_category <=> NEW.id_category - UNION - -- Changed has_variations - SELECT NEW.id_product, 'has_variations', CONVERT(CONVERT(NEW.has_variations, SIGNED), CHAR), CONVERT(CONVERT(NEW.has_variations, SIGNED), CHAR), NEW.id_change_set - WHERE NOT OLD.has_variations <=> NEW.has_variations - /* - UNION - -- Changed latency_manuf - SELECT NEW.id_product, 'latency_manuf', CONVERT(OLD.latency_manuf, CHAR), CONVERT(NEW.latency_manuf, CHAR), NEW.id_change_set - WHERE NOT OLD.latency_manuf <=> NEW.latency_manuf - UNION - -- Changed quantity_min - SELECT NEW.id_product, 'quantity_min', CONVERT(OLD.quantity_min, CHAR), CONVERT(NEW.quantity_min, CHAR), NEW.id_change_set - WHERE NOT OLD.quantity_min <=> NEW.quantity_min - UNION - -- Changed quantity_max - SELECT NEW.id_product, 'quantity_max', CONVERT(OLD.quantity_max, CHAR), CONVERT(NEW.quantity_max, CHAR), NEW.id_change_set - WHERE NOT OLD.quantity_max <=> NEW.quantity_max - UNION - -- Changed quantity_step - SELECT NEW.id_product, 'quantity_step', CONVERT(OLD.quantity_step, CHAR), CONVERT(NEW.quantity_step, CHAR), NEW.id_change_set - WHERE NOT OLD.quantity_step <=> NEW.quantity_step - UNION - -- Changed quantity_stock - SELECT NEW.id_product, 'quantity_stock', CONVERT(OLD.quantity_stock, CHAR), CONVERT(NEW.quantity_stock, CHAR), NEW.id_change_set - WHERE NOT OLD.quantity_stock <=> NEW.quantity_stock - UNION - -- Changed is_subscription - SELECT NEW.id_product, 'is_subscription', CONVERT(CONVERT(OLD.is_subscription, SIGNED), CHAR), CONVERT(CONVERT(NEW.is_subscription, SIGNED), CHAR), NEW.id_change_set - WHERE NOT OLD.is_subscription <=> NEW.is_subscription - UNION - -- Changed id_unit_measurement_interval_recurrence - SELECT NEW.id_product, 'id_unit_measurement_interval_recurrence', CONVERT(OLD.id_unit_measurement_interval_recurrence, CHAR), CONVERT(NEW.id_unit_measurement_interval_recurrence, CHAR), NEW.id_change_set - WHERE NOT OLD.id_unit_measurement_interval_recurrence <=> NEW.id_unit_measurement_interval_recurrence - UNION - -- Changed count_interval_recurrence - SELECT NEW.id_product, 'count_interval_recurrence', CONVERT(OLD.count_interval_recurrence, CHAR), CONVERT(NEW.count_interval_recurrence, CHAR), NEW.id_change_set - WHERE NOT OLD.count_interval_recurrence <=> NEW.count_interval_recurrence - UNION - -- Changed id_stripe_product - SELECT NEW.id_product, 'id_stripe_product', OLD.id_stripe_product, NEW.id_stripe_product, NEW.id_change_set - WHERE NOT OLD.id_stripe_product <=> NEW.id_stripe_product - / - UNION - -- Changed id_stripe_price - SELECT NEW.id_product, 'id_stripe_price', OLD.id_stripe_price, NEW.id_stripe_price, NEW.id_change_set - WHERE NOT OLD.id_stripe_price <=> NEW.id_stripe_price - */ - UNION - -- Changed id_access_level_required - SELECT NEW.id_product, 'id_access_level_required', CONVERT(OLD.id_access_level_required, CHAR), CONVERT(NEW.id_access_level_required, CHAR), NEW.id_change_set - WHERE NOT OLD.id_access_level_required <=> NEW.id_access_level_required - UNION - -- Changed active - SELECT NEW.id_product, 'active', CONVERT(CONVERT(OLD.active, SIGNED), CHAR), CONVERT(CONVERT(NEW.active, SIGNED), CHAR), NEW.id_change_set - WHERE NOT (OLD.active <=> NEW.active) - UNION - -- Changed display_order - SELECT NEW.id_product, 'display_order', CONVERT(OLD.display_order, CHAR), CONVERT(NEW.display_order, CHAR), NEW.id_change_set - WHERE NOT OLD.display_order <=> NEW.display_order - ; - - RETURN NEW; -END; -$$ LANGUAGE plpgsql; - -CREATE OR REPLACE TRIGGER tri_before_update_Shop_Product -BEFORE UPDATE ON Shop_Product -FOR EACH ROW -EXECUTE FUNCTION before_update_Shop_Product(); diff --git a/static/PostgreSQL/312_tri_Shop_Variation_Type.sql b/static/PostgreSQL/312_tri_Shop_Variation_Type.sql deleted file mode 100644 index fa23aed3..00000000 --- a/static/PostgreSQL/312_tri_Shop_Variation_Type.sql +++ /dev/null @@ -1,63 +0,0 @@ - --- Shop Variation Type - -CREATE OR REPLACE FUNCTION before_insert_Shop_Variation_Type() -RETURNS TRIGGER AS $$ -BEGIN - NEW.created_on = CURRENT_TIMESTAMP; - NEW.created_by = CURRENT_USER; - - RETURN NEW; -END; -$$ LANGUAGE plpgsql; - -CREATE OR REPLACE TRIGGER tri_before_insert_Shop_Variation_Type -BEFORE INSERT ON Shop_Variation_Type -FOR EACH ROW -EXECUTE FUNCTION before_insert_Shop_Variation_Type(); - - -CREATE OR REPLACE FUNCTION before_update_Shop_Variation_Type() -RETURNS TRIGGER AS $$ -BEGIN - IF OLD.id_change_set IS NOT DISTINCT FROM NEW.id_change_set THEN - RAISE EXCEPTION 'New change Set ID must be provided.' - USING ERRCODE = '45000'; - END IF; - - INSERT INTO Shop_Variation_Type_Audit ( - id_type, - name_field, - value_prev, - value_new, - id_change_set - ) - -- Changed code - SELECT NEW.id_type, 'code', OLD.code, NEW.code, NEW.id_change_set - WHERE NOT OLD.code <=> NEW.code - UNION - -- Changed name - SELECT NEW.id_type, 'name', OLD.name, NEW.name, NEW.id_change_set - WHERE NOT OLD.name <=> NEW.name - UNION - -- Changed name_plural - SELECT NEW.id_type, 'name_plural', OLD.name_plural, NEW.name_plural, NEW.id_change_set - WHERE NOT OLD.name_plural <=> NEW.name_plural - UNION - -- Changed active - SELECT NEW.id_type, 'active', CONVERT(CONVERT(OLD.active, SIGNED), CHAR), CONVERT(CONVERT(NEW.active, SIGNED), CHAR), NEW.id_change_set - WHERE NOT (OLD.active <=> NEW.active) - UNION - -- Changed display_order - SELECT NEW.id_type, 'display_order', CONVERT(OLD.display_order, CHAR), CONVERT(NEW.display_order, CHAR), NEW.id_change_set - WHERE NOT (OLD.display_order <=> NEW.display_order) - ; - - RETURN NEW; -END; -$$ LANGUAGE plpgsql; - -CREATE OR REPLACE TRIGGER tri_before_update_Shop_Variation_Type -BEFORE UPDATE ON Shop_Variation_Type -FOR EACH ROW -EXECUTE FUNCTION before_update_Shop_Variation_Type(); diff --git a/static/PostgreSQL/314_tri_Shop_Variation.sql b/static/PostgreSQL/314_tri_Shop_Variation.sql deleted file mode 100644 index ee5b384f..00000000 --- a/static/PostgreSQL/314_tri_Shop_Variation.sql +++ /dev/null @@ -1,59 +0,0 @@ - --- Shop Variation - -CREATE OR REPLACE FUNCTION before_insert_Shop_Variation() -RETURNS TRIGGER AS $$ -BEGIN - NEW.created_on = CURRENT_TIMESTAMP; - NEW.created_by = CURRENT_USER; - - RETURN NEW; -END; -$$ LANGUAGE plpgsql; - -CREATE OR REPLACE TRIGGER tri_before_insert_Shop_Variation -BEFORE INSERT ON Shop_Variation -FOR EACH ROW -EXECUTE FUNCTION before_insert_Shop_Variation(); - - -CREATE OR REPLACE FUNCTION before_update_Shop_Variation() -RETURNS TRIGGER AS $$ -BEGIN - IF OLD.id_change_set IS NOT DISTINCT FROM NEW.id_change_set THEN - RAISE EXCEPTION 'New change Set ID must be provided.' - USING ERRCODE = '45000'; - END IF; - - INSERT INTO Shop_Variation_Audit ( - id_variation, - name_field, - value_prev, - value_new, - id_change_set - ) - -- Changed code - SELECT NEW.id_variation, 'code', OLD.code, NEW.code, NEW.id_change_set - WHERE NOT OLD.code <=> NEW.code - UNION - -- Changed name - SELECT NEW.id_variation, 'name', OLD.name, NEW.name, NEW.id_change_set - WHERE NOT OLD.name <=> NEW.name - UNION - -- Changed active - SELECT NEW.id_variation, 'active', CONVERT(CONVERT(OLD.active, SIGNED), CHAR), CONVERT(CONVERT(NEW.active, SIGNED), CHAR), NEW.id_change_set - WHERE NOT (OLD.active <=> NEW.active) - UNION - -- Changed display_order - SELECT NEW.id_variation, 'display_order', CONVERT(OLD.display_order, CHAR), CONVERT(NEW.display_order, CHAR), NEW.id_change_set - WHERE NOT (OLD.display_order <=> NEW.display_order) - ; - - RETURN NEW; -END; -$$ LANGUAGE plpgsql; - -CREATE OR REPLACE TRIGGER tri_before_update_Shop_Variation -BEFORE UPDATE ON Shop_Variation -FOR EACH ROW -EXECUTE FUNCTION before_update_Shop_Variation(); diff --git a/static/PostgreSQL/317.1_tri_Shop_Product_Permutation.sql b/static/PostgreSQL/317.1_tri_Shop_Product_Permutation.sql deleted file mode 100644 index 7a43d1e7..00000000 --- a/static/PostgreSQL/317.1_tri_Shop_Product_Permutation.sql +++ /dev/null @@ -1,133 +0,0 @@ - --- Shop Product Permutation - -CREATE OR REPLACE FUNCTION before_insert_Shop_Product_Permutation() -RETURNS TRIGGER AS $$ -BEGIN - IF NEW.created_on IS NULL THEN - NEW.created_on = CURRENT_TIMESTAMP; - END IF; - IF NEW.created_by IS NULL THEN - NEW.created_by = CURRENT_USER; - END IF; - - RETURN NEW; -END; -$$ LANGUAGE plpgsql; - -CREATE OR REPLACE TRIGGER tri_before_insert_Shop_Product_Permutation -BEFORE INSERT ON Shop_Product_Permutation -FOR EACH ROW -EXECUTE FUNCTION before_insert_Shop_Product_Permutation(); - - -CREATE OR REPLACE FUNCTION before_update_Shop_Product_Permutation() -RETURNS TRIGGER AS $$ -BEGIN - IF OLD.id_change_set IS NOT DISTINCT FROM NEW.id_change_set THEN - RAISE EXCEPTION 'New change Set ID must be provided.' - USING ERRCODE = '45000'; - END IF; - - INSERT INTO Shop_Product_Permutation_Audit ( - id_permutation, - name_field, - value_prev, - value_new, - id_change_set - ) - /* - -- Changed id_product - SELECT NEW.id_permutation, 'id_product', OLD.id_product, NEW.id_product, NEW.id_change_set - WHERE NOT OLD.id_product <=> NEW.id_product - UNION - -- Changed id_variation - SELECT NEW.id_permutation, 'id_variation', OLD.id_variation, NEW.id_variation, NEW.id_change_set - WHERE NOT OLD.id_variation <=> NEW.id_variation - UNION - -- Changed name - SELECT NEW.id_permutation, 'name', OLD.name, NEW.name, NEW.id_change_set - WHERE NOT (OLD.name <=> NEW.name) - UNION - */ - -- Changed description - SELECT NEW.id_permutation, 'description', OLD.description, NEW.description, NEW.id_change_set - WHERE NOT (OLD.description <=> NEW.description) - UNION - -- Changed cost_local - SELECT NEW.id_permutation, 'cost_local', CONVERT(OLD.cost_local, CHAR), CONVERT(NEW.cost_local, CHAR), NEW.id_change_set - WHERE NOT (OLD.cost_local <=> NEW.cost_local) - UNION - -- Changed id_currency_cost - SELECT NEW.id_permutation, 'id_currency_cost', CONVERT(OLD.id_currency_cost, CHAR), CONVERT(NEW.id_currency_cost, CHAR), NEW.id_change_set - WHERE NOT (OLD.id_currency_cost <=> NEW.id_currency_cost) - UNION - -- Changed profit_local_min - SELECT NEW.id_permutation, 'profit_local_min', CONVERT(OLD.profit_local_min, CHAR), CONVERT(NEW.profit_local_min, CHAR), NEW.id_change_set - WHERE NOT (OLD.profit_local_min <=> NEW.profit_local_min) - UNION - /* - -- Changed id_currency_profit_min - SELECT NEW.id_permutation, 'id_currency_profit_min', CONVERT(OLD.id_currency_profit_min, CHAR), CONVERT(NEW.id_currency_profit_min, CHAR), NEW.id_change_set - WHERE NOT (OLD.id_currency_profit_min <=> NEW.id_currency_profit_min) - UNION - */ - /* - -- Changed price_GBP_min - SELECT NEW.id_permutation, 'price_GBP_min', CONVERT(OLD.price_GBP_min, CHAR), CONVERT(NEW.price_GBP_min, CHAR), NEW.id_change_set - WHERE NOT (OLD.price_GBP_min <=> NEW.price_GBP_min) - UNION - */ - -- Changed latency_manufacture - SELECT NEW.id_product, 'latency_manufacture', CONVERT(OLD.latency_manufacture, CHAR), CONVERT(NEW.latency_manufacture, CHAR), NEW.id_change_set - WHERE NOT OLD.latency_manufacture <=> NEW.latency_manufacture - UNION - -- Changed quantity_min - SELECT NEW.id_product, 'quantity_min', CONVERT(OLD.quantity_min, CHAR), CONVERT(NEW.quantity_min, CHAR), NEW.id_change_set - WHERE NOT OLD.quantity_min <=> NEW.quantity_min - UNION - -- Changed quantity_max - SELECT NEW.id_product, 'quantity_max', CONVERT(OLD.quantity_max, CHAR), CONVERT(NEW.quantity_max, CHAR), NEW.id_change_set - WHERE NOT OLD.quantity_max <=> NEW.quantity_max - UNION - -- Changed quantity_step - SELECT NEW.id_product, 'quantity_step', CONVERT(OLD.quantity_step, CHAR), CONVERT(NEW.quantity_step, CHAR), NEW.id_change_set - WHERE NOT OLD.quantity_step <=> NEW.quantity_step - UNION - -- Changed quantity_stock - SELECT NEW.id_product, 'quantity_stock', CONVERT(OLD.quantity_stock, CHAR), CONVERT(NEW.quantity_stock, CHAR), NEW.id_change_set - WHERE NOT OLD.quantity_stock <=> NEW.quantity_stock - UNION - -- Changed is_subscription - SELECT NEW.id_product, 'is_subscription', CONVERT(CONVERT(OLD.is_subscription, SIGNED), CHAR), CONVERT(CONVERT(NEW.is_subscription, SIGNED), CHAR), NEW.id_change_set - WHERE NOT OLD.is_subscription <=> NEW.is_subscription - UNION - -- Changed id_unit_measurement_interval_recurrence - SELECT NEW.id_product, 'id_unit_measurement_interval_recurrence', CONVERT(OLD.id_unit_measurement_interval_recurrence, CHAR), CONVERT(NEW.id_unit_measurement_interval_recurrence, CHAR), NEW.id_change_set - WHERE NOT OLD.id_unit_measurement_interval_recurrence <=> NEW.id_unit_measurement_interval_recurrence - UNION - -- Changed count_interval_recurrence - SELECT NEW.id_product, 'count_interval_recurrence', CONVERT(OLD.count_interval_recurrence, CHAR), CONVERT(NEW.count_interval_recurrence, CHAR), NEW.id_change_set - WHERE NOT OLD.count_interval_recurrence <=> NEW.count_interval_recurrence - UNION - -- Changed id_stripe_product - SELECT NEW.id_permutation, 'id_stripe_product', OLD.id_stripe_product, NEW.id_stripe_product, NEW.id_change_set - WHERE NOT (OLD.id_stripe_product <=> NEW.id_stripe_product) - UNION - -- Changed active - SELECT NEW.id_permutation, 'active', CONVERT(CONVERT(OLD.active, SIGNED), CHAR), CONVERT(CONVERT(NEW.active, SIGNED), CHAR), NEW.id_change_set - WHERE NOT (OLD.active <=> NEW.active) - UNION - -- Changed display_order - SELECT NEW.id_permutation, 'display_order', CONVERT(OLD.display_order, CHAR), CONVERT(NEW.display_order, CHAR), NEW.id_change_set - WHERE NOT (OLD.display_order <=> NEW.display_order) - ; - - RETURN NEW; -END; -$$ LANGUAGE plpgsql; - -CREATE OR REPLACE TRIGGER tri_before_update_Shop_Product_Permutation -BEFORE UPDATE ON Shop_Product_Permutation -FOR EACH ROW -EXECUTE FUNCTION before_update_Shop_Product_Permutation(); diff --git a/static/PostgreSQL/317.3_tri_Shop_Product_Permutation_Variation_Link.sql b/static/PostgreSQL/317.3_tri_Shop_Product_Permutation_Variation_Link.sql deleted file mode 100644 index ef28a99b..00000000 --- a/static/PostgreSQL/317.3_tri_Shop_Product_Permutation_Variation_Link.sql +++ /dev/null @@ -1,65 +0,0 @@ - --- Shop Product Permutation Variation Link - -CREATE OR REPLACE FUNCTION before_insert_Shop_Product_Permutation_Variation_Link() -RETURNS TRIGGER AS $$ -BEGIN - IF NEW.created_on IS NULL THEN - NEW.created_on = CURRENT_TIMESTAMP; - END IF; - IF NEW.created_by IS NULL THEN - NEW.created_by = CURRENT_USER; - END IF; - - RETURN NEW; -END; -$$ LANGUAGE plpgsql; - -CREATE OR REPLACE TRIGGER tri_before_insert_Shop_Product_Permutation_Variation_Link -BEFORE INSERT ON Shop_Product_Permutation_Variation_Link -FOR EACH ROW -EXECUTE FUNCTION before_insert_Shop_Product_Permutation_Variation_Link(); - - -CREATE OR REPLACE FUNCTION before_update_Shop_Product_Permutation_Variation_Link() -RETURNS TRIGGER AS $$ -BEGIN - IF OLD.id_change_set IS NOT DISTINCT FROM NEW.id_change_set THEN - RAISE EXCEPTION 'New change Set ID must be provided.' - USING ERRCODE = '45000'; - END IF; - - INSERT INTO Shop_Product_Permutation_Variation_Link_Audit ( - id_link, - name_field, - value_prev, - value_new, - id_change_set - ) - /* - -- Changed id_product - SELECT NEW.id_link, 'id_product', OLD.id_product, NEW.id_product, NEW.id_change_set - WHERE NOT OLD.id_product <=> NEW.id_product - UNION - -- Changed id_variation - SELECT NEW.id_link, 'id_variation', OLD.id_variation, NEW.id_variation, NEW.id_change_set - WHERE NOT OLD.id_variation <=> NEW.id_variation - UNION - */ - -- Changed active - SELECT NEW.id_link, 'active', CONVERT(CONVERT(OLD.active, SIGNED), CHAR), CONVERT(CONVERT(NEW.active, SIGNED), CHAR), NEW.id_change_set - WHERE NOT (OLD.active <=> NEW.active) - UNION - -- Changed display_order - SELECT NEW.id_link, 'display_order', CONVERT(OLD.display_order, CHAR), CONVERT(NEW.display_order, CHAR), NEW.id_change_set - WHERE NOT (OLD.display_order <=> NEW.display_order) - ; - - RETURN NEW; -END; -$$ LANGUAGE plpgsql; - -CREATE OR REPLACE TRIGGER tri_before_update_Shop_Product_Permutation_Variation_Link -BEFORE UPDATE ON Shop_Product_Permutation_Variation_Link -FOR EACH ROW -EXECUTE FUNCTION before_update_Shop_Product_Permutation_Variation_Link(); diff --git a/static/PostgreSQL/317.5_tri_Shop_Product_Currency_Region_Link.sql b/static/PostgreSQL/317.5_tri_Shop_Product_Currency_Region_Link.sql deleted file mode 100644 index 6542497a..00000000 --- a/static/PostgreSQL/317.5_tri_Shop_Product_Currency_Region_Link.sql +++ /dev/null @@ -1,97 +0,0 @@ - --- Shop Product Currency Region Link - -CREATE OR REPLACE FUNCTION before_insert_Shop_Product_Currency_Region_Link() -RETURNS TRIGGER AS $$ -BEGIN - IF NEW.created_on IS NULL THEN - NEW.created_on = CURRENT_TIMESTAMP; - END IF; - IF NEW.created_by IS NULL THEN - NEW.created_by = CURRENT_USER; - END IF; - /* - NEW.price_local = ( - SELECT PP.price_GBP_full * C.factor_from_GBP - FROM Shop_Product_Permutation PP - INNER JOIN Shop_Product P ON PP.id_product = P.id_product - INNER JOIN Shop_Currency C ON NEW.id_currency = C.id_currency - WHERE NEW.id_product = P.id_product - LIMIT 1 - ); - */ - - RETURN NEW; -END; -$$ LANGUAGE plpgsql; - -CREATE OR REPLACE TRIGGER tri_before_insert_Shop_Product_Currency_Region_Link -BEFORE INSERT ON Shop_Product_Currency_Region_Link -FOR EACH ROW -EXECUTE FUNCTION before_insert_Shop_Product_Currency_Region_Link(); - - -CREATE OR REPLACE FUNCTION before_update_Shop_Product_Currency_Region_Link() -RETURNS TRIGGER AS $$ -BEGIN - IF OLD.id_change_set IS NOT DISTINCT FROM NEW.id_change_set THEN - RAISE EXCEPTION 'New change Set ID must be provided.' - USING ERRCODE = '45000'; - END IF; - - /* - NEW.price_local = ( - SELECT P.price_GBP_full * C.factor_from_GBP - FROM Shop_Product P - INNER JOIN Shop_Currency C ON NEW.id_currency = C.id_currency - WHERE NEW.id_product = P.id_product - LIMIT 1 - ); - */ - - INSERT INTO Shop_Product_Currency_Region_Link_Audit ( - id_link, - name_field, - value_prev, - value_new, - id_change_set - ) - /* - -- Changed id_product - SELECT NEW.id_link, 'id_product', CONVERT(OLD.id_product, CHAR), CONVERT(NEW.id_product, CHAR), NEW.id_change_set - WHERE NOT OLD.id_product <=> NEW.id_product - UNION - -- Changed id_currency - SELECT NEW.id_link, 'id_currency', CONVERT(OLD.id_currency, CHAR), CONVERT(NEW.id_currency, CHAR), NEW.id_change_set - WHERE NOT OLD.id_currency <=> NEW.id_currency - UNION - -- Changed price_local - SELECT NEW.id_link, 'price_local', OLD.price_local, NEW.price_local, NEW.id_change_set - WHERE NOT OLD.price_local <=> NEW.price_local - UNION - */ - -- Changed price_local_VAT_incl - SELECT NEW.id_link, 'price_local_VAT_incl', OLD.price_local_VAT_incl, NEW.price_local_VAT_incl, NEW.id_change_set - WHERE NOT OLD.price_local_VAT_incl <=> NEW.price_local_VAT_incl - UNION - -- Changed price_local_VAT_excl - SELECT NEW.id_link, 'price_local_VAT_excl', OLD.price_local_VAT_excl, NEW.price_local_VAT_excl, NEW.id_change_set - WHERE NOT OLD.price_local_VAT_excl <=> NEW.price_local_VAT_excl - UNION - -- Changed id_stripe_price - SELECT NEW.id_link, 'id_stripe_price', OLD.id_stripe_price, NEW.id_stripe_price, NEW.id_change_set - WHERE NOT OLD.id_stripe_price <=> NEW.id_stripe_price - UNION - -- Changed active - SELECT NEW.id_link, 'active', CONVERT(CONVERT(OLD.active, SIGNED), CHAR), CONVERT(CONVERT(NEW.active, SIGNED), CHAR), NEW.id_change_set - WHERE NOT (OLD.active <=> NEW.active) - ; - - RETURN NEW; -END; -$$ LANGUAGE plpgsql; - -CREATE OR REPLACE TRIGGER tri_before_update_Shop_Product_Currency_Region_Link -BEFORE UPDATE ON Shop_Product_Currency_Region_Link -FOR EACH ROW -EXECUTE FUNCTION before_update_Shop_Product_Currency_Region_Link(); diff --git a/static/PostgreSQL/318_tri_Shop_Image_Type.sql b/static/PostgreSQL/318_tri_Shop_Image_Type.sql deleted file mode 100644 index 038f9c34..00000000 --- a/static/PostgreSQL/318_tri_Shop_Image_Type.sql +++ /dev/null @@ -1,63 +0,0 @@ - --- Shop Image Type - -CREATE OR REPLACE FUNCTION before_insert_Shop_Image_Type() -RETURNS TRIGGER AS $$ -BEGIN - NEW.created_on = CURRENT_TIMESTAMP; - NEW.created_by = CURRENT_USER; - - RETURN NEW; -END; -$$ LANGUAGE plpgsql; - -CREATE OR REPLACE TRIGGER tri_before_insert_Shop_Image_Type -BEFORE INSERT ON Shop_Image_Type -FOR EACH ROW -EXECUTE FUNCTION before_insert_Shop_Image_Type(); - - -CREATE OR REPLACE FUNCTION before_update_Shop_Image_Type() -RETURNS TRIGGER AS $$ -BEGIN - IF OLD.id_change_set IS NOT DISTINCT FROM NEW.id_change_set THEN - RAISE EXCEPTION 'New change Set ID must be provided.' - USING ERRCODE = '45000'; - END IF; - - INSERT INTO Shop_Image_Type_Audit ( - id_type, - name_field, - value_prev, - value_new, - id_change_set - ) - -- Changed code - SELECT NEW.id_type, 'code', OLD.code, NEW.code, NEW.id_change_set - WHERE NOT OLD.code <=> NEW.code - UNION - -- Changed name - SELECT NEW.id_type, 'name', OLD.name, NEW.name, NEW.id_change_set - WHERE NOT OLD.name <=> NEW.name - UNION - -- Changed name_plural - SELECT NEW.id_type, 'name_plural', OLD.name_plural, NEW.name_plural, NEW.id_change_set - WHERE NOT OLD.name_plural <=> NEW.name_plural - UNION - -- Changed active - SELECT NEW.id_type, 'active', CONVERT(CONVERT(OLD.active, SIGNED), CHAR), CONVERT(CONVERT(NEW.active, SIGNED), CHAR), NEW.id_change_set - WHERE NOT (OLD.active <=> NEW.active) - UNION - -- Changed display_order - SELECT NEW.id_type, 'display_order', CONVERT(OLD.display_order, CHAR), CONVERT(NEW.display_order, CHAR), NEW.id_change_set - WHERE NOT (OLD.display_order <=> NEW.display_order) - ; - - RETURN NEW; -END; -$$ LANGUAGE plpgsql; - -CREATE OR REPLACE TRIGGER tri_before_update_Shop_Image_Type -BEFORE UPDATE ON Shop_Image_Type -FOR EACH ROW -EXECUTE FUNCTION before_update_Shop_Image_Type(); diff --git a/static/PostgreSQL/320_tri_Shop_Image.sql b/static/PostgreSQL/320_tri_Shop_Image.sql deleted file mode 100644 index 1bb31cbe..00000000 --- a/static/PostgreSQL/320_tri_Shop_Image.sql +++ /dev/null @@ -1,75 +0,0 @@ - --- Shop Image - -CREATE OR REPLACE FUNCTION before_insert_Shop_Image() -RETURNS TRIGGER AS $$ -BEGIN - NEW.created_on = CURRENT_TIMESTAMP; - NEW.created_by = CURRENT_USER; - - RETURN NEW; -END; -$$ LANGUAGE plpgsql; - -CREATE OR REPLACE TRIGGER tri_before_insert_Shop_Image -BEFORE INSERT ON Shop_Image -FOR EACH ROW -EXECUTE FUNCTION before_insert_Shop_Image(); - - -CREATE OR REPLACE FUNCTION before_update_Shop_Image() -RETURNS TRIGGER AS $$ -BEGIN - IF OLD.id_change_set IS NOT DISTINCT FROM NEW.id_change_set THEN - RAISE EXCEPTION 'New change Set ID must be provided.' - USING ERRCODE = '45000'; - END IF; - IF ISNULL(NEW.id_product) AND ISNULL(NEW.id_permutation) THEN - RAISE EXCEPTION 'Image must NOT have ID for product AND product permutation.' - USING ERRCODE = '45000'; - END IF; - - INSERT INTO Shop_Image_Audit ( - id_image, - name_field, - value_prev, - value_new, - id_change_set - ) - -- Changed id_type_image - SELECT NEW.id_image, 'id_type_image', CONVERT(OLD.id_type_image, CHAR), CONVERT(NEW.id_type_image, CHAR), NEW.id_change_set - WHERE NOT OLD.id_type_image <=> NEW.id_type_image - UNION - -- Changed id_type_file - SELECT NEW.id_image, 'id_type_file', CONVERT(OLD.id_type_file, CHAR), CONVERT(NEW.id_type_file, CHAR), NEW.id_change_set - WHERE NOT OLD.id_type_file <=> NEW.id_type_file - UNION - -- Changed id_product - SELECT NEW.id_image, 'id_product', CONVERT(OLD.id_product, CHAR), CONVERT(NEW.id_product, CHAR), NEW.id_change_set - WHERE NOT OLD.id_product <=> NEW.id_product - UNION - -- Changed id_permutation - SELECT NEW.id_image, 'id_permutation', CONVERT(OLD.id_permutation, CHAR), CONVERT(NEW.id_permutation, CHAR), NEW.id_change_set - WHERE NOT OLD.id_permutation <=> NEW.id_permutation - UNION - -- Changed url - SELECT NEW.id_image, 'url', OLD.url, NEW.url, NEW.id_change_set - WHERE NOT OLD.url <=> NEW.url - UNION - -- Changed active - SELECT NEW.id_image, 'active', CONVERT(CONVERT(OLD.active, SIGNED), CHAR), CONVERT(CONVERT(NEW.active, SIGNED), CHAR), NEW.id_change_set - WHERE NOT (OLD.active <=> NEW.active) - UNION - -- Changed display_order - SELECT NEW.id_image, 'display_order', CONVERT(OLD.display_order, CHAR), CONVERT(NEW.display_order, CHAR), NEW.id_change_set - WHERE NOT (OLD.display_order <=> NEW.display_order) - ; - - RETURN NEW; -END; -$$ LANGUAGE plpgsql; - -CREATE OR REPLACE TRIGGER tri_before_update_Shop_Image -BEFORE UPDATE ON Shop_Image -FOR EACH ROW -EXECUTE FUNCTION before_update_Shop_Image(); diff --git a/static/PostgreSQL/322_tri_Shop_Delivery_Option.sql b/static/PostgreSQL/322_tri_Shop_Delivery_Option.sql deleted file mode 100644 index 7d3a1fb7..00000000 --- a/static/PostgreSQL/322_tri_Shop_Delivery_Option.sql +++ /dev/null @@ -1,75 +0,0 @@ - --- Shop Delivery Option Type - -CREATE OR REPLACE FUNCTION before_insert_Shop_Delivery_Option() -RETURNS TRIGGER AS $$ -BEGIN - NEW.created_on = CURRENT_TIMESTAMP; - NEW.created_by = CURRENT_USER; - - RETURN NEW; -END; -$$ LANGUAGE plpgsql; - -CREATE OR REPLACE TRIGGER tri_before_insert_Shop_Delivery_Option -BEFORE INSERT ON Shop_Delivery_Option -FOR EACH ROW -EXECUTE FUNCTION before_insert_Shop_Delivery_Option(); - - -CREATE OR REPLACE FUNCTION before_update_Shop_Delivery_Option() -RETURNS TRIGGER AS $$ -BEGIN - IF OLD.id_change_set IS NOT DISTINCT FROM NEW.id_change_set THEN - RAISE EXCEPTION 'New change Set ID must be provided.' - USING ERRCODE = '45000'; - END IF; - - INSERT INTO Shop_Delivery_Option_Audit ( - id_option, - name_field, - value_prev, - value_new, - id_change_set - ) - -- Changed code - SELECT NEW.id_option, 'code', OLD.code, NEW.code, NEW.id_change_set - WHERE NOT OLD.code <=> NEW.code - UNION - -- Changed name - SELECT NEW.id_option, 'name', OLD.name, NEW.name, NEW.id_change_set - WHERE NOT OLD.name <=> NEW.name - UNION - -- Changed latency_delivery_min - SELECT NEW.id_option, 'latency_delivery_min', CONVERT(OLD.latency_delivery_min, CHAR), CONVERT(NEW.latency_delivery_min, CHAR), NEW.id_change_set - WHERE NOT OLD.latency_delivery_min <=> NEW.latency_delivery_min - UNION - -- Changed latency_delivery_max - SELECT NEW.id_option, 'latency_delivery_max', CONVERT(OLD.latency_delivery_max, CHAR), CONVERT(NEW.latency_delivery_max, CHAR), NEW.id_change_set - WHERE NOT OLD.latency_delivery_max <=> NEW.latency_delivery_max - UNION - -- Changed quantity_min - SELECT NEW.id_option, 'quantity_min', CONVERT(OLD.quantity_min, CHAR), CONVERT(NEW.quantity_min, CHAR), NEW.id_change_set - WHERE NOT OLD.quantity_min <=> NEW.quantity_min - UNION - -- Changed quantity_max - SELECT NEW.id_option, 'quantity_max', CONVERT(OLD.quantity_max, CHAR), CONVERT(NEW.quantity_max, CHAR), NEW.id_change_set - WHERE NOT OLD.quantity_max <=> NEW.quantity_max - UNION - -- Changed active - SELECT NEW.id_option, 'active', CONVERT(OLD.active, CHAR), CONVERT(NEW.active, CHAR), NEW.id_change_set - WHERE NOT OLD.active <=> NEW.active - UNION - -- Changed display_order - SELECT NEW.id_option, 'display_order', CONVERT(OLD.display_order, CHAR), CONVERT(NEW.display_order, CHAR), NEW.id_change_set - WHERE NOT OLD.display_order <=> NEW.display_order - ; - - RETURN NEW; -END; -$$ LANGUAGE plpgsql; - -CREATE OR REPLACE TRIGGER tri_before_update_Shop_Delivery_Option -BEFORE UPDATE ON Shop_Delivery_Option -FOR EACH ROW -EXECUTE FUNCTION before_update_Shop_Delivery_Option(); diff --git a/static/PostgreSQL/324_tri_Shop_Product_Delivery_Option_Link.sql b/static/PostgreSQL/324_tri_Shop_Product_Delivery_Option_Link.sql deleted file mode 100644 index 1a021d03..00000000 --- a/static/PostgreSQL/324_tri_Shop_Product_Delivery_Option_Link.sql +++ /dev/null @@ -1,77 +0,0 @@ - --- Shop Product Delivery Option Link - -CREATE OR REPLACE FUNCTION before_insert_Shop_Product_Permutation_Delivery_Option_Link() -RETURNS TRIGGER AS $$ -BEGIN - IF NEW.created_on IS NULL THEN - NEW.created_on = CURRENT_TIMESTAMP; - END IF; - IF NEW.created_by IS NULL THEN - NEW.created_by = CURRENT_USER; - END IF; - - RETURN NEW; -END; -$$ LANGUAGE plpgsql; - -CREATE OR REPLACE TRIGGER tri_before_insert_Shop_Product_Permutation_Delivery_Option_Link -BEFORE INSERT ON Shop_Product_Permutation_Delivery_Option_Link -FOR EACH ROW -EXECUTE FUNCTION before_insert_Shop_Product_Permutation_Delivery_Option_Link(); - - -CREATE OR REPLACE FUNCTION before_update_Shop_Product_Permutation_Delivery_Option_Link() -RETURNS TRIGGER AS $$ -BEGIN - IF OLD.id_change_set IS NOT DISTINCT FROM NEW.id_change_set THEN - RAISE EXCEPTION 'New change Set ID must be provided.' - USING ERRCODE = '45000'; - END IF; - - INSERT INTO Shop_Product_Permutation_Delivery_Option_Link_Audit ( - id_link, - name_field, - value_prev, - value_new, - id_change_set - ) - /* - -- Changed id_product - SELECT NEW.id_link, 'id_product', CONVERT(OLD.id_product, CHAR), CONVERT(NEW.id_product, CHAR), NEW.id_change_set - WHERE NOT OLD.id_product <=> NEW.id_product - UNION - -- Changed id_permutation - SELECT NEW.id_link, 'id_permutation', CONVERT(OLD.id_permutation, CHAR), CONVERT(NEW.id_permutation, CHAR), NEW.id_change_set - WHERE NOT OLD.id_permutation <=> NEW.id_permutation - UNION - -- Changed id_option - SELECT NEW.id_link, 'id_option', CONVERT(OLD.id_option, CHAR), CONVERT(NEW.id_option, CHAR), NEW.id_change_set - WHERE NOT OLD.id_option <=> NEW.id_option - UNION - -- Changed id_region - SELECT NEW.id_link, 'id_region', CONVERT(OLD.id_region, CHAR), CONVERT(NEW.id_region, CHAR), NEW.id_change_set - WHERE NOT OLD.id_region <=> NEW.id_region - UNION - */ - -- Changed price_local - SELECT NEW.id_link, 'price_local', CONVERT(OLD.price_local, CHAR), CONVERT(NEW.price_local, CHAR), NEW.id_change_set - WHERE NOT OLD.price_local <=> NEW.price_local - UNION - -- Changed active - SELECT NEW.id_link, 'active', CONVERT(CONVERT(OLD.active, SIGNED), CHAR), CONVERT(CONVERT(NEW.active, SIGNED), CHAR), NEW.id_change_set - WHERE NOT (OLD.active <=> NEW.active) - UNION - -- Changed display_order - SELECT NEW.id_link, 'display_order', CONVERT(OLD.display_order, CHAR), CONVERT(NEW.display_order, CHAR), NEW.id_change_set - WHERE NOT (OLD.display_order <=> NEW.display_order) - ; - - RETURN NEW; -END; -$$ LANGUAGE plpgsql; - -CREATE OR REPLACE TRIGGER tri_before_update_Shop_Product_Permutation_Delivery_Option_Link -BEFORE UPDATE ON Shop_Product_Permutation_Delivery_Option_Link -FOR EACH ROW -EXECUTE FUNCTION before_update_Shop_Product_Permutation_Delivery_Option_Link(); diff --git a/static/PostgreSQL/330_tri_Shop_Discount.sql b/static/PostgreSQL/330_tri_Shop_Discount.sql deleted file mode 100644 index 9ab188a1..00000000 --- a/static/PostgreSQL/330_tri_Shop_Discount.sql +++ /dev/null @@ -1,87 +0,0 @@ - --- Shop Discount - -CREATE OR REPLACE FUNCTION before_insert_Shop_Discount() -RETURNS TRIGGER AS $$ -BEGIN - NEW.created_on = CURRENT_TIMESTAMP; - NEW.created_by = CURRENT_USER; - - RETURN NEW; -END; -$$ LANGUAGE plpgsql; - -CREATE OR REPLACE TRIGGER tri_before_insert_Shop_Discount -BEFORE INSERT ON Shop_Discount -FOR EACH ROW -EXECUTE FUNCTION before_insert_Shop_Discount(); - - -CREATE OR REPLACE FUNCTION before_update_Shop_Discount() -RETURNS TRIGGER AS $$ -BEGIN - IF OLD.id_change_set IS NOT DISTINCT FROM NEW.id_change_set THEN - RAISE EXCEPTION 'New change Set ID must be provided.' - USING ERRCODE = '45000'; - END IF; - - INSERT INTO Shop_Discount_Audit ( - id_discount, - name_field, - value_prev, - value_new, - id_change_set - ) - -- Changed code - SELECT NEW.id_discount, 'code', OLD.code, NEW.code, NEW.id_change_set - WHERE NOT OLD.code <=> NEW.code - UNION - -- Changed name - SELECT NEW.id_discount, 'name', OLD.name, NEW.name, NEW.id_change_set - WHERE NOT OLD.name <=> NEW.name - UNION - -- Changed multiplier - SELECT NEW.id_discount, 'multiplier', OLD.multiplier, NEW.multiplier, NEW.id_change_set - WHERE NOT OLD.multiplier <=> NEW.multiplier - UNION - -- Changed subtractor - SELECT NEW.id_discount, 'subtractor', OLD.subtractor, NEW.subtractor, NEW.id_change_set - WHERE NOT OLD.subtractor <=> NEW.subtractor - UNION - -- Changed apply_multiplier_first - SELECT NEW.id_discount, 'apply_multiplier_first', CONVERT(CONVERT(OLD.apply_multiplier_first, SIGNED), CHAR), CONVERT(CONVERT(NEW.apply_multiplier_first, SIGNED), CHAR), NEW.id_change_set - WHERE NOT OLD.apply_multiplier_first <=> NEW.apply_multiplier_first - UNION - -- Changed quantity_min - SELECT NEW.id_discount, 'quantity_min', OLD.quantity_min, NEW.quantity_min, NEW.id_change_set - WHERE NOT OLD.quantity_min <=> NEW.quantity_min - UNION - -- Changed quantity_max - SELECT NEW.id_discount, 'quantity_max', OLD.quantity_max, NEW.quantity_max, NEW.id_change_set - WHERE NOT OLD.quantity_max <=> NEW.quantity_max - UNION - -- Changed date_start - SELECT NEW.id_discount, 'date_start', OLD.date_start, NEW.date_start, NEW.id_change_set - WHERE NOT OLD.date_start <=> NEW.date_start - UNION - -- Changed date_end - SELECT NEW.id_discount, 'date_end', OLD.date_end, NEW.date_end, NEW.id_change_set - WHERE NOT OLD.date_end <=> NEW.date_end - UNION - -- Changed display_order - SELECT NEW.id_discount, 'display_order', CONVERT(OLD.display_order, CHAR), CONVERT(NEW.display_order, CHAR), NEW.id_change_set - WHERE NOT OLD.display_order <=> NEW.display_order - UNION - -- Changed active - SELECT NEW.id_discount, 'active', CONVERT(CONVERT(OLD.active, SIGNED), CHAR), CONVERT(CONVERT(NEW.active, SIGNED), CHAR), NEW.id_change_set - WHERE NOT OLD.active <=> NEW.active - ; - - RETURN NEW; -END; -$$ LANGUAGE plpgsql; - -CREATE OR REPLACE TRIGGER tri_before_update_Shop_Discount -BEFORE UPDATE ON Shop_Discount -FOR EACH ROW -EXECUTE FUNCTION before_update_Shop_Discount(); diff --git a/static/PostgreSQL/332_tri_Shop_Discount_Region_Currency_Link.sql b/static/PostgreSQL/332_tri_Shop_Discount_Region_Currency_Link.sql deleted file mode 100644 index 9176681b..00000000 --- a/static/PostgreSQL/332_tri_Shop_Discount_Region_Currency_Link.sql +++ /dev/null @@ -1,61 +0,0 @@ - --- Shop Discount Region Currency Link - -CREATE OR REPLACE FUNCTION before_insert_Shop_Discount_Region_Currency_Link() -RETURNS TRIGGER AS $$ -BEGIN - IF NEW.created_on IS NULL THEN - NEW.created_on = CURRENT_TIMESTAMP; - END IF; - IF NEW.created_by IS NULL THEN - NEW.created_by = CURRENT_USER; - END IF; - - RETURN NEW; -END; -$$ LANGUAGE plpgsql; - -CREATE OR REPLACE TRIGGER tri_before_insert_Shop_Discount_Region_Currency_Link -BEFORE INSERT ON Shop_Discount_Region_Currency_Link -FOR EACH ROW -EXECUTE FUNCTION before_insert_Shop_Discount_Region_Currency_Link(); - - -CREATE OR REPLACE FUNCTION before_update_Shop_Discount_Region_Currency_Link() -RETURNS TRIGGER AS $$ -BEGIN - IF OLD.id_change_set IS NOT DISTINCT FROM NEW.id_change_set THEN - RAISE EXCEPTION 'New change Set ID must be provided.' - USING ERRCODE = '45000'; - END IF; - - INSERT INTO Shop_Discount_Region_Currency_Link_Audit ( - id_link, - name_field, - value_prev, - value_new, - id_change_set - ) - /* - -- Changed id_discount - SELECT NEW.id_link, 'id_discount', CONVERT(OLD.id_discount, CHAR), CONVERT(NEW.id_discount, CHAR), NEW.id_change_set - WHERE NOT OLD.id_discount <=> NEW.id_discount - UNION - -- Changed id_region - SELECT NEW.id_link, 'id_region', CONVERT(OLD.id_region, CHAR), CONVERT(NEW.id_region, CHAR), NEW.id_change_set - WHERE NOT OLD.id_region <=> NEW.id_region - UNION - */ - -- Changed active - SELECT NEW.id_link, 'active', CONVERT(CONVERT(OLD.active, SIGNED), CHAR), CONVERT(CONVERT(NEW.active, SIGNED), CHAR), NEW.id_change_set - WHERE NOT (OLD.active <=> NEW.active) - ; - - RETURN NEW; -END; -$$ LANGUAGE plpgsql; - -CREATE OR REPLACE TRIGGER tri_before_update_Shop_Discount_Region_Currency_Link -BEFORE UPDATE ON Shop_Discount_Region_Currency_Link -FOR EACH ROW -EXECUTE FUNCTION before_update_Shop_Discount_Region_Currency_Link(); diff --git a/static/PostgreSQL/353_tri_Shop_Permission_Group.sql b/static/PostgreSQL/353_tri_Shop_Permission_Group.sql deleted file mode 100644 index aaec1645..00000000 --- a/static/PostgreSQL/353_tri_Shop_Permission_Group.sql +++ /dev/null @@ -1,63 +0,0 @@ - --- Shop Permission Group - -CREATE OR REPLACE FUNCTION before_insert_Shop_Permission_Group() -RETURNS TRIGGER AS $$ -BEGIN - IF NEW.created_on IS NULL THEN - NEW.created_on = CURRENT_TIMESTAMP; - END IF; - IF NEW.created_by IS NULL THEN - NEW.created_by = CURRENT_USER; - END IF; - - RETURN NEW; -END; -$$ LANGUAGE plpgsql; - -CREATE OR REPLACE TRIGGER tri_before_insert_Shop_Permission_Group -BEFORE INSERT ON Shop_Permission_Group -FOR EACH ROW -EXECUTE FUNCTION before_insert_Shop_Permission_Group(); - - -CREATE OR REPLACE FUNCTION before_update_Shop_Permission_Group() -RETURNS TRIGGER AS $$ -BEGIN - IF OLD.id_change_set IS NOT DISTINCT FROM NEW.id_change_set THEN - RAISE EXCEPTION 'New change Set ID must be provided.' - USING ERRCODE = '45000'; - END IF; - - INSERT INTO Shop_Permission_Group_Audit ( - id_group, - name_field, - value_prev, - value_new, - id_change_set - ) - -- Changed code - SELECT NEW.id_group, 'code', OLD.code, NEW.code, NEW.id_change_set - WHERE NOT OLD.code <=> NEW.code - UNION - -- Changed name - SELECT NEW.id_group, 'name', OLD.name, NEW.name, NEW.id_change_set - WHERE NOT OLD.name <=> NEW.name - UNION - -- Changed active - SELECT NEW.id_group, 'active', CONVERT(CONVERT(OLD.active, SIGNED), CHAR), CONVERT(CONVERT(NEW.active, SIGNED), CHAR), NEW.id_change_set - WHERE NOT (OLD.active <=> NEW.active) - UNION - -- Changed display_order - SELECT NEW.id_group, 'display_order', CONVERT(OLD.display_order, CHAR), CONVERT(NEW.display_order, CHAR), NEW.id_change_set - WHERE NOT OLD.display_order <=> NEW.display_order - ; - - RETURN NEW; -END; -$$ LANGUAGE plpgsql; - -CREATE OR REPLACE TRIGGER tri_before_update_Shop_Permission_Group -BEFORE UPDATE ON Shop_Permission_Group -FOR EACH ROW -EXECUTE FUNCTION before_update_Shop_Permission_Group(); diff --git a/static/PostgreSQL/355_tri_Shop_Permission.sql b/static/PostgreSQL/355_tri_Shop_Permission.sql deleted file mode 100644 index 65d22c36..00000000 --- a/static/PostgreSQL/355_tri_Shop_Permission.sql +++ /dev/null @@ -1,71 +0,0 @@ - --- Shop Permission - -CREATE OR REPLACE FUNCTION before_insert_Shop_Permission() -RETURNS TRIGGER AS $$ -BEGIN - IF NEW.created_on IS NULL THEN - NEW.created_on = CURRENT_TIMESTAMP; - END IF; - IF NEW.created_by IS NULL THEN - NEW.created_by = CURRENT_USER; - END IF; - - RETURN NEW; -END; -$$ LANGUAGE plpgsql; - -CREATE OR REPLACE TRIGGER tri_before_insert_Shop_Permission -BEFORE INSERT ON Shop_Permission -FOR EACH ROW -EXECUTE FUNCTION before_insert_Shop_Permission(); - - -CREATE OR REPLACE FUNCTION before_update_Shop_Permission() -RETURNS TRIGGER AS $$ -BEGIN - IF OLD.id_change_set IS NOT DISTINCT FROM NEW.id_change_set THEN - RAISE EXCEPTION 'New change Set ID must be provided.' - USING ERRCODE = '45000'; - END IF; - - INSERT INTO Shop_Permission_Audit ( - id_permission, - name_field, - value_prev, - value_new, - id_change_set - ) - -- Changed code - SELECT NEW.id_permission, 'code', OLD.code, NEW.code, NEW.id_change_set - WHERE NOT OLD.code <=> NEW.code - UNION - -- Changed name - SELECT NEW.id_permission, 'name', OLD.name, NEW.name, NEW.id_change_set - WHERE NOT OLD.name <=> NEW.name - UNION - -- Changed id_permission_group - SELECT NEW.id_permission, 'id_permission_group', CONVERT(OLD.id_permission_group, CHAR), CONVERT(NEW.id_permission_group, CHAR), NEW.id_change_set - WHERE NOT OLD.id_permission_group <=> NEW.id_permission_group - UNION - -- Changed Id_access_level_required - SELECT NEW.id_permission, 'Id_access_level_required', CONVERT(OLD.Id_access_level_required, CHAR), CONVERT(NEW.Id_access_level_required, CHAR), NEW.id_change_set - WHERE NOT OLD.Id_access_level_required <=> NEW.Id_access_level_required - UNION - -- Changed active - SELECT NEW.id_permission, 'active', CONVERT(CONVERT(OLD.active, SIGNED), CHAR), CONVERT(CONVERT(NEW.active, SIGNED), CHAR), NEW.id_change_set - WHERE NOT (OLD.active <=> NEW.active) - UNION - -- Changed display_order - SELECT NEW.id_permission, 'display_order', CONVERT(OLD.display_order, CHAR), CONVERT(NEW.display_order, CHAR), NEW.id_change_set - WHERE NOT OLD.display_order <=> NEW.display_order - ; - - RETURN NEW; -END; -$$ LANGUAGE plpgsql; - -CREATE OR REPLACE TRIGGER tri_before_update_Shop_Permission -BEFORE UPDATE ON Shop_Permission -FOR EACH ROW -EXECUTE FUNCTION before_update_Shop_Permission(); diff --git a/static/PostgreSQL/357_tri_Shop_Role.sql b/static/PostgreSQL/357_tri_Shop_Role.sql deleted file mode 100644 index 89979d74..00000000 --- a/static/PostgreSQL/357_tri_Shop_Role.sql +++ /dev/null @@ -1,63 +0,0 @@ - --- Shop Role - -CREATE OR REPLACE FUNCTION before_insert_Shop_Role() -RETURNS TRIGGER AS $$ -BEGIN - IF NEW.created_on IS NULL THEN - NEW.created_on = CURRENT_TIMESTAMP; - END IF; - IF NEW.created_by IS NULL THEN - NEW.created_by = CURRENT_USER; - END IF; - - RETURN NEW; -END; -$$ LANGUAGE plpgsql; - -CREATE OR REPLACE TRIGGER tri_before_insert_Shop_Role -BEFORE INSERT ON Shop_Role -FOR EACH ROW -EXECUTE FUNCTION before_insert_Shop_Role(); - - -CREATE OR REPLACE FUNCTION before_update_Shop_Role() -RETURNS TRIGGER AS $$ -BEGIN - IF OLD.id_change_set IS NOT DISTINCT FROM NEW.id_change_set THEN - RAISE EXCEPTION 'New change Set ID must be provided.' - USING ERRCODE = '45000'; - END IF; - - INSERT INTO Shop_Role_Audit ( - id_role, - name_field, - value_prev, - value_new, - id_change_set - ) - -- Changed code - SELECT NEW.id_role, 'code', OLD.code, NEW.code, NEW.id_change_set - WHERE NOT OLD.code <=> NEW.code - UNION - -- Changed name - SELECT NEW.id_role, 'name', OLD.name, NEW.name, NEW.id_change_set - WHERE NOT OLD.name <=> NEW.name - UNION - -- Changed active - SELECT NEW.id_role, 'active', CONVERT(CONVERT(OLD.active, SIGNED), CHAR), CONVERT(CONVERT(NEW.active, SIGNED), CHAR), NEW.id_change_set - WHERE NOT (OLD.active <=> NEW.active) - UNION - -- Changed display_order - SELECT NEW.id_role, 'display_order', CONVERT(OLD.display_order, CHAR), CONVERT(NEW.display_order, CHAR), NEW.id_change_set - WHERE NOT OLD.display_order <=> NEW.display_order - ; - - RETURN NEW; -END; -$$ LANGUAGE plpgsql; - -CREATE OR REPLACE TRIGGER tri_before_update_Shop_Role -BEFORE UPDATE ON Shop_Role -FOR EACH ROW -EXECUTE FUNCTION before_update_Shop_Role(); diff --git a/static/PostgreSQL/359_tri_Shop_Role_Permission_Link.sql b/static/PostgreSQL/359_tri_Shop_Role_Permission_Link.sql deleted file mode 100644 index cefe3ce1..00000000 --- a/static/PostgreSQL/359_tri_Shop_Role_Permission_Link.sql +++ /dev/null @@ -1,65 +0,0 @@ - --- Shop Role Permission Link - -CREATE OR REPLACE FUNCTION before_insert_Shop_Role_Permission_Link() -RETURNS TRIGGER AS $$ -BEGIN - IF NEW.created_on IS NULL THEN - NEW.created_on = CURRENT_TIMESTAMP; - END IF; - IF NEW.created_by IS NULL THEN - NEW.created_by = CURRENT_USER; - END IF; - - RETURN NEW; -END; -$$ LANGUAGE plpgsql; - -CREATE OR REPLACE TRIGGER tri_before_insert_Shop_Role_Permission_Link -BEFORE INSERT ON Shop_Role_Permission_Link -FOR EACH ROW -EXECUTE FUNCTION before_insert_Shop_Role_Permission_Link(); - - -CREATE OR REPLACE FUNCTION before_update_Shop_Role_Permission_Link() -RETURNS TRIGGER AS $$ -BEGIN - IF OLD.id_change_set IS NOT DISTINCT FROM NEW.id_change_set THEN - RAISE EXCEPTION 'New change Set ID must be provided.' - USING ERRCODE = '45000'; - END IF; - - INSERT INTO Shop_Role_Permission_Link_Audit ( - id_link, - name_field, - value_prev, - value_new, - id_change_set - ) - /* - -- Changed id_role - SELECT NEW.id_link, 'id_role', CONVERT(OLD.id_role, CHAR), CONVERT(NEW.id_role, CHAR), NEW.id_change_set - WHERE NOT OLD.id_role <=> NEW.id_role - UNION - -- Changed id_permission - SELECT NEW.id_link, 'id_permission', CONVERT(OLD.id_permission, CHAR), CONVERT(NEW.id_permission, CHAR), NEW.id_change_set - WHERE NOT OLD.id_permission <=> NEW.id_permission - UNION - */ - -- Changed id_access_level - SELECT NEW.id_link, 'id_access_level', CONVERT(OLD.id_access_level, CHAR), CONVERT(NEW.id_access_level, CHAR), NEW.id_change_set - WHERE NOT OLD.id_access_level <=> NEW.id_access_level - UNION - -- Changed active - SELECT NEW.id_link, 'active', CONVERT(CONVERT(OLD.active, SIGNED), CHAR), CONVERT(CONVERT(NEW.active, SIGNED), CHAR), NEW.id_change_set - WHERE NOT (OLD.active <=> NEW.active) - ; - - RETURN NEW; -END; -$$ LANGUAGE plpgsql; - -CREATE OR REPLACE TRIGGER tri_before_update_Shop_Role_Permission_Link -BEFORE UPDATE ON Shop_Role_Permission_Link -FOR EACH ROW -EXECUTE FUNCTION before_update_Shop_Role_Permission_Link(); diff --git a/static/PostgreSQL/361_tri_Shop_User.sql b/static/PostgreSQL/361_tri_Shop_User.sql deleted file mode 100644 index 55ca4803..00000000 --- a/static/PostgreSQL/361_tri_Shop_User.sql +++ /dev/null @@ -1,71 +0,0 @@ - --- Shop User - -CREATE OR REPLACE FUNCTION before_insert_Shop_User() -RETURNS TRIGGER AS $$ -BEGIN - IF NEW.created_on IS NULL THEN - NEW.created_on = CURRENT_TIMESTAMP; - END IF; - IF NEW.created_by IS NULL THEN - NEW.created_by = CURRENT_USER; - END IF; - - RETURN NEW; -END; -$$ LANGUAGE plpgsql; - -CREATE OR REPLACE TRIGGER tri_before_insert_Shop_User -BEFORE INSERT ON Shop_User -FOR EACH ROW -EXECUTE FUNCTION before_insert_Shop_User(); - - -CREATE OR REPLACE FUNCTION before_update_Shop_User() -RETURNS TRIGGER AS $$ -BEGIN - IF OLD.id_change_set IS NOT DISTINCT FROM NEW.id_change_set THEN - RAISE EXCEPTION 'New change Set ID must be provided.' - USING ERRCODE = '45000'; - END IF; - - INSERT INTO Shop_User_Audit ( - id_user, - name_field, - value_prev, - value_new, - id_change_set - ) - -- Changed id_user_oauth - SELECT NEW.id_user, 'id_user_oauth', OLD.id_user_oauth, NEW.id_user_oauth, NEW.id_change_set - WHERE NOT (OLD.id_user_oauth <=> NEW.id_user_oauth) - UNION - -- Changed name - SELECT NEW.id_user, 'name', OLD.name, NEW.name, NEW.id_change_set - WHERE NOT (OLD.name <=> NEW.name) - UNION - -- Changed email - SELECT NEW.id_user, 'email', OLD.email, NEW.email, NEW.id_change_set - WHERE NOT (OLD.email <=> NEW.email) - UNION - -- Changed is_email_verified - SELECT NEW.id_user, 'is_email_verified', OLD.is_email_verified, NEW.is_email_verified, NEW.id_change_set - WHERE NOT (OLD.is_email_verified <=> NEW.is_email_verified) - UNION - -- Changed is_super_user - SELECT NEW.id_user, 'is_super_user', CONVERT(CONVERT(OLD.is_super_user, SIGNED), CHAR), CONVERT(CONVERT(NEW.is_super_user, SIGNED), CHAR), NEW.id_change_set - WHERE NOT (OLD.is_super_user <=> NEW.is_super_user) - UNION - -- Changed active - SELECT NEW.id_user, 'active', CONVERT(CONVERT(OLD.active, SIGNED), CHAR), CONVERT(CONVERT(NEW.active, SIGNED), CHAR), NEW.id_change_set - WHERE NOT (OLD.active <=> NEW.active) - ; - - RETURN NEW; -END; -$$ LANGUAGE plpgsql; - -CREATE OR REPLACE TRIGGER tri_before_update_Shop_User -BEFORE UPDATE ON Shop_User -FOR EACH ROW -EXECUTE FUNCTION before_update_Shop_User(); diff --git a/static/PostgreSQL/363_tri_Shop_User_Role_Link.sql b/static/PostgreSQL/363_tri_Shop_User_Role_Link.sql deleted file mode 100644 index 6ac8b839..00000000 --- a/static/PostgreSQL/363_tri_Shop_User_Role_Link.sql +++ /dev/null @@ -1,51 +0,0 @@ - --- Shop User Role Link - -CREATE OR REPLACE FUNCTION before_insert_Shop_User_Role_Link() -RETURNS TRIGGER AS $$ -BEGIN - IF NEW.created_on IS NULL THEN - NEW.created_on = CURRENT_TIMESTAMP; - END IF; - IF NEW.created_by IS NULL THEN - NEW.created_by = CURRENT_USER; - END IF; - - RETURN NEW; -END; -$$ LANGUAGE plpgsql; - -CREATE OR REPLACE TRIGGER tri_before_insert_Shop_User_Role_Link -BEFORE INSERT ON Shop_User_Role_Link -FOR EACH ROW -EXECUTE FUNCTION before_insert_Shop_User_Role_Link(); - - -CREATE OR REPLACE FUNCTION before_update_Shop_User_Role_Link() -RETURNS TRIGGER AS $$ -BEGIN - IF OLD.id_change_set IS NOT DISTINCT FROM NEW.id_change_set THEN - RAISE EXCEPTION 'New change Set ID must be provided.' - USING ERRCODE = '45000'; - END IF; - - INSERT INTO Shop_User_Role_Link_Audit ( - id_link, - name_field, - value_prev, - value_new, - id_change_set - ) - -- Changed active - SELECT NEW.id_link, 'active', CONVERT(CONVERT(OLD.active, SIGNED), CHAR), CONVERT(CONVERT(NEW.active, SIGNED), CHAR), NEW.id_change_set - WHERE NOT (OLD.active <=> NEW.active) - ; - - RETURN NEW; -END; -$$ LANGUAGE plpgsql; - -CREATE OR REPLACE TRIGGER tri_before_update_Shop_User_Role_Link -BEFORE UPDATE ON Shop_User_Role_Link -FOR EACH ROW -EXECUTE FUNCTION before_update_Shop_User_Role_Link(); diff --git a/static/PostgreSQL/365_tri_Shop_Address.sql b/static/PostgreSQL/365_tri_Shop_Address.sql deleted file mode 100644 index 037d5e49..00000000 --- a/static/PostgreSQL/365_tri_Shop_Address.sql +++ /dev/null @@ -1,83 +0,0 @@ - --- Shop Address - -CREATE OR REPLACE FUNCTION before_insert_Shop_Address() -RETURNS TRIGGER AS $$ -BEGIN - IF NEW.created_on IS NULL THEN - NEW.created_on = CURRENT_TIMESTAMP; - END IF; - IF NEW.created_by IS NULL THEN - NEW.created_by = CURRENT_USER; - END IF; - - RETURN NEW; -END; -$$ LANGUAGE plpgsql; - -CREATE OR REPLACE TRIGGER tri_before_insert_Shop_Address -BEFORE INSERT ON Shop_Address -FOR EACH ROW -EXECUTE FUNCTION before_insert_Shop_Address(); - - -CREATE OR REPLACE FUNCTION before_update_Shop_Address() -RETURNS TRIGGER AS $$ -BEGIN - IF OLD.id_change_set IS NOT DISTINCT FROM NEW.id_change_set THEN - RAISE EXCEPTION 'New change Set ID must be provided.' - USING ERRCODE = '45000'; - END IF; - - INSERT INTO Shop_Address_Audit ( - id_address, - name_field, - value_prev, - value_new, - id_change_set - ) - -- Changed region - SELECT NEW.id_address, 'id_region', OLD.id_region, NEW.id_region, NEW.id_change_set - WHERE NOT OLD.id_region <=> NEW.id_region - UNION - -- Changed name_full - SELECT NEW.id_address, 'name_full', OLD.name_full, NEW.name_full, NEW.id_change_set - WHERE NOT OLD.name_full <=> NEW.name_full - UNION - -- Changed phone_number - SELECT NEW.id_address, 'phone_number', OLD.phone_number, NEW.phone_number, NEW.id_change_set - WHERE NOT OLD.phone_number <=> NEW.phone_number - UNION - -- Changed postcode - SELECT NEW.id_address, 'postcode', OLD.postcode, NEW.postcode, NEW.id_change_set - WHERE NOT OLD.postcode <=> NEW.postcode - UNION - -- Changed address_line_1 - SELECT NEW.id_address, 'address_line_1', OLD.address_line_1, NEW.address_line_1, NEW.id_change_set - WHERE NOT OLD.address_line_1 <=> NEW.address_line_1 - UNION - -- Changed address_line_2 - SELECT NEW.id_address, 'address_line_2', OLD.address_line_2, NEW.address_line_2, NEW.id_change_set - WHERE NOT OLD.address_line_2 <=> NEW.address_line_2 - UNION - -- Changed city - SELECT NEW.id_address, 'city', OLD.city, NEW.city, NEW.id_change_set - WHERE NOT OLD.city <=> NEW.city - UNION - -- Changed county - SELECT NEW.id_address, 'county', OLD.county, NEW.county, NEW.id_change_set - WHERE NOT OLD.county <=> NEW.county - UNION - -- Changed active - SELECT NEW.id_address, 'active', CONVERT(CONVERT(OLD.active, SIGNED), CHAR), CONVERT(CONVERT(NEW.active, SIGNED), CHAR), NEW.id_change_set - WHERE NOT (OLD.active <=> NEW.active) - ; - - RETURN NEW; -END; -$$ LANGUAGE plpgsql; - -CREATE OR REPLACE TRIGGER tri_before_update_Shop_Address -BEFORE UPDATE ON Shop_Address -FOR EACH ROW -EXECUTE FUNCTION before_update_Shop_Address(); \ No newline at end of file diff --git a/static/PostgreSQL/367_tri_Shop_User_Basket.sql b/static/PostgreSQL/367_tri_Shop_User_Basket.sql deleted file mode 100644 index 0884a259..00000000 --- a/static/PostgreSQL/367_tri_Shop_User_Basket.sql +++ /dev/null @@ -1,63 +0,0 @@ - --- Shop Product Variation Link - -CREATE OR REPLACE FUNCTION before_insert_Shop_User_Basket() -RETURNS TRIGGER AS $$ -BEGIN - IF NEW.created_on IS NULL THEN - NEW.created_on = CURRENT_TIMESTAMP; - END IF; - IF NEW.created_by IS NULL THEN - NEW.created_by = CURRENT_USER; - END IF; - - RETURN NEW; -END; -$$ LANGUAGE plpgsql; - -CREATE OR REPLACE TRIGGER tri_before_insert_Shop_User_Basket -BEFORE INSERT ON Shop_User_Basket -FOR EACH ROW -EXECUTE FUNCTION before_insert_Shop_User_Basket(); - - -CREATE OR REPLACE FUNCTION before_update_Shop_User_Basket() -RETURNS TRIGGER AS $$ -BEGIN - IF NEW.id_change_set_user <=> OLD.id_change_set_user THEN - RAISE EXCEPTION 'New change Set ID must be provided.' - USING ERRCODE = '45000'; - END IF; - - INSERT INTO Shop_User_Basket_Audit ( - id_item, - name_field, - value_prev, - value_new, - id_change_set_user - ) - -- Changed id_user - SELECT NEW.id_item, 'id_user', OLD.id_user, NEW.id_user, NEW.id_change_set_user - WHERE NOT OLD.id_user <=> NEW.id_user - UNION - -- Changed id_product - SELECT NEW.id_item, 'id_product', OLD.id_product, NEW.id_product, NEW.id_change_set_user - WHERE NOT OLD.id_product <=> NEW.id_product - UNION - -- Changed quantity - SELECT NEW.id_item, 'quantity', CONVERT(OLD.quantity, CHAR), CONVERT(NEW.quantity, CHAR), NEW.id_change_set_user - WHERE NOT (OLD.quantity <=> NEW.quantity) - UNION - -- Changed active - SELECT NEW.id_item, 'active', CONVERT(CONVERT(OLD.active, SIGNED), CHAR), CONVERT(CONVERT(NEW.active, SIGNED), CHAR), NEW.id_change_set_user - WHERE NOT (OLD.active <=> NEW.active) - ; - - RETURN NEW; -END; -$$ LANGUAGE plpgsql; - -CREATE OR REPLACE TRIGGER tri_before_update_Shop_User_Basket -BEFORE UPDATE ON Shop_User_Basket -FOR EACH ROW -EXECUTE FUNCTION before_update_Shop_User_Basket(); diff --git a/static/PostgreSQL/369_tri_Shop_User_Order_Status.sql b/static/PostgreSQL/369_tri_Shop_User_Order_Status.sql deleted file mode 100644 index 74560390..00000000 --- a/static/PostgreSQL/369_tri_Shop_User_Order_Status.sql +++ /dev/null @@ -1,63 +0,0 @@ - --- Shop User Order Type - -CREATE OR REPLACE FUNCTION before_insert_Shop_User_Order_Status() -RETURNS TRIGGER AS $$ -BEGIN - NEW.created_on = CURRENT_TIMESTAMP; - NEW.created_by = CURRENT_USER; - - RETURN NEW; -END; -$$ LANGUAGE plpgsql; - -CREATE OR REPLACE TRIGGER tri_before_insert_Shop_User_Order_Status -BEFORE INSERT ON Shop_User_Order_Status -FOR EACH ROW -EXECUTE FUNCTION before_insert_Shop_User_Order_Status(); - - -CREATE OR REPLACE FUNCTION before_update_Shop_User_Order_Status() -RETURNS TRIGGER AS $$ -BEGIN - IF OLD.id_change_set IS NOT DISTINCT FROM NEW.id_change_set THEN - RAISE EXCEPTION 'New change Set ID must be provided.' - USING ERRCODE = '45000'; - END IF; - - INSERT INTO Shop_User_Order_Status_Audit ( - id_Status, - name_field, - value_prev, - value_new, - id_change_set - ) - -- Changed code - SELECT NEW.id_Status, 'code', OLD.code, NEW.code, NEW.id_change_set - WHERE NOT OLD.code <=> NEW.code - UNION - -- Changed name - SELECT NEW.id_Status, 'name', OLD.name, NEW.name, NEW.id_change_set - WHERE NOT OLD.name <=> NEW.name - UNION - -- Changed name_plural - SELECT NEW.id_Status, 'name_plural', OLD.name_plural, NEW.name_plural, NEW.id_change_set - WHERE NOT OLD.name_plural <=> NEW.name_plural - UNION - -- Changed active - SELECT NEW.id_Status, 'active', CONVERT(CONVERT(OLD.active, SIGNED), CHAR), CONVERT(CONVERT(NEW.active, SIGNED), CHAR), NEW.id_change_set - WHERE NOT (OLD.active <=> NEW.active) - UNION - -- Changed display_order - SELECT NEW.id_Status, 'display_order', CONVERT(OLD.display_order, CHAR), CONVERT(NEW.display_order, CHAR), NEW.id_change_set - WHERE NOT (OLD.display_order <=> NEW.display_order) - ; - - RETURN NEW; -END; -$$ LANGUAGE plpgsql; - -CREATE OR REPLACE TRIGGER tri_before_update_Shop_User_Order_Status -BEFORE UPDATE ON Shop_User_Order_Status -FOR EACH ROW -EXECUTE FUNCTION before_update_Shop_User_Order_Status(); diff --git a/static/PostgreSQL/381.0_tri_Shop_Supplier.sql b/static/PostgreSQL/381.0_tri_Shop_Supplier.sql deleted file mode 100644 index 307b0688..00000000 --- a/static/PostgreSQL/381.0_tri_Shop_Supplier.sql +++ /dev/null @@ -1,83 +0,0 @@ - --- Shop Supplier - -CREATE OR REPLACE FUNCTION before_insert_Shop_Supplier() -RETURNS TRIGGER AS $$ -BEGIN - IF NEW.created_on IS NULL THEN - NEW.created_on = CURRENT_TIMESTAMP; - END IF; - IF NEW.created_by IS NULL THEN - NEW.created_by = CURRENT_USER; - END IF; - - RETURN NEW; -END; -$$ LANGUAGE plpgsql; - -CREATE OR REPLACE TRIGGER tri_before_insert_Shop_Supplier -BEFORE INSERT ON Shop_Supplier -FOR EACH ROW -EXECUTE FUNCTION before_insert_Shop_Supplier(); - - -CREATE OR REPLACE FUNCTION before_update_Shop_Supplier() -RETURNS TRIGGER AS $$ -BEGIN - IF OLD.id_change_set IS NOT DISTINCT FROM NEW.id_change_set THEN - RAISE EXCEPTION 'New change Set ID must be provided.' - USING ERRCODE = '45000'; - END IF; - - INSERT INTO Shop_Supplier_Audit ( - id_supplier, - name_field, - value_prev, - value_new, - id_change_set - ) - -- Changed name_company - SELECT NEW.id_supplier, 'name_company', OLD.name_company, NEW.name_company, NEW.id_change_set - WHERE NOT OLD.name_company <=> NEW.name_company - UNION - -- Changed name_contact - SELECT NEW.id_supplier, 'name_contact', OLD.name_contact, NEW.name_contact, NEW.id_change_set - WHERE NOT OLD.name_contact <=> NEW.name_contact - UNION - -- Changed department_contact - SELECT NEW.id_supplier, 'department_contact', OLD.department_contact, NEW.department_contact, NEW.id_change_set - WHERE NOT OLD.department_contact <=> NEW.department_contact - UNION - -- Changed id_address - SELECT NEW.id_supplier, 'id_address', OLD.id_address, NEW.id_address, NEW.id_change_set - WHERE NOT OLD.id_address <=> NEW.id_address - UNION - -- Changed phone_number - SELECT NEW.id_supplier, 'phone_number', OLD.phone_number, NEW.phone_number, NEW.id_change_set - WHERE NOT OLD.phone_number <=> NEW.phone_number - UNION - -- Changed fax - SELECT NEW.id_supplier, 'fax', OLD.fax, NEW.fax, NEW.id_change_set - WHERE NOT OLD.fax <=> NEW.fax - UNION - -- Changed email - SELECT NEW.id_supplier, 'email', OLD.email, NEW.email, NEW.id_change_set - WHERE NOT OLD.email <=> NEW.email - UNION - -- Changed website - SELECT NEW.id_supplier, 'website', OLD.website, NEW.website, NEW.id_change_set - WHERE NOT OLD.website <=> NEW.website - UNION - -- Changed id_currency - SELECT NEW.id_supplier, 'id_currency', OLD.id_currency, NEW.id_currency, NEW.id_change_set - WHERE NOT OLD.id_currency <=> NEW.id_currency - ; - - RETURN NEW; -END; -$$ LANGUAGE plpgsql; - -CREATE OR REPLACE TRIGGER tri_before_update_Shop_Supplier -BEFORE UPDATE ON Shop_Supplier -FOR EACH ROW -EXECUTE FUNCTION before_update_Shop_Supplier(); diff --git a/static/PostgreSQL/381.2_tri_Shop_Unit_Measurement.sql b/static/PostgreSQL/381.2_tri_Shop_Unit_Measurement.sql deleted file mode 100644 index 87aa9ebc..00000000 --- a/static/PostgreSQL/381.2_tri_Shop_Unit_Measurement.sql +++ /dev/null @@ -1,67 +0,0 @@ - --- Shop Unit of Measurement - -CREATE OR REPLACE FUNCTION before_insert_Shop_Unit_Measurement() -RETURNS TRIGGER AS $$ -BEGIN - IF NEW.created_on IS NULL THEN - NEW.created_on = CURRENT_TIMESTAMP; - END IF; - IF NEW.created_by IS NULL THEN - NEW.created_by = CURRENT_USER; - END IF; - - RETURN NEW; -END; -$$ LANGUAGE plpgsql; - -CREATE OR REPLACE TRIGGER tri_before_insert_Shop_Unit_Measurement -BEFORE INSERT ON Shop_Unit_Measurement -FOR EACH ROW -EXECUTE FUNCTION before_insert_Shop_Unit_Measurement(); - - -CREATE OR REPLACE FUNCTION before_update_Shop_Unit_Measurement() -RETURNS TRIGGER AS $$ -BEGIN - IF OLD.id_change_set IS NOT DISTINCT FROM NEW.id_change_set THEN - RAISE EXCEPTION 'New change Set ID must be provided.' - USING ERRCODE = '45000'; - END IF; - - INSERT INTO Shop_Unit_Measurement_Audit ( - id_unit_measurement, - name_field, - value_prev, - value_new, - id_change_set - ) - -- Changed name_singular - SELECT NEW.id_unit_measurement, 'name_singular', OLD.name_singular, NEW.name_singular, NEW.id_change_set - WHERE NOT OLD.name_singular <=> NEW.name_singular - UNION - -- Changed name_plural - SELECT NEW.id_unit_measurement, 'name_plural', OLD.name_plural, NEW.name_plural, NEW.id_change_set - WHERE NOT OLD.name_plural <=> NEW.name_plural - UNION - -- Changed symbol - SELECT NEW.id_unit_measurement, 'symbol', OLD.symbol, NEW.symbol, NEW.id_change_set - WHERE NOT OLD.symbol <=> NEW.symbol - UNION - -- Changed is_base_unit - SELECT NEW.id_unit_measurement, 'is_base_unit', OLD.is_base_unit, NEW.is_base_unit, NEW.id_change_set - WHERE NOT OLD.is_base_unit <=> NEW.is_base_unit - UNION - -- Changed active - SELECT NEW.id_unit_measurement, 'active', OLD.active, NEW.active, NEW.id_change_set - WHERE NOT OLD.active <=> NEW.active - ; - - RETURN NEW; -END; -$$ LANGUAGE plpgsql; - -CREATE OR REPLACE TRIGGER tri_before_update_Shop_Unit_Measurement -BEFORE UPDATE ON Shop_Unit_Measurement -FOR EACH ROW -EXECUTE FUNCTION before_update_Shop_Unit_Measurement(); diff --git a/static/PostgreSQL/381.4_tri_Shop_Unit_Of_Measurement_Conversion.sql b/static/PostgreSQL/381.4_tri_Shop_Unit_Of_Measurement_Conversion.sql deleted file mode 100644 index bbc78792..00000000 --- a/static/PostgreSQL/381.4_tri_Shop_Unit_Of_Measurement_Conversion.sql +++ /dev/null @@ -1,71 +0,0 @@ - --- Shop Unit of Measurement Conversion - -CREATE OR REPLACE FUNCTION before_insert_Shop_Unit_Measurement_Conversion() -RETURNS TRIGGER AS $$ -BEGIN - IF NEW.created_on IS NULL THEN - NEW.created_on = CURRENT_TIMESTAMP; - END IF; - IF NEW.created_by IS NULL THEN - NEW.created_by = CURRENT_USER; - END IF; - - RETURN NEW; -END; -$$ LANGUAGE plpgsql; - -CREATE OR REPLACE TRIGGER tri_before_insert_Shop_Unit_Measurement_Conversion -BEFORE INSERT ON Shop_Unit_Measurement_Conversion -FOR EACH ROW -EXECUTE FUNCTION before_insert_Shop_Unit_Measurement_Conversion(); - - -CREATE OR REPLACE FUNCTION before_update_Shop_Unit_Measurement_Conversion() -RETURNS TRIGGER AS $$ -BEGIN - IF OLD.id_change_set IS NOT DISTINCT FROM NEW.id_change_set THEN - RAISE EXCEPTION 'New change Set ID must be provided.' - USING ERRCODE = '45000'; - END IF; - - INSERT INTO Shop_Unit_Measurement_Conversion_Audit ( - id_conversion, - name_field, - value_prev, - value_new, - id_change_set - ) - -- Changed id_unit_derived - SELECT NEW.id_conversion, 'id_unit_derived', OLD.id_unit_derived, NEW.id_unit_derived, NEW.id_change_set - WHERE NOT OLD.id_unit_derived <=> NEW.id_unit_derived - UNION - -- Changed id_unit_base - SELECT NEW.id_conversion, 'id_unit_base', OLD.id_unit_base, NEW.id_unit_base, NEW.id_change_set - WHERE NOT OLD.id_unit_base <=> NEW.id_unit_base - UNION - -- Changed power_unit_base - SELECT NEW.id_conversion, 'power_unit_base', OLD.power_unit_base, NEW.power_unit_base, NEW.id_change_set - WHERE NOT OLD.power_unit_base <=> NEW.power_unit_base - UNION - -- Changed multiplier_unit_base - SELECT NEW.id_conversion, 'multiplier_unit_base', OLD.multiplier_unit_base, NEW.multiplier_unit_base, NEW.id_change_set - WHERE NOT OLD.multiplier_unit_base <=> NEW.multiplier_unit_base - UNION - -- Changed increment_unit_base - SELECT NEW.id_conversion, 'active', OLD.increment_unit_base, NEW.increment_unit_base, NEW.id_change_set - WHERE NOT OLD.increment_unit_base <=> NEW.increment_unit_base - UNION - -- Changed active - SELECT NEW.id_conversion, 'active', OLD.active, NEW.active, NEW.id_change_set - WHERE NOT OLD.active <=> NEW.active - ; - - RETURN NEW; -END; -$$ LANGUAGE plpgsql; - -CREATE OR REPLACE TRIGGER tri_before_update_Shop_Unit_Measurement_Conversion -BEFORE UPDATE ON Shop_Unit_Measurement_Conversion -FOR EACH ROW -EXECUTE FUNCTION before_update_Shop_Unit_Measurement_Conversion(); diff --git a/static/PostgreSQL/381.6_tri_Shop_Supplier_Purchase_Order.sql b/static/PostgreSQL/381.6_tri_Shop_Supplier_Purchase_Order.sql deleted file mode 100644 index 4c2cc08c..00000000 --- a/static/PostgreSQL/381.6_tri_Shop_Supplier_Purchase_Order.sql +++ /dev/null @@ -1,78 +0,0 @@ - --- Shop Supplier Purchase Order - -CREATE OR REPLACE FUNCTION before_insert_Shop_Supplier_Purchase_Order() -RETURNS TRIGGER AS $$ -BEGIN - IF NEW.created_on IS NULL THEN - NEW.created_on = CURRENT_TIMESTAMP; - END IF; - IF NEW.created_by IS NULL THEN - NEW.created_by = CURRENT_USER; - END IF; - - RETURN NEW; -END; -$$ LANGUAGE plpgsql; - -CREATE OR REPLACE TRIGGER tri_before_insert_Shop_Supplier_Purchase_Order -BEFORE INSERT ON Shop_Supplier_Purchase_Order -FOR EACH ROW -EXECUTE FUNCTION before_insert_Shop_Supplier_Purchase_Order(); - - -CREATE OR REPLACE FUNCTION before_update_Shop_Supplier_Purchase_Order() -RETURNS TRIGGER AS $$ -BEGIN - IF OLD.id_change_set IS NOT DISTINCT FROM NEW.id_change_set THEN - RAISE EXCEPTION 'New change Set ID must be provided.' - USING ERRCODE = '45000'; - END IF; - - INSERT INTO Shop_Supplier_Purchase_Order_Audit ( - id_order, - name_field, - value_prev, - value_new, - id_change_set - ) - -- Changed id_supplier_ordered - SELECT NEW.id_order, 'id_supplier_ordered', OLD.id_supplier_ordered, NEW.id_supplier_ordered, NEW.id_change_set - WHERE NOT OLD.id_supplier_ordered <=> NEW.id_supplier_ordered - UNION - -- Changed cost_total_local - SELECT NEW.id_order, 'cost_total_local', OLD.cost_total_local, NEW.cost_total_local, NEW.id_change_set - WHERE NOT OLD.cost_total_local <=> NEW.cost_total_local - UNION - -- Changed id_currency_cost - SELECT NEW.id_order, 'id_currency_cost', OLD.id_currency_cost, NEW.id_currency_cost, NEW.id_change_set - WHERE NOT OLD.id_currency_cost <=> NEW.id_currency_cost - /* - UNION - -- Changed latency_delivery - SELECT NEW.id_order, 'latency_delivery', OLD.latency_delivery, NEW.latency_delivery, NEW.id_change_set - WHERE NOT OLD.latency_delivery <=> NEW.latency_delivery - UNION - -- Changed quantity_ordered - SELECT NEW.id_order, 'quantity_ordered', OLD.quantity_ordered, NEW.quantity_ordered, NEW.id_change_set - WHERE NOT OLD.quantity_ordered <=> NEW.quantity_ordered - UNION - -- Changed id_unit_quantity - SELECT NEW.id_order, 'id_unit_quantity', OLD.id_unit_quantity, NEW.id_unit_quantity, NEW.id_change_set - WHERE NOT OLD.id_unit_quantity <=> NEW.id_unit_quantity - UNION - -- Changed quantity_received - SELECT NEW.id_order, 'quantity_received', OLD.quantity_received, NEW.quantity_received, NEW.id_change_set - WHERE NOT OLD.quantity_received <=> NEW.quantity_received - */ - ; - - RETURN NEW; -END; -$$ LANGUAGE plpgsql; - -CREATE OR REPLACE TRIGGER tri_before_update_Shop_Supplier_Purchase_Order -BEFORE UPDATE ON Shop_Supplier_Purchase_Order -FOR EACH ROW -EXECUTE FUNCTION before_update_Shop_Supplier_Purchase_Order(); - diff --git a/static/PostgreSQL/381.8_tri_Shop_Supplier_Purchase_Order_Product_Link.sql b/static/PostgreSQL/381.8_tri_Shop_Supplier_Purchase_Order_Product_Link.sql deleted file mode 100644 index 12c95581..00000000 --- a/static/PostgreSQL/381.8_tri_Shop_Supplier_Purchase_Order_Product_Link.sql +++ /dev/null @@ -1,87 +0,0 @@ - --- Shop Supplier Purchase Order Product Link - -CREATE OR REPLACE FUNCTION before_insert_Shop_Supplier_Purchase_Order_Product_Link() -RETURNS TRIGGER AS $$ -BEGIN - IF NEW.created_on IS NULL THEN - NEW.created_on = CURRENT_TIMESTAMP; - END IF; - IF NEW.created_by IS NULL THEN - NEW.created_by = CURRENT_USER; - END IF; - - RETURN NEW; -END; -$$ LANGUAGE plpgsql; - -CREATE OR REPLACE TRIGGER tri_before_insert_Shop_Supplier_Purchase_Order_Product_Link -BEFORE INSERT ON Shop_Supplier_Purchase_Order_Product_Link -FOR EACH ROW -EXECUTE FUNCTION before_insert_Shop_Supplier_Purchase_Order_Product_Link(); - - -CREATE OR REPLACE FUNCTION before_update_Shop_Supplier_Purchase_Order_Product_Link() -RETURNS TRIGGER AS $$ -BEGIN - IF OLD.id_change_set IS NOT DISTINCT FROM NEW.id_change_set THEN - RAISE EXCEPTION 'New change Set ID must be provided.' - USING ERRCODE = '45000'; - END IF; - - INSERT INTO Shop_Supplier_Purchase_Order_Product_Link_Audit ( - id_link, - name_field, - value_prev, - value_new, - id_change_set - ) - -- Changed id_order - SELECT NEW.id_link, 'id_order', OLD.id_order, NEW.id_order, NEW.id_change_set - WHERE NOT OLD.id_order <=> NEW.id_order - UNION - -- Changed id_permutation - SELECT NEW.id_link, 'id_permutation', OLD.id_permutation, NEW.id_permutation, NEW.id_change_set - WHERE NOT OLD.id_permutation <=> NEW.id_permutation - UNION - -- Changed cost_total_local - SELECT NEW.id_link, 'cost_total_local', OLD.cost_total_local, NEW.cost_total_local, NEW.id_change_set - WHERE NOT OLD.cost_total_local <=> NEW.cost_total_local - UNION - -- Changed id_currency_cost - SELECT NEW.id_link, 'id_currency_cost', OLD.id_currency_cost, NEW.id_currency_cost, NEW.id_change_set - WHERE NOT OLD.id_currency_cost <=> NEW.id_currency_cost - UNION - -- Changed quantity_ordered - SELECT NEW.id_link, 'quantity_ordered', OLD.quantity_ordered, NEW.quantity_ordered, NEW.id_change_set - WHERE NOT OLD.quantity_ordered <=> NEW.quantity_ordered - UNION - -- Changed id_unit_quantity - SELECT NEW.id_link, 'id_unit_quantity', OLD.id_unit_quantity, NEW.id_unit_quantity, NEW.id_change_set - WHERE NOT OLD.id_unit_quantity <=> NEW.id_unit_quantity - UNION - -- Changed quantity_received - SELECT NEW.id_link, 'quantity_received', OLD.quantity_received, NEW.quantity_received, NEW.id_change_set - WHERE NOT OLD.quantity_received <=> NEW.quantity_received - UNION - -- Changed latency_delivery_days - SELECT NEW.id_link, 'latency_delivery_days', OLD.latency_delivery_days, NEW.latency_delivery_days, NEW.id_change_set - WHERE NOT OLD.latency_delivery_days <=> NEW.latency_delivery_days - UNION - -- Changed display_order - SELECT NEW.id_link, 'display_order', OLD.display_order, NEW.display_order, NEW.id_change_set - WHERE NOT OLD.display_order <=> NEW.display_order - UNION - -- Changed active - SELECT NEW.id_link, 'active', OLD.active, NEW.active, NEW.id_change_set - WHERE NOT OLD.active <=> NEW.active - ; - - RETURN NEW; -END; -$$ LANGUAGE plpgsql; - -CREATE OR REPLACE TRIGGER tri_before_update_Shop_Supplier_Purchase_Order_Product_Link -BEFORE UPDATE ON Shop_Supplier_Purchase_Order_Product_Link -FOR EACH ROW -EXECUTE FUNCTION before_update_Shop_Supplier_Purchase_Order_Product_Link(); diff --git a/static/PostgreSQL/383_tri_Shop_Manufacturing_Purchase_Order.sql b/static/PostgreSQL/383_tri_Shop_Manufacturing_Purchase_Order.sql deleted file mode 100644 index ab23291e..00000000 --- a/static/PostgreSQL/383_tri_Shop_Manufacturing_Purchase_Order.sql +++ /dev/null @@ -1,63 +0,0 @@ - --- Shop Manufacturing Purchase Order - -CREATE OR REPLACE FUNCTION before_insert_Shop_Manufacturing_Purchase_Order() -RETURNS TRIGGER AS $$ -BEGIN - IF NEW.created_on IS NULL THEN - NEW.created_on = CURRENT_TIMESTAMP; - END IF; - IF NEW.created_by IS NULL THEN - NEW.created_by = CURRENT_USER; - END IF; - - RETURN NEW; -END; -$$ LANGUAGE plpgsql; - -CREATE OR REPLACE TRIGGER tri_before_insert_Shop_Manufacturing_Purchase_Order -BEFORE INSERT ON Shop_Manufacturing_Purchase_Order -FOR EACH ROW -EXECUTE FUNCTION before_insert_Shop_Manufacturing_Purchase_Order(); - - -CREATE OR REPLACE FUNCTION before_update_Shop_Manufacturing_Purchase_Order() -RETURNS TRIGGER AS $$ -BEGIN - IF OLD.id_change_set IS NOT DISTINCT FROM NEW.id_change_set THEN - RAISE EXCEPTION 'New change Set ID must be provided.' - USING ERRCODE = '45000'; - END IF; - - INSERT INTO Shop_Manufacturing_Purchase_Order_Audit ( - id_order, - name_field, - value_prev, - value_new, - id_change_set - ) - -- Changed cost_total_local - SELECT NEW.id_order, 'cost_total_local', OLD.cost_total_local, NEW.cost_total_local, NEW.id_change_set - WHERE NOT OLD.cost_total_local <=> NEW.cost_total_local - UNION - -- Changed value_produced_total_local - SELECT NEW.id_order, 'value_produced_total_local', OLD.value_produced_total_local, NEW.value_produced_total_local, NEW.id_change_set - WHERE NOT OLD.value_produced_total_local <=> NEW.value_produced_total_local - UNION - -- Changed id_currency_cost - SELECT NEW.id_order, 'id_currency_cost', OLD.id_currency_cost, NEW.id_currency_cost, NEW.id_change_set - WHERE NOT OLD.id_currency_cost <=> NEW.id_currency_cost - UNION - -- Changed active - SELECT NEW.id_order, 'active', OLD.active, NEW.active, NEW.id_change_set - WHERE NOT OLD.active <=> NEW.active - ; - - RETURN NEW; -END; -$$ LANGUAGE plpgsql; - -CREATE OR REPLACE TRIGGER tri_before_update_Shop_Manufacturing_Purchase_Order -BEFORE UPDATE ON Shop_Manufacturing_Purchase_Order -FOR EACH ROW -EXECUTE FUNCTION before_update_Shop_Manufacturing_Purchase_Order(); diff --git a/static/PostgreSQL/385_tri_Shop_Manufacturing_Purchase_Order_Product_Link.sql b/static/PostgreSQL/385_tri_Shop_Manufacturing_Purchase_Order_Product_Link.sql deleted file mode 100644 index ed7062e0..00000000 --- a/static/PostgreSQL/385_tri_Shop_Manufacturing_Purchase_Order_Product_Link.sql +++ /dev/null @@ -1,87 +0,0 @@ - --- Shop Manufacturing Purchase Order Product Link - -CREATE OR REPLACE FUNCTION before_insert_Shop_Manufacturing_Purchase_Order_Product_Link() -RETURNS TRIGGER AS $$ -BEGIN - IF NEW.created_on IS NULL THEN - NEW.created_on = CURRENT_TIMESTAMP; - END IF; - IF NEW.created_by IS NULL THEN - NEW.created_by = CURRENT_USER; - END IF; - RETURN NEW; -END; -$$ LANGUAGE plpgsql; - -CREATE OR REPLACE TRIGGER tri_before_insert_Manufacturing_Purch_Order_Product_Link -BEFORE INSERT ON Shop_Manufacturing_Purchase_Order_Product_Link -FOR EACH ROW -EXECUTE FUNCTION before_insert_Shop_Manufacturing_Purchase_Order_Product_Link(); - - -CREATE OR REPLACE FUNCTION before_update_Manufacturing_Purch_Order_Product_Link() -RETURNS TRIGGER AS $$ -BEGIN - IF OLD.id_change_set IS NOT DISTINCT FROM NEW.id_change_set THEN - RAISE EXCEPTION 'New change Set ID must be provided.' - USING ERRCODE = '45000'; - END IF; - - INSERT INTO Shop_Manufacturing_Purchase_Order_Product_Link_Audit ( - id_link, - name_field, - value_prev, - value_new, - id_change_set - ) - -- Changed id_order - SELECT NEW.id_link, 'id_order', OLD.id_order, NEW.id_order, NEW.id_change_set - WHERE NOT OLD.id_order <=> NEW.id_order - UNION - -- Changed id_permutation - SELECT NEW.id_link, 'id_permutation', OLD.id_permutation, NEW.id_permutation, NEW.id_change_set - WHERE NOT OLD.id_permutation <=> NEW.id_permutation - UNION - -- Changed cost_total_local - SELECT NEW.id_link, 'cost_total_local', OLD.cost_total_local, NEW.cost_total_local, NEW.id_change_set - WHERE NOT OLD.cost_total_local <=> NEW.cost_total_local - UNION - -- Changed id_currency_cost - SELECT NEW.id_link, 'id_currency_cost', OLD.id_currency_cost, NEW.id_currency_cost, NEW.id_change_set - WHERE NOT OLD.id_currency_cost <=> NEW.id_currency_cost - UNION - -- Changed quantity_used - SELECT NEW.id_link, 'quantity_used', OLD.quantity_used, NEW.quantity_used, NEW.id_change_set - WHERE NOT OLD.quantity_used <=> NEW.quantity_used - UNION - -- Changed id_unit_quantity - SELECT NEW.id_link, 'id_unit_quantity', OLD.id_unit_quantity, NEW.id_unit_quantity, NEW.id_change_set - WHERE NOT OLD.id_unit_quantity <=> NEW.id_unit_quantity - UNION - -- Changed quantity_produced - SELECT NEW.id_link, 'quantity_produced', OLD.quantity_produced, NEW.quantity_produced, NEW.id_change_set - WHERE NOT OLD.quantity_produced <=> NEW.quantity_produced - UNION - -- Changed latency_manufacture - SELECT NEW.id_link, 'latency_manufacture', OLD.latency_manufacture, NEW.latency_manufacture, NEW.id_change_set - WHERE NOT OLD.latency_manufacture <=> NEW.latency_manufacture - UNION - -- Changed display_order - SELECT NEW.id_link, 'display_order', OLD.display_order, NEW.display_order, NEW.id_change_set - WHERE NOT OLD.display_order <=> NEW.display_order - UNION - -- Changed active - SELECT NEW.id_link, 'active', OLD.active, NEW.active, NEW.id_change_set - WHERE NOT OLD.active <=> NEW.active - ; - - RETURN NEW; -END; -$$ LANGUAGE plpgsql; - -CREATE OR REPLACE TRIGGER tri_before_update_Manufacturing_Purch_Order_Product_Link -BEFORE UPDATE ON Shop_Manufacturing_Purchase_Order_Product_Link -FOR EACH ROW -EXECUTE FUNCTION before_update_Manufacturing_Purch_Order_Product_Link(); - diff --git a/static/PostgreSQL/387.0_tri_Shop_Customer.sql b/static/PostgreSQL/387.0_tri_Shop_Customer.sql deleted file mode 100644 index 4c318e17..00000000 --- a/static/PostgreSQL/387.0_tri_Shop_Customer.sql +++ /dev/null @@ -1,79 +0,0 @@ - --- Shop Customer - -CREATE OR REPLACE FUNCTION before_insert_Shop_Customer() -RETURNS TRIGGER AS $$ -BEGIN - IF NEW.created_on IS NULL THEN - NEW.created_on = CURRENT_TIMESTAMP; - END IF; - IF NEW.created_by IS NULL THEN - NEW.created_by = CURRENT_USER; - END IF; - RETURN NEW; -END; -$$ LANGUAGE plpgsql; - -CREATE OR REPLACE TRIGGER tri_before_insert_Shop_Customer -BEFORE INSERT ON Shop_Customer -FOR EACH ROW -EXECUTE FUNCTION before_insert_Shop_Customer(); - - -CREATE OR REPLACE FUNCTION before_update_Shop_Customer() -RETURNS TRIGGER AS $$ -BEGIN - IF OLD.id_change_set IS NOT DISTINCT FROM NEW.id_change_set THEN - RAISE EXCEPTION 'New change Set ID must be provided.' - USING ERRCODE = '45000'; - END IF; - - INSERT INTO Shop_Customer_Audit ( - id_customer, - name_field, - value_prev, - value_new, - id_change_set - ) - -- Changed name_company - SELECT NEW.id_customer, 'name_company', OLD.name_company, NEW.name_company, NEW.id_change_set - WHERE NOT OLD.name_company <=> NEW.name_company - UNION - -- Changed name_contact - SELECT NEW.id_customer, 'name_contact', OLD.name_contact, NEW.name_contact, NEW.id_change_set - WHERE NOT OLD.name_contact <=> NEW.name_contact - UNION - -- Changed department_contact - SELECT NEW.id_customer, 'department_contact', OLD.department_contact, NEW.department_contact, NEW.id_change_set - WHERE NOT OLD.department_contact <=> NEW.department_contact - UNION - -- Changed id_address - SELECT NEW.id_customer, 'id_address', OLD.id_address, NEW.id_address, NEW.id_change_set - WHERE NOT OLD.id_address <=> NEW.id_address - UNION - -- Changed phone_number - SELECT NEW.id_customer, 'phone_number', OLD.phone_number, NEW.phone_number, NEW.id_change_set - WHERE NOT OLD.phone_number <=> NEW.phone_number - UNION - -- Changed email - SELECT NEW.id_customer, 'email', OLD.email, NEW.email, NEW.id_change_set - WHERE NOT OLD.email <=> NEW.email - UNION - -- Changed id_currency - SELECT NEW.id_customer, 'id_currency', OLD.id_currency, NEW.id_currency, NEW.id_change_set - WHERE NOT OLD.id_currency <=> NEW.id_currency - UNION - -- Changed active - SELECT NEW.id_customer, 'active', OLD.active, NEW.active, NEW.id_change_set - WHERE NOT OLD.active <=> NEW.active - ; - - RETURN NEW; -END; -$$ LANGUAGE plpgsql; - -CREATE OR REPLACE TRIGGER tri_before_update_Shop_Customer -BEFORE UPDATE ON Shop_Customer -FOR EACH ROW -EXECUTE FUNCTION before_update_Shop_Customer(); - diff --git a/static/PostgreSQL/387.2_tri_Shop_Customer_Sales_Order.sql b/static/PostgreSQL/387.2_tri_Shop_Customer_Sales_Order.sql deleted file mode 100644 index f752f5e7..00000000 --- a/static/PostgreSQL/387.2_tri_Shop_Customer_Sales_Order.sql +++ /dev/null @@ -1,62 +0,0 @@ - --- Shop Customer Sales Order - -CREATE OR REPLACE FUNCTION before_insert_Shop_Customer_Sales_Order() -RETURNS TRIGGER AS $$ -BEGIN - IF NEW.created_on IS NULL THEN - NEW.created_on = CURRENT_TIMESTAMP; - END IF; - IF NEW.created_by IS NULL THEN - NEW.created_by = CURRENT_USER; - END IF; - RETURN NEW; -END; -$$ LANGUAGE plpgsql; - -CREATE OR REPLACE TRIGGER tri_before_insert_Shop_Customer_Sales_Order -BEFORE INSERT ON Shop_Customer_Sales_Order -FOR EACH ROW -EXECUTE FUNCTION before_insert_Shop_Customer_Sales_Order(); - - -CREATE OR REPLACE FUNCTION before_update_Shop_Customer_Sales_Order() -RETURNS TRIGGER AS $$ -BEGIN - IF OLD.id_change_set IS NOT DISTINCT FROM NEW.id_change_set THEN - RAISE EXCEPTION 'New change Set ID must be provided.' - USING ERRCODE = '45000'; - END IF; - - INSERT INTO Shop_Customer_Sales_Order_Audit ( - id_order, - name_field, - value_prev, - value_new, - id_change_set - ) - -- Changed id_customer - SELECT NEW.id_order, 'id_customer', OLD.id_customer, NEW.id_customer, NEW.id_change_set - WHERE NOT OLD.id_customer <=> NEW.id_customer - UNION - -- Changed price_total_local - SELECT NEW.id_order, 'price_total_local', OLD.price_total_local, NEW.price_total_local, NEW.id_change_set - WHERE NOT OLD.price_total_local <=> NEW.price_total_local - UNION - -- Changed id_currency_price - SELECT NEW.id_order, 'id_currency_price', OLD.id_currency_price, NEW.id_currency_price, NEW.id_change_set - WHERE NOT OLD.id_currency_price <=> NEW.id_currency_price - UNION - -- Changed active - SELECT NEW.id_order, 'active', OLD.active, NEW.active, NEW.id_change_set - WHERE NOT OLD.active <=> NEW.active - ; - - RETURN NEW; -END; -$$ LANGUAGE plpgsql; - -CREATE OR REPLACE TRIGGER tri_before_update_Shop_Customer_Sales_Order -BEFORE UPDATE ON Shop_Customer_Sales_Order -FOR EACH ROW -EXECUTE FUNCTION before_update_Shop_Customer_Sales_Order(); diff --git a/static/PostgreSQL/389_tri_Shop_Customer_Sales_Order_Product_Link.sql b/static/PostgreSQL/389_tri_Shop_Customer_Sales_Order_Product_Link.sql deleted file mode 100644 index 80a03098..00000000 --- a/static/PostgreSQL/389_tri_Shop_Customer_Sales_Order_Product_Link.sql +++ /dev/null @@ -1,86 +0,0 @@ - --- Shop Customer Sales Order Product Link - -CREATE OR REPLACE FUNCTION before_insert_Shop_Customer_Sales_Order_Product_Link() -RETURNS TRIGGER AS $$ -BEGIN - IF NEW.created_on IS NULL THEN - NEW.created_on = CURRENT_TIMESTAMP; - END IF; - IF NEW.created_by IS NULL THEN - NEW.created_by = CURRENT_USER; - END IF; - RETURN NEW; -END; -$$ LANGUAGE plpgsql; - -CREATE OR REPLACE TRIGGER tri_before_insert_Shop_Customer_Sales_Order_Product_Link -BEFORE INSERT ON Shop_Customer_Sales_Order_Product_Link -FOR EACH ROW -EXECUTE FUNCTION before_insert_Shop_Customer_Sales_Order_Product_Link(); - - -CREATE OR REPLACE FUNCTION before_update_Shop_Customer_Sales_Order_Product_Link() -RETURNS TRIGGER AS $$ -BEGIN - IF OLD.id_change_set IS NOT DISTINCT FROM NEW.id_change_set THEN - RAISE EXCEPTION 'New change Set ID must be provided.' - USING ERRCODE = '45000'; - END IF; - - INSERT INTO Shop_Customer_Sales_Order_Product_Link_Audit ( - id_link, - name_field, - value_prev, - value_new, - id_change_set - ) - -- Changed id_order - SELECT NEW.id_link, 'id_order', OLD.id_order, NEW.id_order, NEW.id_change_set - WHERE NOT OLD.id_order <=> NEW.id_order - UNION - -- Changed id_permutation - SELECT NEW.id_link, 'id_permutation', OLD.id_permutation, NEW.id_permutation, NEW.id_change_set - WHERE NOT OLD.id_permutation <=> NEW.id_permutation - UNION - -- Changed price_total_local - SELECT NEW.id_link, 'price_total_local', OLD.price_total_local, NEW.price_total_local, NEW.id_change_set - WHERE NOT OLD.price_total_local <=> NEW.price_total_local - UNION - -- Changed id_currency_price - SELECT NEW.id_link, 'id_currency_price', OLD.id_currency_price, NEW.id_currency_price, NEW.id_change_set - WHERE NOT OLD.id_currency_price <=> NEW.id_currency_price - UNION - -- Changed quantity_ordered - SELECT NEW.id_link, 'quantity_ordered', OLD.quantity_ordered, NEW.quantity_ordered, NEW.id_change_set - WHERE NOT OLD.quantity_ordered <=> NEW.quantity_ordered - UNION - -- Changed id_unit_quantity - SELECT NEW.id_link, 'id_unit_quantity', OLD.id_unit_quantity, NEW.id_unit_quantity, NEW.id_change_set - WHERE NOT OLD.id_unit_quantity <=> NEW.id_unit_quantity - UNION - -- Changed quantity_delivered - SELECT NEW.id_link, 'quantity_delivered', OLD.quantity_delivered, NEW.quantity_delivered, NEW.id_change_set - WHERE NOT OLD.quantity_delivered <=> NEW.quantity_delivered - UNION - -- Changed latency_delivery_days - SELECT NEW.id_link, 'latency_delivery_days', OLD.latency_delivery_days, NEW.latency_delivery_days, NEW.id_change_set - WHERE NOT OLD.latency_delivery_days <=> NEW.latency_delivery_days - UNION - -- Changed display_order - SELECT NEW.id_link, 'display_order', OLD.display_order, NEW.display_order, NEW.id_change_set - WHERE NOT OLD.display_order <=> NEW.display_order - UNION - -- Changed active - SELECT NEW.id_link, 'active', OLD.active, NEW.active, NEW.id_change_set - WHERE NOT OLD.active <=> NEW.active - ; - - RETURN NEW; -END; -$$ LANGUAGE plpgsql; - -CREATE OR REPLACE TRIGGER tri_before_update_Shop_Customer_Sales_Order_Product_Link -BEFORE UPDATE ON Shop_Customer_Sales_Order_Product_Link -FOR EACH ROW -EXECUTE FUNCTION before_update_Shop_Customer_Sales_Order_Product_Link(); diff --git a/static/PostgreSQL/600_p_shop_save_product.sql b/static/PostgreSQL/600_p_shop_save_product.sql deleted file mode 100644 index d29a1d12..00000000 --- a/static/PostgreSQL/600_p_shop_save_product.sql +++ /dev/null @@ -1,257 +0,0 @@ - - -DO $$ -BEGIN - RAISE NOTICE 'TRIGGER CREATION COMPLETE'; -END $$; - -/* -CREATE OR REPLACE PROCEDURE p_save_product ( - IN a_guid UUID, - -) -AS $$ -BEGIN - - -- Argument default values - IF a_ids_category IS NULL THEN - SET a_ids_category = ''; - END IF; - IF a_get_inactive_categories IS NULL THEN - SET a_get_inactive_categories = FALSE; - END IF; - /* - IF a_get_all_categories IS NULL THEN - SET a_get_all_categories = FALSE; - END IF; - */ - IF a_ids_product IS NULL THEN - SET a_ids_product = ''; - END IF; - IF a_get_inactive_products IS NULL THEN - SET a_get_inactive_products = FALSE; - END IF; - IF a_get_first_product_only IS NULL THEN - SET a_get_first_product_only = TRUE; - END IF; - IF a_get_all_products IS NULL THEN - SET a_get_all_products = FALSE; - END IF; - IF a_ids_image IS NULL THEN - SET a_ids_image = ''; - END IF; - IF a_get_inactive_images IS NULL THEN - SET a_get_inactive_images = FALSE; - END IF; - IF a_get_first_image_only IS NULL THEN - SET a_get_first_image_only = TRUE; - END IF; - IF a_get_all_images IS NULL THEN - SET a_get_all_images = FALSE; - END IF; - - - -- Temporary tables - CREATE TABLE tmp_Shop_Product_Category ( - id_category INTEGER NOT NULL, - active BOOLEAN NOT NULL, - display_order INTEGER NOT NULL, - can_view BOOLEAN NOT NULL, - can_edit BOOLEAN NOT NULL, - can_admin BOOLEAN NOT NULL - ); - - CREATE TABLE tmp_Shop_Product ( - id_category INTEGER NOT NULL, - id_product INTEGER NOT NULL, - active BOOLEAN NOT NULL, - display_order INTEGER NOT NULL, - can_view BOOLEAN NOT NULL, - can_edit BOOLEAN NOT NULL, - can_admin BOOLEAN NOT NULL - ); - - CREATE TABLE tmp_Shop_Variation ( - id_variation INTEGER NOT NULL, - id_product INTEGER NOT NULL, - display_order INTEGER NOT NULL - ); - - CREATE TABLE tmp_Shop_Image ( - id_product INTEGER NOT NULL, - id_image INTEGER NOT NULL, - active BOOLEAN NOT NULL, - display_order INTEGER NOT NULL - ); - - CREATE TABLE IF NOT EXISTS tmp_Msg_Error ( - display_order INTEGER NOT NULL PRIMARY KEY GENERATED ALWAYS AS IDENTITY, - guid UUID NOT NULL, - id_type INTEGER 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 - ); - - - -- Parse filters - SET a_ids_category = REPLACE(a_ids_category, ',', '|'); - SET a_ids_product = REPLACE(a_ids_product, ',', '|'); - SET v_has_filter_category = CASE WHEN a_ids_category = '' THEN FALSE ELSE TRUE END; - SET v_has_filter_product = CASE WHEN a_ids_product = '' THEN FALSE ELSE TRUE END; - - INSERT INTO tmp_Shop_Product_Category ( - id_category, active, display_order - ) - SELECT C.id_category, C.active, C.display_order - FROM Shop_Product_Category C - WHERE (NOT v_has_filter_category OR C.id_category LIKE '%' || a_ids_category || '%') - AND (a_get_inactive_categories OR C.active); - - INSERT INTO tmp_Shop_Product ( - id_category, id_product, active, display_order - ) - SELECT P.id_category, P.id_product, P.active, P.display_order - FROM Shop_Product P - INNER JOIN tmp_Shop_Product_Category tC - ON P.id_category = tC.id_category - WHERE (a_get_all_products OR P.id_product LIKE '%' || a_ids_product || '%') - AND (a_get_inactive_products OR P.active); - - IF a_get_first_product_only THEN - DELETE FROM tmp_Shop_Product - WHERE display_order > (SELECT display_order FROM tmp_Shop_Product ORDER BY display_order ASC LIMIT 1); - END IF; - - IF v_has_filter_product THEN - DELETE FROM tmp_Shop_Product_Category - WHERE id_category NOT IN (SELECT DISTINCT id_category FROM tmp_Shop_Product); - END IF; - - INSERT INTO tmp_Shop_Variation ( - id_variation, id_product -- , display_order - ) - SELECT P.id_variation, P.id_product -- , P.display_order - FROM Shop_Variation V - INNER JOIN tmp_Shop_Product tP - ON V.id_product = tP.id_product - WHERE V.active; - - INSERT INTO tmp_Shop_Image ( - id_product, id_image, active, display_order - ) - SELECT I.id_product, I.id_image, I.active, I.display_order - FROM Shop_Image I - INNER JOIN tmp_Shop_Product tP - ON I.id_image = tP.id_image - WHERE (a_get_all_images OR I.id_image LIKE '%' || a_ids_image || '%') - AND (a_get_inactive_images OR I.active); - - IF a_get_first_image_only THEN - DELETE FROM tmp_Shop_Image - WHERE display_order > (SELECT display_order FROM tmp_Shop_Image ORDER BY display_order ASC LIMIT 1); - END IF; - - IF v_has_filter_image THEN - DELETE FROM tmp_Shop_Product - WHERE id_product NOT IN (SELECT DISTINCT id_product FROM tmp_Shop_Image); - DELETE FROM tmp_Shop_Product_Category - WHERE id_category NOT IN (SELECT DISTINCT id_category FROM tmp_Shop_Product); - END IF; - - - -- Permissions - IF EXISTS (SELECT * FROM tmp_Shop_Product_Category LIMIT 1) THEN - SET v_guid_permission = gen_random_uuid(); - SET v_id_user = CURRENT_USER; - SET v_id_permission_product = (SELECT id_permission FROM Shop_Permission WHERE code = 'STORE_PRODUCT' LIMIT 1); - SET v_ids_product_permission = (SELECT STRING_AGG(item, '|') FROM tmp_Shop_Product); - - CALL p_shop_calc_user(v_guid_permission, v_id_user, v_id_permission_product, v_ids_product_permission); - - UPDATE tmp_Shop_Product tP - INNER JOIN Shop_Calc_User_Temp TP - ON tP.id_product = TP.id_product - AND TP.GUID = v_guid_permission - SET tP.can_view = TP.can_view, - tP.can_edit = TP.can_edit, - tP.can_admin = TP.can_admin; - - CALL p_shop_clear_calc_user(v_guid_permission); - END IF; - - - -- Returns - SET v_now = CURRENT_TIMESTAMP; - - -- Categories - SELECT ( - tC.id_category, - C.name, - C.description, - tC.can_view, - tC.can_edit, - tC.can_admin - ) - FROM tmp_Shop_Product_Category tC - INNER JOIN Shop_Product_Category C - ON tC.id_category = C.id_category - ; - - -- Products - SELECT - tP.id_product, - P.name, - P.price, - P.description, - C.id_category, - P.lead_time, - P.id_stripe_product, - P.id_stripe_price, - P.is_subscription, - RI.name AS name_interval_recurrence, - RI.name_plural AS name_plural_interval_recurrence, - P.count_interval_recurrence, - tP.can_view, - tP.can_edit, - tP.can_admin - FROM tmp_Shop_Product tP - INNER JOIN Shop_Product P - ON tP.id_product = P.id_product - INNER JOIN Shop_Interval_Recurrence RI - ON P.id_unit_measurement_interval_recurrence = RI.id_interval - ; - - -- Variations - SELECT - PVL.id_variation, - tV.id_product, - V.code, - V.name, - PVL.display_order - FROM tmp_Shop_Product tV - INNER JOIN Shop_Product_Variation_Link PVL - ON tV.id_product = PVL.id_product - INNER JOIN Shop_Variation V - ON PVL.id_variation = V.id_variation - WHERE V.active - AND PVL.active - ; - - -- Images - SELECT - tI.id_image, - tI.id_product, - I.url, - PIL.display_order - FROM tmp_Shop_Image tI - INNER JOIN Shop_Product_Image_Link PIL - ON tI.id_product = PIL.id_product - WHERE I.active - AND PIL.active - ; -END; -$$ LANGUAGE plpgsql; -*/ diff --git a/static/PostgreSQL/600_p_shop_user_eval.sql b/static/PostgreSQL/600_p_shop_user_eval.sql deleted file mode 100644 index f50b45c0..00000000 --- a/static/PostgreSQL/600_p_shop_user_eval.sql +++ /dev/null @@ -1,730 +0,0 @@ - -/* - -CALL p_shop_calc_user ( - gen_random_uuid(), -- a_guid - '', -- a_id_user - 0, -- a_get_inactive_users - '1', -- a_ids_permission - '', -- a_ids_access_level - '1' -- a_ids_product -) - -*/ - -CREATE OR REPLACE PROCEDURE p_shop_calc_user ( - IN a_guid UUID, - IN a_id_user INTEGER, - IN a_get_inactive_users BOOLEAN, - IN a_ids_permission INTEGER[], - IN a_ids_access_level INTEGER[], - IN a_ids_product INTEGER[] -- VARCHAR(4000) -- IN a_ids_permutation VARCHAR(4000) - /* - OUT result_errors TABLE ( - guid UUID, - id_type INTEGER, - code VARCHAR(50), - msg VARCHAR(4000) - ) - */ - -- INOUT a_error_msg TEXT -) -AS $$ -DECLARE - v_guid UUID; - v_id_user INTEGER; - v_get_inactive_users BOOLEAN; - v_ids_permission INTEGER[]; - v_ids_access_level INTEGER[]; - v_ids_product INTEGER[]; -- TEXT; -- VARCHAR(4000); -- IN a_ids_permutation VARCHAR(4000) - v_has_filter_user BOOLEAN; - v_has_filter_permission BOOLEAN; - v_has_filter_access_level BOOLEAN; - -- v_has_filter_permutation BOOLEAN; - v_has_filter_product BOOLEAN; - v_id_permission_product INTEGER; - v_id_permission INTEGER; - -- v_ids_product UUID; - v_id_access_level_view INTEGER; - -- v_id_access_level_product_required INTEGER; - v_priority_access_level_view INTEGER; - v_priority_access_level_edit INTEGER; - v_priority_access_level_admin INTEGER; - v_id_access_level INTEGER; - v_priority_access_level INTEGER; - v_now TIMESTAMP; - v_ids_row_delete UUID; - v_code_error_data VARCHAR(200); - v_id_error_data INTEGER; - v_code_error_permission VARCHAR(200); - -- result_errors REFCURSOR; - -- v_error_msg TEXT := NULL; -BEGIN - -- Parse arguments + get default values - v_guid := COALESCE(a_guid, gen_random_uuid()); - v_id_user := CASE WHEN a_id_user IS NULL THEN '' ELSE TRIM(a_id_user) END; - v_get_inactive_users := COALESCE(a_get_inactive_users, FALSE); - v_ids_permission := COALESCE(a_ids_permission, ARRAY[]::INTEGER[]); - v_ids_access_level := COALESCE(a_ids_access_level, ARRAY[]::INTEGER[]); - -- v_ids_permutation := CASE WHEN a_ids_permutation IS NULL THEN '' ELSE TRIM(a_ids_permutation) END; - v_ids_product := COALESCE(a_ids_product, ARRAY[]::INTEGER[]); - - v_id_error_data := 1; - v_code_error_data := (SELECT code FROM Shop_Msg_Error_Type WHERE id_type = v_id_error_data); - - v_code_error_permission := (SELECT code FROM Shop_Msg_Error_Type WHERE id_type = 2); - - v_has_filter_user := (v_id_user <= 0); - v_has_filter_permission := (CARDINALITY(v_ids_permission) > 0); - v_has_filter_access_level := (CARDINALITY(v_ids_access_level) > 0); - /* - v_has_filter_permutation := CASE WHEN v_ids_permutation = '' THEN FALSE ELSE TRUE END; - */ - v_has_filter_product := (CARDINALITY(v_ids_product) = 0); - v_id_access_level_view := (SELECT id_access_level FROM Shop_Access_Level WHERE code = 'VIEW' LIMIT 1); - v_priority_access_level_view := (SELECT priority FROM Shop_Access_Level WHERE id_access_level = v_id_access_level_view); - v_priority_access_level_edit := (SELECT priority FROM Shop_Access_Level WHERE code = 'EDIT' LIMIT 1); - v_priority_access_level_admin := (SELECT priority FROM Shop_Access_Level WHERE code = 'ADMIN' LIMIT 1); - - v_id_permission_product := (SELECT v_id_permission FROM Shop_Permission WHERE code = 'SHOP_PRODUCT' LIMIT 1); - - -- Clear previous proc results - -- DROP TABLE IF EXISTS tmp_User_Role_Link; - -- DROP TEMPORARY TABLE IF EXISTS tmp_User_Role_Link; - DROP TABLE IF EXISTS tmp_Shop_Product_p_shop_calc_user; - -- DROP TABLE IF EXISTS Shop_Calc_User_Temp; - - - -- Permanent Table - CREATE TABLE IF NOT EXISTS Shop_Calc_User_Temp ( - id_row INTEGER NOT NULL PRIMARY KEY GENERATED ALWAYS AS IDENTITY, - guid UUID NOT NULL, - id_user INTEGER, - CONSTRAINT FK_Shop_Calc_User_Temp_id_user - FOREIGN KEY (id_user) - REFERENCES Shop_User (id_user), - id_permission_required INTEGER NOT NULL, - CONSTRAINT FK_Shop_Calc_User_Temp_id_permission_required - FOREIGN KEY (id_permission_required) - REFERENCES Shop_Permission (id_permission), - /* - id_access_level_required INTEGER NOT NULL, - CONSTRAINT FK_Shop_Calc_User_Temp_id_access_level_required - FOREIGN KEY (id_access_level_required) - REFERENCES Shop_Access_Level (id_access_level), - */ - priority_access_level_required INTEGER NOT NULL, - /* - CONSTRAINT FK_Shop_Calc_User_Temp_priority_access_level_required - FOREIGN KEY (priority_access_level_required) - REFERENCES Shop_Access_Level (priority), - */ - id_product INTEGER NULL, - CONSTRAINT FK_Shop_Calc_User_Temp_id_product - FOREIGN KEY (id_product) - REFERENCES Shop_Product (id_product), - /* - id_permutation INTEGER NULL, - CONSTRAINT FK_Shop_Calc_User_Temp_id_permutation - FOREIGN KEY (id_permutation) - REFERENCES parts.Shop_Product_Permutation (id_permutation), - */ - is_super_user BOOLEAN NULL, - priority_access_level_user INTEGER NULL, - /* - CONSTRAINT FK_Shop_Calc_User_Temp_priority_access_level_minimum - FOREIGN KEY (priority_access_level_minimum) - REFERENCES Shop_Access_Level (priority) - */ - can_view BOOLEAN, - can_edit BOOLEAN, - can_admin BOOLEAN, -- DEFAULT 0 - name_error VARCHAR(200) NULL - ); - - -- Temporary tables - CREATE TEMPORARY TABLE tmp_Shop_Product_p_shop_calc_user ( - id_row INTEGER NOT NULL PRIMARY KEY GENERATED ALWAYS AS IDENTITY, - id_product INTEGER NOT NULL, - CONSTRAINT FK_tmp_Shop_Product_p_shop_calc_user_id_product FOREIGN KEY (id_product) - REFERENCES Shop_Product (id_product), - /* - id_permutation INTEGER NOT NULL, - CONSTRAINT FK_tmp_Shop_Product_p_shop_calc_user_id_permutation - FOREIGN KEY (id_permutation) - REFERENCES parts.Shop_Product_Permutation (id_permutation), - */ - id_access_level_required INTEGER NOT NULL, - CONSTRAINT FK_tmp_Shop_Product_p_shop_calc_user_id_access_level_required - FOREIGN KEY (id_access_level_required) - REFERENCES Shop_Access_Level (id_access_level), - guid UUID NOT NULL, - rank_product INTEGER NOT NULL - ); - - /* - CREATE TEMPORARY TABLE IF NOT EXISTS tmp_Msg_Error ( - display_order INTEGER NOT NULL PRIMARY KEY GENERATED ALWAYS AS IDENTITY, - guid UUID NOT NULL, - id_type INTEGER 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 - ); - */ - - - -- Permission IDs - IF v_has_filter_permission THEN - -- CALL p_split(a_guid, v_ids_permission, ','); - - -- Invalid - IF EXISTS ( - SELECT UNNEST(v_ids_permission) AS id_permission - EXCEPT - SELECT id_permission FROM Shop_Permission - ) THEN -- (SELECT PERM.id_permission FROM Split_Temp ST LEFT JOIN Shop_Permission PERM ON ST.substring = PERM.id_permission WHERE ISNULL(PERM.id_permission)) THEN - /* - INSERT INTO tmp_Msg_Error ( - guid, - id_type, - code, - msg - ) - SELECT - v_guid, - (SELECT id_type FROM Shop_Msg_Error_Type WHERE code = v_code_error_data LIMIT 1), - v_code_error_data, - 'Invalid permission IDs: ' || COALESCE(STRING_AGG(ST.substring, ', '), 'NULL') - FROM Split_Temp ST - LEFT JOIN Shop_Permission PERM ON ST.substring = PERM.id_permission - WHERE ISNULL(PERM.id_permission) - ; - */ - RAISE EXCEPTION 'Invalid permission IDs: %', ( - SELECT STRING_AGG(id_permission, ', ') - FROM ( - SELECT UNNEST(v_ids_permission) AS id_permission - EXCEPT - SELECT id_permission FROM Shop_Permission - ) Permission - ) - USING ERRCODE = '22000' - ; - END IF; - - -- Inactive - IF EXISTS ( - SELECT UNNEST(v_ids_permission) AS id_permission - EXCEPT - SELECT id_permission FROM Shop_Permission - WHERE active - ) THEN -- (SELECT PERM.id_permission FROM Split_Temp ST INNER JOIN Shop_Permission PERM ON ST.substring = PERM.id_permission WHERE PERM.active = FALSE) THEN - /* - INSERT INTO tmp_Msg_Error ( - guid, - id_type, - code, - msg - ) - SELECT - v_guid, - (SELECT id_type FROM Shop_Msg_Error_Type WHERE code = v_code_error_data LIMIT 1), - v_code_error_data, - 'The following permissions are not active: ' || COALESCE(STRING_AGG(ST.substring, ', '), 'NULL') - FROM Split_Temp ST - INNER JOIN Shop_Permission PERM ON ST.substring = PERM.id_permission - WHERE PERM.active = FALSE - ; - */ - RAISE EXCEPTION 'Inactive permission IDs: %', ( - SELECT STRING_AGG(id_permission, ', ') - FROM ( - SELECT UNNEST(v_ids_permission) AS id_permission - EXCEPT - SELECT id_permission FROM Shop_Permission - WHERE active - ) Permission - ) - USING ERRCODE = '22000' - ; - END IF; - - -- Get the permission with the highest priority access level required - v_id_permission := ( - SELECT PERMS.id_permission - FROM ( - SELECT PERM2.id_permission - FROM Split_Temp ST - INNER JOIN Shop_Permission PERM2 ON ST.substring = PERM2.id_permission - WHERE PERM.active - UNION - SELECT v_id_permission_product - ) PERMS - INNER JOIN Shop_Permission PERM1 ON PERMS.id_permission = PERM1.id_permission - INNER JOIN Shop_Access_Level AL ON PERM1.id_access_level_required = AL.id_access_level - ORDER BY AL.priority ASC - LIMIT 1 - ); - - -- DROP TABLE Split_Temp; - ELSIF v_has_filter_product THEN - v_id_permission := v_id_permission_product; - ELSE - /* - INSERT INTO tmp_Msg_Error ( - guid, - id_type, - code, - msg - ) - VALUES ( - v_guid, - (SELECT id_type FROM Shop_Msg_Error_Type WHERE code = v_code_error_data LIMIT 1), - v_code_error_data, - 'Permission ID required' - ) - ; - */ - RAISE EXCEPTION 'Permission ID required.' - USING ERRCODE = '22000' - ; - END IF; - - -- access level - IF v_has_filter_access_level THEN - IF EXISTS ( - /* - SELECT ST.substring - FROM Split_Temp ST - LEFT JOIN Shop_Access_Level AL - ON ST.substring = AL.id_access_level - WHERE - ISNULL(AL.id_access_level) - OR AL.active = FALSE - */ - SELECT UNNEST(v_ids_access_level) AS id_access_level - EXCEPT - SELECT id_access_level FROM Shop_Access_Level - ) THEN - /* - INSERT INTO tmp_Msg_Error ( - guid, - id_type, - code, - msg - ) - SELECT - v_guid, - (SELECT id_type FROM Shop_Msg_Error_Type WHERE code = v_code_error_data LIMIT 1), - v_code_error_data, - 'Invalid access level IDs: ' || STRING_AGG(ST.substring, ', ') - FROM Split_Temp ST - LEFT JOIN Shop_Access_Level AL ON ST.substring = AL.id_access_level - WHERE ISNULL(AL.id_access_level) - ; - */ - RAISE EXCEPTION 'Invalid access level IDs: %', ( - SELECT STRING_AGG(id_access_level, ', ') - FROM ( - SELECT UNNEST(v_ids_access_level) AS id_access_level - EXCEPT - SELECT id_access_level FROM Shop_Access_Level - ) AL - ) - USING ERRCODE = '22000' - ; - END IF; - - IF EXISTS ( - SELECT UNNEST(v_ids_access_level) AS id_access_level - EXCEPT - SELECT id_access_level FROM Shop_Access_Level - WHERE active - ) THEN - RAISE EXCEPTION 'Inactive access level IDs: %', ( - SELECT STRING_AGG(id_access_level, ', ') - FROM ( - SELECT UNNEST(v_ids_access_level) AS id_access_level - EXCEPT - SELECT id_access_level FROM Shop_Access_Level - ) AL - ) - USING ERRCODE = '22000' - ; - END IF; - - v_id_access_level := ( - SELECT AL.id_access_level - FROM Shop_Access_Level AL - WHERE - AL.active - AND AL.id_access_level = ANY(v_ids_access_level) - ORDER BY AL.priority ASC - LIMIT 1 - ); - ELSE - v_id_access_level := ( - SELECT id_access_level_required AS id_access_level - FROM ( - SELECT id_access_level - FROM Shop_Permission PERM - WHERE - PERM.id_permission = v_id_permission - UNION - SELECT v_id_access_level_view AS id_access_level - ) PERMS - INNER JOIN Shop_Access_Level AL ON PERMS.id_access_level = AL.id_access_level - ORDER BY AL.priority ASC - LIMIT 1 - ); -- v_id_access_level_view; - END IF; - - v_priority_access_level := (SELECT priority FROM Shop_Access_Level WHERE id_access_level = v_id_access_level); - - -- Invalid user ID - IF v_has_filter_user THEN - IF ISNULL((SELECT id_user FROM Shop_User WHERE id_user = v_id_user)) THEN -- NOT v_has_filter_user THEN - /* - INSERT INTO tmp_Msg_Error ( - guid, - id_type, - code, - msg - ) - VALUES ( - v_guid, - (SELECT id_type FROM Shop_Msg_Error_Type WHERE code = v_code_error_data LIMIT 1), - v_code_error_data, - 'Invalid user ID: ' || COALESCE(v_id_user, 'NULL') - ) - ; - */ - RAISE EXCEPTION 'Invalid user ID: %', v_id_user - USING ERRCODE = '22000' - ; - END IF; - - IF ISNULL((SELECT id_user FROM Shop_User WHERE id_user = v_id_user AND active)) THEN - RAISE EXCEPTION 'Inactive user ID: %', v_id_user - USING ERRCODE = '22000' - ; - END IF; - END IF; - - - -- Invalid products - IF v_has_filter_product THEN - -- Invalid product IDs - IF EXISTS ( - SELECT UNNEST(v_ids_product) AS id_product - EXCEPT - SELECT id_product FROM Shop_Product - ) THEN -- (SELECT * FROM Split_Temp ST LEFT JOIN Shop_Product P ON ST.substring = P.id_product WHERE ISNULL(P.id_product)) THEN - /* - INSERT INTO tmp_Msg_Error ( - guid, - id_type, - code, - msg - ) - SELECT - v_guid, - (SELECT id_type FROM Shop_Msg_Error_Type WHERE code = v_code_error_data LIMIT 1), - v_code_error_data, - 'Invalid product IDs: ' || COALESCE(STRING_AGG(ST.substring, ', '), 'NULL') - FROM Split_Temp ST - LEFT JOIN Shop_Product P ON ST.substring = P.id_product - WHERE ISNULL(P.id_product) - ; - */ - RAISE EXCEPTION 'Invalid product IDs: %', ( - SELECT STRING_AGG(id_product, ', ') - FROM ( - SELECT UNNEST(v_ids_product) AS id_product - EXCEPT - SELECT id_product FROM Shop_Product - ) Product - ) - USING ERRCODE = '22000' - ; - END IF; - - INSERT INTO tmp_Shop_Product_p_shop_calc_user ( - id_product, - -- id_permutation, - id_access_level_required, - guid, - rank_product -- rank_permutation - ) - SELECT - DISTINCT P.id_product, - -- PP.id_permutation, - P.id_access_level_required, - v_guid, - RANK() OVER (ORDER BY C.display_order, P.display_order) AS rank_product - FROM Shop_Product P -- ON ST.substring = P.id_product -- Shop_Product_Permutation PP - INNER JOIN Shop_Product_Category C ON P.id_category = C.id_category - INNER JOIN Shop_Access_Level AL - ON P.id_access_level_required = AL.id_access_level - AND AL.active - WHERE -- FIND_IN_SET(P.id_product, v_ids_product) > 0 -- FIND_IN_SET(PP.id_permutation, v_ids_permutation) > 0 - P.id_product = ANY(v_ids_product) - -- AND P.active -- not worried as we want users to be able to see their order history - ; - /* - DELETE FROM tmp_Shop_Product_p_shop_calc_user - WHERE rank_permutation > 1 - ; - */ - -- v_has_filter_product := EXISTS (SELECT * FROM tmp_Shop_Product_p_shop_calc_user WHERE v_guid = guid); - END IF; - - -- User permissions - /* - IF v_has_filter_product THEN - INSERT INTO Shop_Calc_User_Temp ( - guid, - id_user, - id_permission_required, - id_product, - -- id_permutation, - priority_access_level_required, - priority_access_level_user, - is_super_user, - can_view, - can_edit, - can_admin - ) - SELECT - v_guid, - v_id_user, - v_id_permission AS id_permission_required, - P.id_product, - -- t_P.id_permutation, - CASE WHEN v_priority_access_level <= AL_P.priority THEN v_priority_access_level ELSE AL_P.priority END AS priority_access_level_required, - AL_U.priority AS priority_access_level_user, - U.is_super_user, - CASE WHEN U.is_super_user THEN TRUE ELSE CASE WHEN NOT ISNULL(AL_U.priority) AND AL_U.priority <= v_priority_access_level_view AND AL_U.priority <= priority_access_level_required THEN TRUE ELSE FALSE END END AS can_view, - CASE WHEN U.is_super_user THEN TRUE ELSE CASE WHEN NOT ISNULL(AL_U.priority) AND AL_U.priority <= v_priority_access_level_edit AND AL_U.priority <= priority_access_level_required THEN TRUE ELSE FALSE END END AS can_edit, - CASE WHEN U.is_super_user THEN TRUE ELSE CASE WHEN NOT ISNULL(AL_U.priority) AND AL_U.priority <= v_priority_access_level_admin AND AL_U.priority <= priority_access_level_required THEN TRUE ELSE FALSE END END AS can_admin - FROM Shop_User U - /* - ON U.id_user = v_id_user - AND U.active - */ - LEFT JOIN Shop_User_Role_Link URL - ON U.id_user = URL.id_user - AND URL.active - LEFT JOIN Shop_Role_Permission_Link RPL - ON URL.id_role = RPL.id_role - AND RPL.active - INNER JOIN Shop_Access_Level AL_U - ON RPL.id_access_leveL = AL_U.id_access_level - AND AL_U.active - INNER JOIN tmp_Shop_Product_p_shop_calc_user t_P - ON t_P.guid = v_guid - AND AL.id_access_level = t_P.id_access_leveL_required - INNER JOIN Shop_Access_Level AL_P - ON t_P.id_access_leveL_required = AL_P.id_access_level - AND AL_P.active - WHERE - v_guid = t_P.guid - AND U.active - AND U.id_user = v_id_user - ; - ELSE - INSERT INTO Shop_Calc_User_Temp (--UE_T - guid, - id_user, - id_permission_required, - priority_access_level_required, - priority_access_level_user, - is_super_user, - can_view, - can_edit, - can_admin - ) - SELECT - v_guid, - v_id_user, - v_id_permission AS id_permission_required, - v_priority_access_level AS priority_access_level_required, - AL.priority AS priority_access_level_user, - U.is_super_user, - CASE WHEN U.is_super_user THEN TRUE ELSE CASE WHEN NOT ISNULL(AL.priority) AND AL.priority <= v_priority_access_level_view AND AL.priority <= v_priority_access_level THEN TRUE ELSE FALSE END END AS can_view, - CASE WHEN U.is_super_user THEN TRUE ELSE CASE WHEN NOT ISNULL(AL.priority) AND AL.priority <= v_priority_access_level_edit AND AL.priority <= v_priority_access_level THEN TRUE ELSE FALSE END END AS can_edit, - CASE WHEN U.is_super_user THEN TRUE ELSE CASE WHEN NOT ISNULL(AL.priority) AND AL.priority <= v_priority_access_level_admin AND AL.priority <= v_priority_access_level THEN TRUE ELSE FALSE END END AS can_admin - FROM Shop_User U - INNER JOIN Shop_User_Role_Link URL - ON U.id_user = URL.id_user - AND URL.active - INNER JOIN Shop_Role_Permission_Link RPL - ON URL.id_role = RPL.id_role - AND RPL.active - INNER JOIN Shop_Access_Level AL - ON RPL.id_access_level = AL.id_access_level - AND AL.active - WHERE - U.id_user = v_id_user - AND U.active - AND RPL.id_permission = v_id_permission - ORDER BY AL.priority ASC - ; - END IF; - */ - INSERT INTO Shop_Calc_User_Temp (--UE_T - guid, - id_user, - id_permission_required, - id_product, - priority_access_level_required, - priority_access_level_user, - is_super_user, - can_view, - can_edit, - can_admin, - name_error - ) - SELECT - v_guid, - v_id_user, - v_id_permission AS id_permission_required, - t_P.id_product, - MIN(v_priority_access_level, AL_P.priority) AS priority_access_level_required, - AL_U.priority AS priority_access_level_user, - U.is_super_user, - (U.is_super_user AND NOT ISNULL(priority_access_level_user) AND priority_access_level_user <= v_priority_access_level_view AND priority_access_level_user <= priority_access_level_required) AS can_view, - (U.is_super_user AND NOT ISNULL(priority_access_level_user) AND priority_access_level_user <= v_priority_access_level_edit AND priority_access_level_user <= priority_access_level_required) AS can_edit, - (U.is_super_user AND NOT ISNULL(priority_access_level_user) AND priority_access_level_user <= v_priority_access_level_admin AND priority_access_level_user <= priority_access_level_required) AS can_admin, - Permission.name || ' ' || (SELECT name FROM Shop_Access_Level WHERE priority = priority_access_level_required ORDER BY id_access_level ASC LIMIT 1) || ' permissions' || CASE WHEN ISNULL(t_P.id_product) THEN '' ELSE ' for product ' || P.name END AS name_error - FROM Shop_User U - INNER JOIN Shop_User_Role_Link URL - ON U.id_user = URL.id_user - AND URL.active - INNER JOIN Shop_Role_Permission_Link RPL - ON URL.id_role = RPL.id_role - AND RPL.active - INNER JOIN Shop_Access_Level AL_U - ON RPL.id_access_level = AL_U.id_access_level - AND AL_U.active - INNER JOIN Shop_Permission Permission - ON RPL.id_permission = Permission.id_permission - AND Permission.active - CROSS JOIN tmp_Shop_Product_p_shop_calc_user t_P -- ON t_P.guid = v_guid - INNER JOIN Shop_Product P ON t_P.id_product = P.id_product - INNER JOIN Shop_Access_Level AL_P - ON t_P.id_access_level_required = AL_P.id_access_level - -- AND AL_P.active - WHERE - U.id_user = v_id_user - AND U.active - AND RPL.id_permission = v_id_permission - AND t_P.guid = v_guid - ORDER BY AL_P.priority ASC, t_P.rank_product ASC - ; - - -- IF EXISTS (SELECT * FROM tmp_Msg_Error WHERE GUID = v_guid) THEN - /* - OPEN result_errors FOR - SELECT * - FROM tmp_Msg_Error - WHERE GUID = v_guid - ; - -- RETURN NEXT result_errors; - -- result_errors - a_error_msg := ( - SELECT - -- GUID, id_type, code, - msg - FROM tmp_Msg_Error - WHERE GUID = v_guid - LIMIT 1 - ); - */ - - -- select * from tmp_Shop_Product_p_shop_calc_user; - -- Clean up - DROP TABLE IF EXISTS tmp_Shop_Product_p_shop_calc_user; - -- DROP TEMPORARY TABLE IF EXISTS tmp_User_Role_Link; - -- DROP TABLE IF EXISTS tmp_Msg_Error; -END; -$$ LANGUAGE plpgsql; - - -/* - -CALL p_shop_calc_user ( - '56c9dfc1-e22f-11ee-aab4-b42e9986184a', -- v_guid - '', -- v_id_user -- 'auth0|6582b95c895d09a70ba10fef', - false, -- v_get_inactive_users - '4,5', -- v_ids_permission - '1', -- v_ids_access_level - -- null, -- v_ids_product - '1,2,3' -- v_ids_permutation -); - -SELECT * -FROM Shop_Calc_User_Temp -; - -DROP TABLE Shop_Calc_User_Temp; - -SELECT * -FROM Shop_Permission -; - -SELECT * -FROM Shop_Access_Level -; - -SELECT * -FROM Shop_Product -; - -SELECT * -FROM Shop_Product_Permutation -; - - -*/ - -/* -SELECT 'NOODS' AS guid, - U.id_user AS id_user, - P.id_permission AS id_permission_required, - AL.id_access_level AS id_access_level_required, - /* - v_id_permission, - v_id_access_level, - */ - AL.priority, -- MIN(AL.priority), - U.is_super_user - /* - CASE WHEN U.is_super_user THEN TRUE ELSE CASE WHEN priority_access_level_minimum <= v_priority_access_level_view THEN TRUE ELSE FALSE END END, - CASE WHEN U.is_super_user THEN TRUE ELSE CASE WHEN priority_access_level_minimum <= v_priority_access_level_edit THEN TRUE ELSE FALSE END END, - CASE WHEN U.is_super_user THEN TRUE ELSE CASE WHEN priority_access_level_minimum <= v_priority_access_level_admin THEN TRUE ELSE FALSE END END - */ -FROM parts.Shop_User U -INNER JOIN Shop_User_Role_Link URL - ON U.id_user = URL.id_user - AND URL.active -INNER JOIN Shop_Role_Permission_Link RPL - ON URL.id_role = RPL.id_role - AND RPL.active -INNER JOIN Shop_Permission P - ON RPL.id_permission = P.id_permission - AND P.active -inner JOIN Shop_Access_Level AL - -- ON P.id_access_level_required = AL.id_access_level - ON RPL.id_access_level = AL.id_access_level - AND AL.active -WHERE U.id_user = 'auth0|6582b95c895d09a70ba10fef' - AND U.active - AND FIND_IN_SET(P.id_permission, '1,2') > 0 - -- AND v_id_access_level = AL.id_access_leveld --- GROUP BY U.id_user, P.id_permission, AL.id_access_level -- , is_super_user - -*/ diff --git a/static/PostgreSQL/602_p_save_supplier_purchase_order.sql b/static/PostgreSQL/602_p_save_supplier_purchase_order.sql deleted file mode 100644 index 3913ecfb..00000000 --- a/static/PostgreSQL/602_p_save_supplier_purchase_order.sql +++ /dev/null @@ -1,515 +0,0 @@ - - - --- DROP TABLE IF EXISTS tmp_Shop_Supplier_Purchase_Order_Product_Link; --- DROP TABLE IF EXISTS tmp_Msg_Error; - -CREATE OR REPLACE PROCEDURE p_shop_save_supplier_purchase_order ( - IN a_guid UUID, - IN a_id_user INTEGER, - IN a_comment UUID, - IN a_id_order INTEGER, - IN a_id_supplier_ordered INTEGER, - IN a_id_currency_cost INTEGER, - IN a_active BOOLEAN -) -AS $$ -DECLARE - v_guid UUID; - v_id_user INTEGER; - v_comment VARCHAR(4000); - v_id_order INTEGER; - v_id_supplier_ordered INTEGER; - v_id_currency_cost INTEGER; - v_active BOOLEAN; - v_id_error_type_bad_data INTEGER; - v_code_error_type_bad_data VARCHAR(50); - v_id_error_type_no_permission INTEGER; - v_code_error_type_no_permission VARCHAR(50); - v_guid_permission UUID; - -- v_id_user VARCHAR(100); - v_id_permission_supplier_purchase_order INTEGER; - v_id_access_level_EDIT INTEGER; - v_ids_product VARCHAR(4000); - v_ids_product_no_permission VARCHAR(4000); - -- v_id_order_new INTEGER; - v_id_change_set INTEGER; - v_is_new_supplier_purchase_order BOOLEAN; - -- result_orders REFCURSOR; - -- result_order_product_links REFCURSOR; - -- result_errors REFCURSOR; -BEGIN - -- SET SESSION sql_mode = sys.list_drop(@@session.sql_mode, 'ONLY_FULL_GROUP_BY'); - - v_guid := COALESCE(a_guid, gen_random_uuid()); - v_id_user := TRIM(COALESCE(a_id_user, '')); - v_comment := TRIM(COALESCE(a_comment, '')); - v_id_order := COALESCE(a_id_order, -1); - v_id_supplier_ordered := a_id_supplier_ordered; - v_id_currency_cost := a_id_currency_cost; - v_active := COALESCE(a_active, FALSE); - - v_code_error_type_bad_data = 'BAD_DATA'; - v_id_error_type_bad_data := (SELECT id_type FROM Shop_Msg_Error_Type WHERE code = v_code_error_type_bad_data LIMIT 1); - v_code_error_type_no_permission = 'NO_PERMISSION'; - v_id_error_type_no_permission := (SELECT id_type FROM Shop_Msg_Error_Type WHERE code = v_code_error_type_no_permission LIMIT 1); - v_guid_permission = gen_random_uuid(); - -- v_id_user = CURRENT_USER; - v_id_permission_supplier_purchase_order := (SELECT id_permission FROM Shop_Permission WHERE code = 'STORE_SUPPLIER_PURCHASE_ORDER' LIMIT 1); - v_id_access_level_EDIT := (SELECT id_access_level FROM Shop_Access_Level WHERE code = 'EDIT'); - - v_is_new_supplier_purchase_order := CASE WHEN v_id_order <= 0 THEN TRUE ELSE FALSE END; - - -- Temporary tables - /* - CREATE TABLE tmp_Shop_Supplier_Purchase_Order ( - id_order INTEGER NOT NULL PRIMARY KEY, - id_supplier_ordered INTEGER NOT NULL, - CONSTRAINT FK_tmp_Shop_Supplier_Purchase_Order_id_supplier_ordered - FOREIGN KEY (id_supplier_ordered) - REFERENCES Shop_Supplier(id_supplier), - cost_total_local REAL NOT NULL, - id_currency_cost INTEGER NOT NULL - ); - */ - - CREATE TABLE tmp_Shop_Supplier_Purchase_Order_Product_Link ( - id_link INTEGER NOT NULL PRIMARY KEY, - id_order INTEGER NOT NULL, - /* - CONSTRAINT FK_tmp_Supplier_Purchase_Order_Product_Link_id_order - FOREIGN KEY (id_order) - REFERENCES Shop_Supplier_Purchase_Order(id_order), - */ - id_permutation INTEGER NOT NULL, - CONSTRAINT FK_tmp_Supplier_Purchase_Order_Product_Link_id_permutation - FOREIGN KEY (id_permutation) - REFERENCES Shop_Product_Permutation(id_permutation), - cost_total_local REAL NOT NULL, - id_currency_cost INTEGER NOT NULL, - quantity_ordered REAL NOT NULL, - id_unit_quantity INTEGER NOT NULL, - CONSTRAINT FK_tmp_Supplier_Purchase_Order_Product_Link_id_unit_quantity - FOREIGN KEY (id_unit_quantity) - REFERENCES Shop_Unit_Measurement(id_unit_measurement), - quantity_received REAL NULL, - latency_delivery_days INTEGER NOT NULL, - display_order INTEGER NOT NULL, - active BOOLEAN NOT NULL, - name_error VARCHAR(200) NOT NULL - ); - - /* - CREATE TABLE IF NOT EXISTS tmp_Msg_Error ( - display_order INTEGER NOT NULL PRIMARY KEY GENERATED ALWAYS AS IDENTITY, - guid UUID NOT NULL, - id_type INTEGER 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 - -- User ID - IF NOT EXISTS (SELECT * FROM Shop_User WHERE id_user = v_id_user) THEN - RAISE EXCEPTION 'Invalid User ID: %', COALESCE(v_id_user, 'NULL') - USING ERRCODE = '22000' - ; - END IF; - - -- Order ID - IF ((v_id_order > 0) AND NOT EXISTS (SELECT * FROM Shop_Supplier_Purchase_Order WHERE id_order = v_id_order)) THEN - RAISE EXCEPTION 'Invalid Supplier Purchase Order ID: %', COALESCE(v_id_order, 'NULL') - USING ERRCODE = '22000' - ; - END IF; - - -- Supplier ID - IF ISNULL(v_id_supplier_ordered) OR NOT EXISTS (SELECT * FROM Shop_Supplier WHERE id_supplier = v_id_supplier_ordered) THEN - RAISE EXCEPTION 'Invalid Supplier ID: %', COALESCE(v_id_supplier_ordered, 'NULL') - USING ERRCODE = '22000' - ; - END IF; - - -- Currency ID - IF ISNULL(v_id_currency_cost) OR NOT EXISTS (SELECT * FROM Shop_Currency WHERE id_currency = v_id_currency_cost) THEN - RAISE EXCEPTION 'Invalid currency ID: %', COALESCE(v_id_currency, 'NULL') - USING ERRCODE = '22000' - ; - END IF; - - -- Comment - IF v_comment = '' THEN - RAISE EXCEPTION 'A comment must be provided.' - USING ERRCODE = '22000' - ; - END IF; - - - -- Get data from Temp table - INSERT INTO tmp_Shop_Supplier_Purchase_Order_Product_Link ( - id_link, - id_order, - id_permutation, - cost_total_local, - id_currency_cost, - quantity_ordered, - id_unit_quantity, - quantity_received, - latency_delivery_days, - display_order, - active, - name_error - ) - SELECT - SPOPL_T.id_link, - SPOPL_T.id_order, - SPOPL_T.id_permutation, - PP.cost_local * quantity_ordered AS cost_total_local, - SPOPL_T.id_currency_cost, - SPOPL_T.quantity_ordered, - SPOPL_T.id_unit_quantity, - SPOPL_T.quantity_received, - SPOPL_T.latency_delivery_days, - SPOPL_T.display_order, - SPOPL_T.active, - CAST(PP.id_permutation AS VARCHAR(10)) || ' - ' || COALESCE(PP.name ,'') AS name_error - FROM Shop_Supplier_Purchase_Order_Product_Link_Temp SPOPL_T - INNER JOIN Shop_Product_Permutation PP ON SPOPL_T.id_permutation = PP.id_permutation - WHERE SPOPL_T.GUID = v_guid - ; - DELETE FROM Shop_Supplier_Purchase_Order_Product_Link_Temp SPOPL_T - WHERE SPOPL_T.GUID = v_guid - ; - - /* - UPDATE tmp_Shop_Supplier_Purchase_Order_Product_Link t_SPOPL - - cost_total_local - */ - - -- Invalid quantity ordered - IF EXISTS ( - SELECT * - FROM tmp_Shop_Supplier_Purchase_Order_Product_Link - WHERE - NOT ISNULL(quantity_ordered) - AND quantity_ordered < 0 - ) THEN - RAISE EXCEPTION 'Invalid quantity ordered property for the following permutations: %', ( - SELECT STRING_AGG(t_SPOPL.name_error, ', ') - FROM tmp_Shop_Supplier_Purchase_Order_Product_Link t_SPOPL - -- INNER JOIN Shop_Product_Permutation PP ON t_SPOPL.id_permutation = PP.id_permutation - WHERE t_SPOPL.quantity_ordered < 0 - ) - USING ERRCODE = '22000' - ; - END IF; - - -- Duplicates - IF EXISTS (SELECT id_permutation, name_error, COUNT(*) FROM tmp_Shop_Supplier_Purchase_Order_Product_Link t_SPOPL GROUP BY id_permutation HAVING COUNT(*) > 1) THEN - RAISE EXCEPTION 'Duplicate records: %', || ( - SELECT STRING_AGG(t_SPOPLC.name_error, ', ') - FROM (SELECT id_permutation, name_error, COUNT(*) FROM tmp_Shop_Supplier_Purchase_Order_Product_Link t_SPOPL GROUP BY id_permutation HAVING COUNT(*) > 1) t_SPOPLC - ) - USING ERRCODE = '22000' - ; - END IF; - - - - -- Permissions - v_ids_product := ( - SELECT STRING_AGG(DISTINCT PP.id_product, ',') - FROM tmp_Shop_Supplier_Purchase_Order_Product_Link t_SPO - INNER JOIN Shop_Product_Permutation PP ON t_SPO.id_permutation = PP.id_permutation - ); - - CALL p_shop_calc_user(v_guid_permission, v_id_user, 0, v_id_permission_supplier_purchase_order, v_id_access_level_edit, v_ids_product); - - /* - UPDATE tmp_Shop_Supplier t_S - INNER JOIN Shop_Calc_User_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; - */ - /* - v_has_permission := ( - SELECT can_edit - FROM Shop_Calc_User_Temp - WHERE - GUID = v_guid_permission - AND can_edit = 0 - ); - - IF v_has_permission = FALSE THEN - 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 - v_guid, - v_id_error_type_no_permission, - CONCAT('You do not have ', name, ' permissions.') - FROM Shop_Permission - WHERE id_permission = v_id_permission_supplier_purchase_order - ; - END IF; - */ - v_ids_product_no_permission := ( - SELECT STRING_AGG(PT.id_product, ',') - FROM Shop_Calc_User_Temp PT - WHERE - PT.can_edit = 0 - AND NOT ISNULL(PT.id_product) - ); - IF NOT ISNULL(v_ids_product_no_permission) THEN - RAISE EXCEPTION 'You do not have permission to edit the following product IDs: %', v_ids_product_no_permission - USING ERRCODE = '42501' - ; - END IF; - - DELETE FROM Shop_Calc_User_Temp - WHERE GUID = v_guid; - - -- Transaction - START TRANSACTION; - INSERT INTO Shop_Sales_And_Purchasing_Change_Set ( - comment, - updated_last_by, - updated_last_on - ) - VALUES ( - 'Save ' - || CASE WHEN v_is_new_supplier_purchase_order = TRUE THEN 'new ' ELSE '' END - || 'Supplier Purchase Order - ' - || v_comment, - v_id_user, - CURRENT_TIMESTAMP - ); - - v_id_change_set := (SELECT id_change_set FROM Shop_Sales_And_Purchasing_Change_Set ORDER BY id_change_set DESC LIMIT 1); - - IF (v_is_new_supplier_purchase_order = 1) THEN - INSERT INTO Shop_Supplier_Purchase_Order ( - id_supplier_ordered, - cost_total_local, - id_currency_cost, - created_by, - id_change_set, - active - ) - SELECT - v_id_supplier_ordered, - SUM(t_SPOPL.cost_total_local), - v_id_currency_cost, - v_id_user, - v_id_change_set, - v_active - FROM tmp_Shop_Supplier_Purchase_Order_Product_Link t_SPOPL - ; - -- v_id_order_new - v_id_order := (SELECT id_order FROM Shop_Supplier_Purchase_Order ORDER BY id_order DESC LIMIT 1); - INSERT INTO Shop_Supplier_Purchase_Order_Product_Link ( - id_order, - id_permutation, - cost_total_local, - id_currency_cost, - quantity_ordered, - id_unit_quantity, - quantity_received, - latency_delivery_days, - display_order, - active, - created_by, - id_change_set - ) - SELECT - v_id_order, -- v_id_order_new, - id_permutation, - cost_total_local, - id_currency_cost, - quantity_ordered, - id_unit_quantity, - quantity_received, - latency_delivery_days, - display_order, - active, - v_id_user, - v_id_change_set - FROM tmp_Shop_Supplier_Purchase_Order_Product_Link t_SPOPL - ; - ELSE - UPDATE Shop_Supplier_Purchase_Order SPO - SET - SPO.id_supplier_ordered = v_id_supplier_ordered, - SPO.cost_total_local = SUM(t_SPOPL.cost_total_local), - SPO.id_currency = v_id_currency_cost, - SPO.id_change_set = v_id_change_set, - SPO.active = v_active - FROM Shop_Supplier_Purchase_Order SPO - INNER JOIN tmp_Shop_Supplier_Purchase_Order_Product_Link t_SPOPL ON SPO.id_order = t_SPOPL.id_order - WHERE SPO.id_order = v_id_order - ; - IF EXISTS (SELECT * FROM tmp_Shop_Supplier_Purchase_Order_Product_Link t_SPOPL INNER JOIN Shop_Supplier_Purchase_Order_Product_Link SPOPL ON t_SPOPL.id_link = SPOPL.id_link) THEN - UPDATE Shop_Supplier_Purchase_Order_Product_Link SPOPL - SET - SPOPL.id_order = t_SPOPL.id_order, - SPOPL.id_permutation = t_SPOPL.id_permutation, - SPOPL.cost_total_local = t_SPOPL.cost_total_local, - SPOPL.id_currency_cost = t_SPOPL.id_currency_cost, - SPOPL.quantity_ordered = t_SPOPL.quantity_ordered, - SPOPL.id_unit_quantity = t_SPOPL.id_unit_quantity, - SPOPL.quantity_received = t_SPOPL.quantity_received, - SPOPL.latency_delivery_days = t_SPOPL.latency_delivery_days, - SPOPL.display_order = t_SPOPL.display_order, - SPOPL.active = t_SPOPL.active, - SPOPL.id_change_set = v_id_change_set - FROM Shop_Supplier_Purchase_Order_Product_Link SPOPL - INNER JOIN tmp_Shop_Supplier_Purchase_Order_Product_Link t_SPOPL - ON SPOPL.id_link = t_SPOPL.id_link - ; - ELSE - INSERT INTO Shop_Supplier_Purchase_Order_Product_Link ( - id_order, - id_permutation, - cost_total_local, - id_currency_cost, - quantity_ordered, - id_unit_quantity, - quantity_received, - latency_delivery_days, - display_order, - active, - created_by, - id_change_set - ) - SELECT - id_order, - id_permutation, - cost_total_local, - id_currency_cost, - quantity_ordered, - id_unit_quantity, - quantity_received, - latency_delivery_days, - display_order, - active, - v_id_user, - v_id_change_set - FROM tmp_Shop_Supplier_Purchase_Order_Product_Link t_SPOPL - WHERE t_SPOPL.id_link < 0 - ; - END IF; - END IF; - - COMMIT; - /* - IF EXISTS (SELECT * FROM tmp_Msg_Error) THEN - ROLLBACK; - ELSE - COMMIT; - END IF; - */ - - -- Returns - -- v_now = CURRENT_TIMESTAMP; - /* - -- Supplier Purchase Orders - OPEN result_orders FOR - SELECT * - FROM Shop_Supplier_Purchase_Order - WHERE id_order = v_id_order - ; - -- RETURN NEXT result_orders; - - -- Supplier Purchase Order Product Links - OPEN result_order_product_links FOR - SELECT * - FROM Shop_Supplier_Purchase_Order_Product_Link - WHERE id_order = v_id_order - ; - -- RETURN NEXT result_order_product_links; - */ - -- Errors - /* - OPEN result_errors FOR - SELECT * - FROM tmp_Msg_Error - ; - -- RETURN NEXT result_errors; - */ - - -- DROP TABLE tmp_Shop_Supplier_Purchase_Order; - DROP TABLE tmp_Shop_Supplier_Purchase_Order_Product_Link; - DROP TABLE tmp_Msg_Error; -END; -$$ LANGUAGE plpgsql; - - -/* - -DELETE FROM Shop_Supplier_Purchase_Order_Product_Link_Audit; -DELETE FROM Shop_Supplier_Purchase_Order_Product_Link; -DELETE FROM Shop_Supplier_Purchase_Order_Product_Link_Temp; -DELETE FROM Shop_Supplier_Purchase_Order_Audit; -DELETE FROM Shop_Supplier_Purchase_Order; - -INSERT INTO Shop_Supplier_Purchase_Order_Product_Link_Temp ( - guid, - id_link, - id_order, - id_permutation, - cost_total_local, - id_currency_cost, - quantity_ordered, - id_unit_quantity, - quantity_received, - latency_delivery_days, - display_order, - active -) -VALUES - ( - 'NIPS', -- guid - -1, -- id_link, - -1, -- id_order, - 1, -- id_permutation, - 100, -- cost_total_local, - 1, -- id_currency_cost, - 1, -- quantity_ordered, - 1, -- id_unit_quantity, - 1, -- quantity_received, - 14, -- latency_delivery_days , - 1, -- display_order - 1 -- active - ) -; - -SELECT * FROM Shop_Supplier_Purchase_Order_Product_Link_Temp; - -CALL p_shop_save_supplier_purchase_order ( - 'NIPS', -- a_guid - 'auth0|6582b95c895d09a70ba10fef', -- a_id_user - -1, -- a_id_order - 1, -- a_id_supplier_ordered - 1 -- a_id_currency_cost -); - -SELECT * FROM Shop_Supplier_Purchase_Order_Product_Link_Temp; - -DELETE FROM Shop_Supplier_Purchase_Order_Product_Link_Audit; -DELETE FROM Shop_Supplier_Purchase_Order_Product_Link; -DELETE FROM Shop_Supplier_Purchase_Order_Product_Link_Temp; -DELETE FROM Shop_Supplier_Purchase_Order_Audit; -DELETE FROM Shop_Supplier_Purchase_Order; - - -*/ - diff --git a/static/PostgreSQL/602_p_shop_save_supplier.sql b/static/PostgreSQL/602_p_shop_save_supplier.sql deleted file mode 100644 index 1534a0bf..00000000 --- a/static/PostgreSQL/602_p_shop_save_supplier.sql +++ /dev/null @@ -1,306 +0,0 @@ - - - - -CREATE OR REPLACE PROCEDURE p_shop_save_supplier ( - IN a_guid UUID, - IN a_id_user INTEGER, - IN a_comment UUID, - IN a_id_supplier INTEGER, - IN a_name_company VARCHAR(256), - IN a_name_contact VARCHAR(256), - IN a_department_contact VARCHAR(256), - IN a_id_address INTEGER, - IN a_phone_number VARCHAR(20), - IN a_fax VARCHAR(20), - IN a_email VARCHAR(515), - IN a_website VARCHAR(300), - IN a_id_currency INTEGER, - IN a_active BOOLEAN -) -AS $$ -DECLARE - v_guid UUID; - v_id_user INTEGER; - v_comment VARCHAR(4000); - v_id_supplier INTEGER; - v_name_company VARCHAR(256); - v_name_contact VARCHAR(256); - v_department_contact VARCHAR(256); - v_id_address INTEGER; - v_phone_number VARCHAR(256); - v_fax VARCHAR(256); - v_email VARCHAR(256); - v_website VARCHAR(256); - v_id_currency INTEGER; - v_active BOOLEAN; - v_id_error_type_bad_data INTEGER; - v_id_error_type_no_permission INTEGER; - v_guid_permission UUID; - v_id_permission_supplier INTEGER; - -- v_id_access_level_EDIT INTEGER; - v_has_permission BOOLEAN; - v_id_change_set INTEGER; - v_is_new_supplier BOOLEAN; - -- result_errors REFCURSOR; -BEGIN - -- SET SESSION sql_mode = sys.list_drop(@@session.sql_mode, 'ONLY_FULL_GROUP_BY'); - - v_guid := COALESCE(a_guid, gen_random_uuid()); - v_id_user := TRIM(COALESCE(a_id_user, '')); - v_comment := TRIM(COALESCE(a_comment, '')); - v_id_supplier := COALESCE(a_id_supplier, -1); - v_name_company := TRIM(COALESCE(a_name_company, '')); - v_name_contact := TRIM(COALESCE(a_name_contact, '')); - v_department_contact := TRIM(COALESCE(a_department_contact, '')); - v_id_address := a_id_address; - v_phone_number := TRIM(COALESCE(a_phone_number, '')); - v_fax := TRIM(COALESCE(a_fax, '')); - v_email := TRIM(COALESCE(a_email, '')); - v_website := TRIM(COALESCE(a_website, '')); - v_id_currency := a_id_currency; - v_active := COALESCE(a_active, FALSE); - - v_id_error_type_bad_data := (SELECT id_type FROM Shop_Msg_Error_Type WHERE code = 'BAD_DATA'); - v_guid_permission = gen_random_uuid(); - v_id_user = CURRENT_USER; - v_id_permission_supplier = (SELECT id_permission FROM Shop_Permission WHERE code = 'STORE_SUPPLIER' LIMIT 1); - -- v_id_access_level_EDIT = (SELECT id_access_level FROM Shop_Access_Level WHERE code = 'EDIT'); - v_is_new_supplier := CASE WHEN v_id_supplier <= 0 THEN TRUE ELSE FALSE END; - - - -- Temporary tables - /* - CREATE TABLE tmp_Shop_Supplier ( - id_supplier INTEGER NOT NULL, - name_company VARCHAR(255) NOT NULL, - name_contact VARCHAR(255) NULL, - department_contact VARCHAR(255) NULL, - id_address INTEGER NOT NULL, - CONSTRAINT FK_tmp_Shop_Supplier_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 INTEGER NOT NULL, - CONSTRAINT FK_tmp_Shop_Supplier_id_currency - FOREIGN KEY (id_currency) - REFERENCES Shop_Currency(id_currency), - active BOOLEAN NOT NULL, - can_view BOOLEAN NOT NULL, - can_edit BOOLEAN NOT NULL, - can_admin BOOLEAN NOT NULL - ); - */ - - CREATE TABLE IF NOT EXISTS tmp_Msg_Error ( - display_order INTEGER NOT NULL PRIMARY KEY GENERATED ALWAYS AS IDENTITY, - guid UUID NOT NULL, - id_type INTEGER 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 v_name_company = '' THEN - /* - INSERT INTO tmp_Msg_Error ( - guid, id_type, msg - ) - VALUES - (v_guid, v_id_error_type_bad_data, 'Supplier company name must be provided') - ; - */ - RAISE EXCEPTION 'Supplier company name must be provided' - USING ERRCODE = '22000' - ; - END IF; - - IF v_id_address IS NULL THEN - /* - INSERT INTO tmp_Msg_Error ( - guid, id_type, msg - ) - VALUES - (v_guid, v_id_error_type_bad_data, 'Address ID must be provided') - ; - */ - RAISE EXCEPTION 'Address ID must be provided' - USING ERRCODE = '22000' - ; - END IF; - - IF v_email = '' THEN - /* - INSERT INTO tmp_Msg_Error ( - guid, id_type, msg - ) - VALUES - (v_guid, v_id_error_type_bad_data, 'Email must be provided') - ; - */ - RAISE EXCEPTION 'Email must be provided.' - USING ERRCODE = '22000' - ; - END IF; - - IF v_comment = '' THEN - RAISE EXCEPTION 'A comment must be provided.' - USING ERRCODE = '22000' - ; - END IF; - - - IF (v_is_new_supplier = FALSE AND NOT EXISTS (SELECT * FROM Shop_Supplier S WHERE S.id_supplier = v_id_supplier)) THEN - RAISE EXCEPTION 'Invalid supplier ID: %', v_id_supplier - USING ERRCODE = '22000' - ; - END IF; - - /* - IF NOT EXISTS (SELECT * FROM tmp_Msg_Error) THEN - INSERT INTO tmp_Shop_Supplier ( - id_supplier, name_company, name_contact, department_contact, id_address, phone_number, fax, email, website, id_currency, active - ) - VALUES - (v_id_supplier, v_name_company, v_name_contact, v_department_contact, v_id_address, v_phone_number, v_fax, v_email, v_website, v_id_currency, v_active) - /* - FROM Shop_Supplier S - WHERE (NOT v_has_filter_category OR C.id_category LIKE '%' || v_ids_category || '%') - AND (v_get_inactive_categories OR C.active) - */ - ; - END IF; - */ - - -- Permissions - CALL p_shop_calc_user(v_guid_permission, v_id_user, v_id_permission_supplier, ''); - - /* - UPDATE tmp_Shop_Supplier t_S - INNER JOIN Shop_Calc_User_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; - */ - v_has_permission := (SELECT can_edit FROM Shop_Calc_User_Temp WHERE GUID = v_guid_permission); - - IF v_has_permission = FALSE THEN - 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 - v_guid, - v_id_error_type_no_permission, - 'You do not have %' || name || ' permissions.' - FROM Shop_Permission - WHERE id_permission = v_id_permission_supplier - ; - */ - RAISE EXCEPTION 'No permission: %', ( - SELECT name_error - FROM Shop_Calc_User_Temp - WHERE GUID = v_guid_permission - ) - USING ERRCODE = '42501' - ; - END IF; - - -- CALL p_shop_clear_calc_user(v_guid_permission); - - DELETE FROM Shop_Calc_User_Temp - WHERE GUID = v_guid; - - - -- Transaction - INSERT INTO Shop_Sales_And_Purchasing_Change_Set ( - comment, - updated_last_by, - updated_last_on - ) - VALUES ( - 'Save ' - || CASE WHEN v_is_new_supplier = TRUE THEN 'new ' ELSE '' END - || 'Supplier - ' - || v_comment, - v_id_user, - CURRENT_TIMESTAMP - ); - - 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_supplier = TRUE) THEN - INSERT INTO Shop_Supplier ( - -- id_supplier, - name_company, name_contact, department_contact, id_address, phone_number, fax, email, website, id_currency, active, id_change_set - ) - VALUES - ( - -- v_id_supplier, - v_name_company, v_name_contact, v_department_contact, v_id_address, v_phone_number, v_fax, v_email, v_website, v_id_currency, v_active, v_id_change_set - ) - /* - FROM Shop_Supplier S - WHERE (NOT v_has_filter_category OR C.id_category LIKE '%' || v_ids_category || '%') - AND (v_get_inactive_categories OR C.active) - */ - ; - ELSE - UPDATE Shop_Supplier S - -- INNER JOIN tmp_Shop_Supplier t_S ON S.id_supplier = t_S.id_supplier - 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 - */ - S.name_company = v_name_company, - S.name_contact = v_name_contact, - S.department_contact = v_department_contact, - S.id_address = v_id_address, - S.phone_number = v_phone_number, - S.fax = v_fax, - S.email = v_email, - S.website = v_website, - S.id_currency = v_id_currency, - S.active = v_active, - S.id_change_set = v_id_change_set - ; - END IF; - COMMIT; - - -- Returns - -- v_now = CURRENT_TIMESTAMP; - - -- Errors - /* - OPEN result_errors FOR - SELECT * - FROM tmp_Msg_Error - ; - -- RETURN NEXT result_errors; - */ - - DROP TABLE tmp_Shop_Supplier; - -- DROP TABLE tmp_Msg_Error; -END; -$$ LANGUAGE plpgsql; - - diff --git a/static/PostgreSQL/604_p_shop_save_manufacturing_purchase_order.sql b/static/PostgreSQL/604_p_shop_save_manufacturing_purchase_order.sql deleted file mode 100644 index 5b12fecb..00000000 --- a/static/PostgreSQL/604_p_shop_save_manufacturing_purchase_order.sql +++ /dev/null @@ -1,606 +0,0 @@ - - - - --- DROP TABLE IF EXISTS tmp_Shop_Manufacturing_Purchase_Order_Product_Link; --- DROP TABLE IF EXISTS tmp_Msg_Error; - -CREATE OR REPLACE PROCEDURE p_shop_save_manufacturing_purchase_order ( - IN a_guid UUID, - IN a_id_user INTEGER, - IN a_id_order INTEGER, - -- IN a_id_supplier_ordered INTEGER, - IN a_id_currency_cost INTEGER, - IN a_active BOOLEAN, - IN a_comment UUID -) -AS $$ -DECLARE - v_guid UUID; - v_id_user INTEGER; - v_comment VARCHAR(4000); - v_id_order INTEGER; - v_id_currency_cost INTEGER; - v_active BOOLEAN; - v_id_error_type_bad_data INTEGER; - v_code_error_type_bad_data VARCHAR(50); - v_id_error_type_no_permission INTEGER; - v_code_error_type_no_permission VARCHAR(50); - v_guid_permission UUID; - -- v_id_user VARCHAR(100); - v_id_permission_manufacturing_purchase_order INTEGER; - v_id_access_level_EDIT INTEGER; - v_ids_product VARCHAR(4000); - v_ids_product_no_permission VARCHAR(4000); - -- v_id_order_new INTEGER; - v_id_change_set INTEGER; - v_is_new_manufacturing_purchase_order BOOLEAN; - result_errors REFCURSOR; -BEGIN - -- SET SESSION sql_mode = sys.list_drop(@@session.sql_mode, 'ONLY_FULL_GROUP_BY'); - - v_guid := COALESCE(a_guid, gen_random_uuid()); - v_id_user := TRIM(COALESCE(a_id_user, '')); - v_comment := TRIM(COALESCE(a_comment, '')); - v_id_order := COALESCE(a_id_order, -1); - v_id_currency_cost := a_id_currency_cost; - v_active := COALESCE(a_active, FALSE); - - v_code_error_type_bad_data = 'BAD_DATA'; - v_id_error_type_bad_data := (SELECT id_type FROM Shop_Msg_Error_Type WHERE code = v_code_error_type_bad_data LIMIT 1); - v_code_error_type_no_permission = 'NO_PERMISSION'; - v_id_error_type_no_permission := (SELECT id_type FROM Shop_Msg_Error_Type WHERE code = v_code_error_type_no_permission LIMIT 1); - v_guid_permission = gen_random_uuid(); - -- v_id_user = CURRENT_USER; - v_id_permission_manufacturing_purchase_order := (SELECT id_permission FROM Shop_Permission WHERE code = 'STORE_MANUFACTURING_PURCHASE_ORDER' LIMIT 1); - v_id_access_level_EDIT := (SELECT id_access_level FROM Shop_Access_Level WHERE code = 'EDIT'); - v_is_new_manufacturing_purchase_order := CASE WHEN v_id_order <= 0 THEN TRUE ELSE FALSE END; - - -- Temporary tables - /* - CREATE TABLE tmp_Shop_Supplier_Purchase_Order ( - id_order INTEGER NOT NULL PRIMARY KEY, - id_supplier_ordered INTEGER NOT NULL, - CONSTRAINT FK_tmp_Shop_Supplier_Purchase_Order_id_supplier_ordered - FOREIGN KEY (id_supplier_ordered) - REFERENCES Shop_Supplier(id_supplier), - cost_total_local REAL NOT NULL, - id_currency_cost INTEGER NOT NULL - ); - */ - - CREATE TABLE tmp_Shop_Manufacturing_Purchase_Order_Product_Link ( - id_link INTEGER NOT NULL PRIMARY KEY, - id_order INTEGER NOT NULL, - /* - CONSTRAINT FK_tmp_Supplier_Purchase_Order_Product_Link_id_order - FOREIGN KEY (id_order) - REFERENCES Shop_Manufacturing_Purchase_Order(id_order), - */ - id_permutation INTEGER NOT NULL, - CONSTRAINT FK_tmp_Manuf_Purch_Order_Product_Link_id_permutation - FOREIGN KEY (id_permutation) - REFERENCES Shop_Product_Permutation(id_permutation), - cost_total_local REAL NOT NULL, - id_currency_cost INTEGER NOT NULL, - value_produced_total_local REAL NOT NULL, - quantity_used REAL NOT NULL, - id_unit_quantity INTEGER NOT NULL, - CONSTRAINT FK_tmp_Manuf_Purch_Order_Product_Link_id_unit_quantity - FOREIGN KEY (id_unit_quantity) - REFERENCES Shop_Unit_Measurement(id_unit_measurement), - quantity_produced REAL NULL, - latency_manufacture INTEGER NOT NULL, - display_order INTEGER NOT NULL, - active BOOLEAN NOT NULL, - name_error VARCHAR(200) NOT NULL - ); - - /* - CREATE TABLE IF NOT EXISTS tmp_Msg_Error ( - display_order INTEGER NOT NULL PRIMARY KEY GENERATED ALWAYS AS IDENTITY, - guid UUID NOT NULL, - id_type INTEGER 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 - -- User ID - IF NOT EXISTS (SELECT * FROM Shop_User WHERE id_user = v_id_user) THEN - RAISE EXCEPTION 'Invalid User ID: %', COALESCE(v_id_user, 'NULL') - USING ERRCODE = '22000' - ; - END IF; - - -- Order ID - IF ((v_id_order > 0) AND NOT EXISTS (SELECT * FROM Shop_Manufacturing_Purchase_Order WHERE id_order = v_id_order)) THEN - RAISE EXCEPTION 'Invalid Manufacturing Purchase Order ID: %', COALESCE(v_id_order, 'NULL') - USING ERRCODE = '22000' - ; - END IF; - - /* - -- Supplier ID - IF NOT EXISTS (SELECT * FROM tmp_Msg_Error) THEN - IF ISNULL(v_id_supplier_ordered) OR NOT EXISTS (SELECT * FROM Shop_Supplier WHERE id_supplier = v_id_supplier_ordered) THEN - INSERT INTO tmp_Msg_Error ( - guid, id_type, code, msg - ) - VALUES - (v_guid, v_id_error_type_bad_data, v_code_error_type_bad_data, CONCAT('Invalid supplier ID: ', COALESCE(v_id_supplier_ordered, 'NULL'))) - ; - END IF; - END IF; - */ - - -- Currency ID - IF ISNULL(v_id_currency_cost) OR NOT EXISTS (SELECT * FROM Shop_Currency WHERE id_currency = v_id_currency_cost) THEN - RAISE EXCEPTION 'Invalid currency ID: %', COALESCE(v_id_currency, 'NULL') - USING ERRCODE = '22000' - ; - END IF; - - -- Comment - IF v_comment = '' THEN - /* - INSERT INTO tmp_Msg_Error ( - guid, id_type, code, msg - ) - VALUES - (v_guid, v_id_error_type_bad_data, v_code_error_type_bad_data, 'A comment must be provided.') - ; - */ - RAISE EXCEPTION 'A comment must be provided.' - USING ERRCODE = '22000' - ; - END IF; - - - -- Get data from Temp table - INSERT INTO tmp_Shop_Manufacturing_Purchase_Order_Product_Link ( - id_link, - id_order, - id_permutation, - cost_total_local, - id_currency_cost, - quantity_used, - id_unit_quantity, - quantity_produced, - value_produced_total_local, - latency_manufacture, - display_order, - active, - name_error - ) - SELECT - MPOPL_T.id_link, - MPOPL_T.id_order, - MPOPL_T.id_permutation, - PP.cost_local * MPOPL_T.quantity_used AS cost_total_local, - MPOPL_T.id_currency_cost, - MPOPL_T.quantity_used, - MPOPL_T.id_unit_quantity, - MPOPL_T.quantity_produced, - (PP.cost_local + PP.profit_local_min) * MPOPL_T.quantity_produced AS value_produced_total_local, - MPOPL_T.latency_manufacture, - MPOPL_T.display_order, - MPOPL_T.active, - PP.id_permutation, ' - ' || COALESCE(P.name ,'') AS name_error - FROM Shop_Manufacturing_Purchase_Order_Product_Link_Temp MPOPL_T - INNER JOIN Shop_Product_Permutation PP ON MPOPL_T.id_permutation = PP.id_permutation - INNER JOIN Shop_Product P ON PP.id_product = P.id_product - WHERE MPOPL_T.GUID = v_guid - -- GROUP BY MPOPL_T.id_order, name_error, MPOPL_T.id_link - /* - group by - MPOPL_T.id_link, - MPOPL_T.id_order, - MPOPL_T.id_permutation, - cost_total_local, - MPOPL_T.id_currency_cost, - MPOPL_T.quantity_used, - MPOPL_T.id_unit_quantity, - MPOPL_T.quantity_produced, - value_produced_total_local, - MPOPL_T.latency_manufacture, - MPOPL_T.display_order, - MPOPL_T.active, - name_error - */ - -- GROUP BY id_link, P.id_product, PP.id_permutation - -- GROUP BY name_error, ID_LINK, cost_total_local, value_produced_total_local - ; - DELETE FROM Shop_Manufacturing_Purchase_Order_Product_Link_Temp MPOPL_T - WHERE MPOPL_T.GUID = v_guid - ; - - -- Invalid quantity used - IF EXISTS ( - SELECT * - FROM tmp_Shop_Manufacturing_Purchase_Order_Product_Link - WHERE - NOT ISNULL(quantity_used) - AND quantity_used < 0 - ) THEN - /* - INSERT INTO tmp_Msg_Error ( - guid, id_type, code, msg - ) - SELECT - v_guid, - v_id_error_type_bad_data, - v_code_error_type_bad_data, - 'Invalid quantity used property for the following permutations: ' || STRING_AGG(t_MPOPL.name_error, ', ') - FROM tmp_Shop_Manufacturing_Purchase_Order_Product_Link t_MPOPL - WHERE t_MPOPL.quantity_used < 0 - ; - */ - RAISE EXCEPTION 'Invalid quantity used property for the following permutations: %', ( - SELECT STRING_AGG(t_MPOPL.name_error, ', ') - FROM tmp_Shop_Manufacturing_Purchase_Order_Product_Link t_MPOPL - WHERE t_MPOPL.quantity_used < 0 - ) - USING ERRCODE = '22000' - ; - END IF; - - -- Invalid quantity produced - IF EXISTS ( - SELECT * - FROM tmp_Shop_Manufacturing_Purchase_Order_Product_Link - WHERE - NOT ISNULL(quantity_produced) - AND quantity_produced < 0 - ) THEN - /* - INSERT INTO tmp_Msg_Error ( - guid, id_type, code, msg - ) - SELECT - v_guid, - v_id_error_type_bad_data, - v_code_error_type_bad_data, - 'Invalid quantity produced property for the following permutations: ' || STRING_AGG(t_MPOPL.name_error, ', ') - FROM tmp_Shop_Manufacturing_Purchase_Order_Product_Link t_MPOPL - WHERE t_MPOPL.quantity_produced < 0 - ; - */ - RAISE EXCEPTION 'Invalid quantity produced property for the following permutations: %', ( - SELECT STRING_AGG(t_MPOPL.name_error, ', ') - FROM tmp_Shop_Manufacturing_Purchase_Order_Product_Link t_MPOPL - WHERE t_MPOPL.quantity_produced < 0 - ) - USING ERRCODE = '22000' - ; - END IF; - - -- Duplicates - IF EXISTS (SELECT id_permutation, name_error, COUNT(*) FROM tmp_Shop_Manufacturing_Purchase_Order_Product_Link t_MPOPL GROUP BY id_permutation HAVING COUNT(*) > 1) THEN - /* - INSERT INTO tmp_Msg_Error ( - guid, id_type, code, msg - ) - SELECT - v_guid, - v_id_error_type_bad_data, - v_code_error_type_bad_data, - 'Duplicate records: ' || STRING_AGG(t_MPOPLC.name_error, ', ') - FROM (SELECT id_permutation, name_error, COUNT(*) FROM tmp_Shop_Manufacturing_Purchase_Order_Product_Link t_MPOPL GROUP BY id_permutation HAVING COUNT(*) > 1) t_MPOPLC - ; - */ - RAISE EXCEPTION 'Duplicate records: %', ( - SELECT STRING_AGG(t_MPOPLC.name_error, ', ') - FROM (SELECT id_permutation, name_error, COUNT(*) FROM tmp_Shop_Manufacturing_Purchase_Order_Product_Link t_MPOPL GROUP BY id_permutation HAVING COUNT(*) > 1) t_MPOPLC - ) - USING ERRCODE = '22000' - ; - END IF; - - - -- Permissions - v_ids_product := ( - SELECT STRING_AGG(DISTINCT PP.id_product, ',') - FROM tmp_Shop_Manufacturing_Purchase_Order_Product_Link t_MPO - INNER JOIN Shop_Product_Permutation PP ON t_MPO.id_permutation = PP.id_permutation - ); - - CALL p_shop_calc_user(v_guid_permission, v_id_user, 0, v_id_permission_manufacturing_purchase_order, v_id_access_level_edit, v_ids_product); - - /* - UPDATE tmp_Shop_Supplier t_S - INNER JOIN Shop_Calc_User_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; - */ - /* - v_has_permission := ( - SELECT can_edit - FROM Shop_Calc_User_Temp - WHERE - GUID = v_guid_permission - AND can_edit = 0 - ); - - IF v_has_permission = FALSE THEN - 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 - v_guid, - v_id_error_type_no_permission, - CONCAT('You do not have ', name, ' permissions.') - FROM Shop_Permission - WHERE id_permission = v_id_permission_manufacturing_purchase_order - ; - END IF; - */ - v_ids_product_no_permission := ( - SELECT STRING_AGG(PT.id_product, ',') - FROM Shop_Calc_User_Temp PT - WHERE - PT.can_edit = 0 - AND NOT ISNULL(PT.id_product) - ); - IF NOT ISNULL(v_ids_product_no_permission) THEN - /* - INSERT INTO tmp_Msg_Error ( - guid, id_type, code, msg - ) - VALUES ( - v_guid, - v_id_error_type_no_permission, - v_code_error_type_no_permission, - */ - RAISE EXCEPTION 'You do not have permission to edit the following product IDs: %', v_ids_product_no_permission - USING ERRCODE = '42501' - ; - END IF; - - -- Transaction - START TRANSACTION; - INSERT INTO Shop_Sales_And_Purchasing_Change_Set ( - comment, - updated_last_by, - updated_last_on - ) - VALUES ( - 'Save ' - || CASE WHEN v_is_new_manufacturing_purchase_order = TRUE THEN 'new ' ELSE '' END - || 'Manufacturing Purchase Order - ' - || v_comment, - v_id_user, - CURRENT_TIMESTAMP - ); - - v_id_change_set := (SELECT id_change_set FROM Shop_Sales_And_Purchasing_Change_Set ORDER BY id_change_set DESC LIMIT 1); - - IF (v_is_new_manufacturing_purchase_order = 1) THEN - INSERT INTO Shop_Manufacturing_Purchase_Order ( - -- id_supplier_ordered, - cost_total_local, - id_currency_cost, - value_produced_total_local, - created_by, - id_change_set, - active - ) - SELECT - -- v_id_supplier_ordered, - SUM(t_MPOPL.cost_total_local), - v_id_currency_cost, - SUM(t_MPOPL.value_produced_total_local), - v_id_user, - v_id_change_set, - v_active - FROM tmp_Shop_Manufacturing_Purchase_Order_Product_Link t_MPOPL - ; - -- v_id_order_new - v_id_order := (SELECT id_order FROM Shop_Manufacturing_Purchase_Order ORDER BY id_order DESC LIMIT 1); - - INSERT INTO Shop_Manufacturing_Purchase_Order_Product_Link ( - id_order, - id_permutation, - cost_total_local, - value_produced_total_local, - id_currency_cost, - quantity_used, - id_unit_quantity, - quantity_produced, - latency_manufacture, - display_order, - active, - created_by, - id_change_set - ) - SELECT - v_id_order, -- v_id_order_new, - id_permutation, - cost_total_local, - value_produced_total_local, - id_currency_cost, - quantity_used, - id_unit_quantity, - quantity_produced, - latency_manufacture, - display_order, - active, - v_id_user, - v_id_change_set - FROM tmp_Shop_Manufacturing_Purchase_Order_Product_Link t_MPOPL - ; - ELSE - UPDATE Shop_Manufacturing_Purchase_Order MPO - SET - -- MPO.id_supplier_ordered = v_id_supplier_ordered, - MPO.cost_total_local = SUM(t_MPOPL.cost_total_local), - MPO.value_produced_total_local = SUM(t_MPOPL.value_produced_total_local), - MPO.id_currency = v_id_currency_cost, - MPO.id_change_set = v_id_change_set, - MPO.active = v_active - FROM Shop_Manufacturing_Purchase_Order MPO - INNER JOIN tmp_Shop_Manufacturing_Purchase_Order_Product_Link t_MPOPL ON MPO.id_order = t_MPOPL.id_order - WHERE MPO.id_order = v_id_order - ; - IF EXISTS (SELECT * FROM tmp_Shop_Manufacturing_Purchase_Order_Product_Link t_MPOPL INNER JOIN Shop_Manufacturing_Purchase_Order_Product_Link MPOPL ON t_MPOPL.id_link = MPOPL.id_link) THEN - UPDATE Shop_Manufacturing_Purchase_Order_Product_Link MPOPL - SET - MPOPL.id_order = t_MPOPL.id_order, - MPOPL.id_permutation = t_MPOPL.id_permutation, - MPOPL.cost_total_local = t_MPOPL.cost_total_local, - MPOPL.value_produced_total_local = t_MPOPL.value_produced_total_local, - MPOPL.id_currency_cost = t_MPOPL.id_currency_cost, - MPOPL.quantity_used = t_MPOPL.quantity_used, - MPOPL.id_unit_quantity = t_MPOPL.id_unit_quantity, - MPOPL.quantity_produced = t_MPOPL.quantity_produced, - MPOPL.latency_manufacture = t_MPOPL.latency_manufacture, - MPOPL.display_order = t_MPOPL.display_order, - MPOPL.active = t_MPOPL.active, - MPOPL.id_change_set = v_id_change_set - FROM Shop_Manufacturing_Purchase_Order_Product_Link MPOPL - INNER JOIN tmp_Shop_Manufacturing_Purchase_Order_Product_Link t_MPOPL - ON MPOPL.id_link = t_MPOPL.id_link - ; - ELSE - INSERT INTO Shop_Manufacturing_Purchase_Order_Product_Link ( - id_order, - id_permutation, - cost_total_local, - value_produced_total_local, - id_currency_cost, - quantity_used, - id_unit_quantity, - quantity_produced, - latency_manufacture, - display_order, - active, - created_by, - id_change_set - ) - SELECT - id_order, - id_permutation, - cost_total_local, - value_produced_total_local, - id_currency_cost, - quantity_used, - id_unit_quantity, - quantity_produced, - latency_manufacture, - display_order, - active, - v_id_user, - v_id_change_set - FROM tmp_Shop_Manufacturing_Purchase_Order_Product_Link t_MPOPL - WHERE t_MPOPL.id_link < 0 - ; - END IF; - END IF; - - COMMIT; - - -- Returns - -- v_now = CURRENT_TIMESTAMP; - /* - -- Manufacturing Purchase Orders - SELECT * - FROM Shop_Manufacturing_Purchase_Order - WHERE - id_order = v_id_order - -- GUID = v_guid - ; - - -- Manufacturing Purchase Order Product Links - SELECT * - FROM Shop_Manufacturing_Purchase_Order_Product_Link - WHERE - id_order = v_id_order - -- GUID = v_guid - ; - */ - - -- Errors - /* - OPEN result_errors FOR - SELECT * - FROM tmp_Msg_Error - ; - -- RETURN NEXT result_errors; - */ - - -- DROP TABLE tmp_Shop_Manufacturing_Purchase_Order; - DROP TABLE tmp_Shop_Manufacturing_Purchase_Order_Product_Link; - -- DROP TABLE tmp_Msg_Error; -END; -$$ LANGUAGE plpgsql; - - -/* - -DELETE FROM Shop_Manufacturing_Purchase_Order_Product_Link_Audit; -DELETE FROM Shop_Manufacturing_Purchase_Order_Product_Link; -DELETE FROM Shop_Manufacturing_Purchase_Order_Product_Link_Temp; -DELETE FROM Shop_Manufacturing_Purchase_Order_Audit; -DELETE FROM Shop_Manufacturing_Purchase_Order; - -INSERT INTO Shop_Manufacturing_Purchase_Order_Product_Link_Temp ( - guid, - id_link, - id_order, - id_permutation, - cost_total_local, - id_currency_cost, - quantity_used, - id_unit_quantity, - quantity_produced, - latency_manufacture, - display_order, - active -) -VALUES - ( - 'NIPS', -- guid - -1, -- id_link, - -1, -- id_order, - 1, -- id_permutation, - 100, -- cost_total_local, - 1, -- id_currency_cost, - 1, -- quantity_used, - 1, -- id_unit_quantity, - 1, -- quantity_produced, - 14, -- latency_manufacture , - 1, -- display_order - 1 -- active - ) -; - -SELECT * FROM Shop_Manufacturing_Purchase_Order_Product_Link_Temp; - -CALL p_shop_save_manufacturing_purchase_order ( - 'NIPS', -- a_guid - 'auth0|6582b95c895d09a70ba10fef', -- a_id_user - -1, -- a_id_order - 1, -- a_id_currency_cost - 1, -- a_active - 'Initial data' -- a_comment -); - -SELECT * FROM Shop_Manufacturing_Purchase_Order_Product_Link_Temp; - -DELETE FROM Shop_Manufacturing_Purchase_Order_Product_Link_Audit; -DELETE FROM Shop_Manufacturing_Purchase_Order_Product_Link; -DELETE FROM Shop_Manufacturing_Purchase_Order_Product_Link_Temp; -DELETE FROM Shop_Manufacturing_Purchase_Order_Audit; -DELETE FROM Shop_Manufacturing_Purchase_Order; - - -*/ - diff --git a/static/PostgreSQL/605_p_shop_save_customer.sql b/static/PostgreSQL/605_p_shop_save_customer.sql deleted file mode 100644 index 79ec88d7..00000000 --- a/static/PostgreSQL/605_p_shop_save_customer.sql +++ /dev/null @@ -1,313 +0,0 @@ - - - - -CREATE OR REPLACE PROCEDURE p_shop_save_customer ( - IN a_guid UUID, - IN a_id_user INTEGER, - IN a_comment UUID, - IN a_id_customer INTEGER, - IN a_name_company VARCHAR(256), - IN a_name_contact VARCHAR(256), - IN a_department_contact VARCHAR(256), - IN a_id_address INTEGER, - IN a_phone_number VARCHAR(20), - IN a_email VARCHAR(515), - IN a_id_currency INTEGER, - IN a_active BOOLEAN -) -AS $$ -DECLARE - v_guid UUID; - v_id_user INTEGER; - v_comment VARCHAR(4000); - v_id_customer INTEGER; - v_name_company VARCHAR(256); - v_name_contact VARCHAR(256); - v_department_contact VARCHAR(256); - v_id_address INTEGER; - v_phone_number VARCHAR(256); - v_email VARCHAR(256); - v_id_currency INTEGER; - v_active BOOLEAN; - v_id_error_type_bad_data INTEGER; - v_id_error_type_no_permission INTEGER; - v_guid_permission UUID; - v_id_permission_customer INTEGER; - v_id_access_level_EDIT INTEGER; - v_has_permission BOOLEAN; - v_id_change_set INTEGER; - v_is_new_customer BOOLEAN; - -- result_errors REFCURSOR; -BEGIN - -- SET SESSION sql_mode = sys.list_drop(@@session.sql_mode, 'ONLY_FULL_GROUP_BY'); - - v_guid := COALESCE(a_guid, gen_random_uuid()); - v_id_user := TRIM(COALESCE(a_id_user, '')); - v_comment := TRIM(COALESCE(a_comment, '')); - v_id_customer := COALESCE(a_id_customer, -1); - v_name_company := TRIM(COALESCE(a_name_company, '')); - v_name_contact := TRIM(COALESCE(a_name_contact, '')); - v_department_contact := TRIM(COALESCE(a_department_contact, '')); - v_id_address := a_id_address; - v_phone_number := TRIM(COALESCE(a_phone_number, '')); - v_email := TRIM(COALESCE(a_email, '')); - v_id_currency := a_id_currency; - v_active := COALESCE(a_active, FALSE); - - v_id_error_type_bad_data := (SELECT id_type FROM Shop_Msg_Error_Type WHERE code = 'BAD_DATA'); - v_guid_permission = gen_random_uuid(); - v_id_permission_customer = (SELECT id_permission FROM Shop_Permission WHERE code = 'STORE_CUSTOMER' LIMIT 1); - v_id_access_level_EDIT = (SELECT id_access_level FROM Shop_Access_Level WHERE code = 'EDIT'); - v_is_new_customer := CASE WHEN v_id_customer <= 0 THEN TRUE ELSE FALSE END; - - -- Temporary tables - /* - CREATE TABLE tmp_Shop_Customer ( - id_customer INTEGER NOT NULL, - name_company VARCHAR(255) NOT NULL, - name_contact VARCHAR(255) NULL, - department_contact VARCHAR(255) NULL, - id_address INTEGER 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 INTEGER NOT NULL, - CONSTRAINT FK_tmp_Shop_Customer_id_currency - FOREIGN KEY (id_currency) - REFERENCES Shop_Currency(id_currency), - active BOOLEAN NOT NULL, - can_view BOOLEAN NOT NULL, - can_edit BOOLEAN NOT NULL, - can_admin BOOLEAN NOT NULL - ); - */ - /* - CREATE TABLE IF NOT EXISTS tmp_Msg_Error ( - display_order INTEGER NOT NULL PRIMARY KEY GENERATED ALWAYS AS IDENTITY, - guid UUID NOT NULL, - id_type INTEGER 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 v_name_company = '' THEN - RAISE EXCEPTION 'Customer company name must be provided' - USING ERRCODE = '22000' - ; - END IF; - IF v_id_address IS NULL THEN - /* - INSERT INTO tmp_Msg_Error ( - guid, id_type, msg - ) - VALUES - (v_guid, v_id_error_type_bad_data, 'Customer address ID must be provided') - ; - */ - RAISE EXCEPTION 'Customer address ID must be provided' - USING ERRCODE = '22000' - ; - END IF; - IF v_email = '' THEN - /* - INSERT INTO tmp_Msg_Error ( - guid, id_type, msg - ) - VALUES - (v_guid, v_id_error_type_bad_data, 'Customer email must be provided') - ; - */ - RAISE EXCEPTION 'Customer email must be provided' - USING ERRCODE = '22000' - ; - END IF; - - - IF NOT EXISTS (SELECT * FROM tmp_Msg_Error) THEN - /* - IF (v_is_new_customer = FALSE AND NOT EXISTS (SELECT * FROM Shop_Customer C WHERE C.id_customer = v_id_customer)) THEN - INSERT INTO tmp_Msg_Error ( - guid, id_type, msg - ) - VALUES - (v_guid, v_id_error_type_bad_data, 'Invalid customer ID: ' || v_id_customer) - ; - END IF; - */ - RAISE EXCEPTION 'Invalid customer ID: %', v_id_customer - USING ERRCODE = '22000' - ; - 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 - (v_id_customer, v_name_company, v_name_contact, v_department_contact, v_id_address, v_phone_number, v_fax, v_email, v_website, v_id_currency, v_active) - /* - FROM Shop_Customer S - WHERE (NOT v_has_filter_category OR C.id_category LIKE '%' || v_ids_category || '%') - AND (v_get_inactive_categories OR C.active) - */ - ; - END IF; - */ - - -- Permissions - CALL p_shop_calc_user(v_guid_permission, v_id_user, 0, v_id_permission_customer, v_id_access_level_edit, ''); - - /* - UPDATE tmp_Shop_Customer t_S - INNER JOIN Shop_Calc_User_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; - */ - v_has_permission := (SELECT can_edit FROM Shop_Calc_User_Temp WHERE GUID = v_guid_permission); - - IF v_has_permission = FALSE THEN - 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 - v_guid, - v_id_error_type_no_permission, - 'You do not have ' || name || ' permissions.' - FROM Shop_Permission - WHERE id_permission = v_id_permission_customer - ; - RAISE EXCEPTION 'You do not have ' || name || ' permissions.' - FROM Shop_Permission - WHERE id_permission = v_id_permission_customer - USING ERRCODE = '22000' - ; - */ - END IF; - - -- CALL p_shop_clear_calc_user(v_guid_permission); - - DELETE FROM Shop_Calc_User_Temp - WHERE GUID = v_guid; - - - -- Transaction - INSERT INTO Shop_Sales_And_Purchasing_Change_Set ( - comment, - updated_last_by, - updated_last_on - ) - VALUES ( - 'Save ' - || CASE WHEN v_is_new_customer = TRUE THEN 'new ' ELSE '' END - || 'Customer - ' - || v_comment, - v_id_user, - CURRENT_TIMESTAMP - ); - - 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 = TRUE) 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 - ( - -- v_id_customer, - v_name_company, v_name_contact, v_department_contact, v_id_address, v_phone_number, v_email, v_id_currency, v_active, v_id_change_set - ) - /* - FROM Shop_Customer S - WHERE (NOT v_has_filter_category OR C.id_category LIKE '%' || v_ids_category || '%') - AND (v_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 = v_name_company, - C.name_contact = v_name_contact, - C.department_contact = v_department_contact, - C.id_address = v_id_address, - C.phone_number = v_phone_number, - C.email = v_email, - C.id_currency = v_id_currency, - C.active = v_active, - C.id_change_set = v_id_change_set - ; - END IF; - - COMMIT; - - -- Returns - -- v_now = CURRENT_TIMESTAMP; - - -- Errors - /* - OPEN result_errors FOR - SELECT * - FROM tmp_Msg_Error - ; - -- RETURN NEXT result_errors; - */ - - -- DROP TABLE tmp_Shop_Customer; - -- DROP TABLE tmp_Msg_Error; -END; -$$ LANGUAGE plpgsql; - - -/* - -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 -; - -*/ diff --git a/static/PostgreSQL/606_p_shop_save_customer_sales_order.sql b/static/PostgreSQL/606_p_shop_save_customer_sales_order.sql deleted file mode 100644 index 3c445bfb..00000000 --- a/static/PostgreSQL/606_p_shop_save_customer_sales_order.sql +++ /dev/null @@ -1,555 +0,0 @@ - --- DROP TABLE IF EXISTS tmp_Shop_Customer_Sales_Order_Product_Link; --- DROP TABLE IF EXISTS tmp_Msg_Error; - -CREATE OR REPLACE PROCEDURE p_shop_save_customer_sales_order ( - IN a_guid UUID, - IN a_id_user INTEGER, - IN a_comment VARCHAR(4000), - IN a_id_order INTEGER, - IN a_id_customer INTEGER, - IN a_id_currency_price INTEGER, - IN a_active BOOLEAN -) -AS $$ -DECLARE - v_guid UUID; - v_id_user INTEGER; - v_comment VARCHAR(4000); - v_id_order INTEGER; - v_id_customer INTEGER; - v_id_currency_price INTEGER; - v_active BOOLEAN; - v_id_error_type_bad_data INTEGER; - v_code_error_type_bad_data VARCHAR(50); - v_id_error_type_no_permission INTEGER; - v_code_error_type_no_permission VARCHAR(50); - -- v_guid_permission UUID; - v_id_permission_Customer_Sales_order INTEGER; - v_id_access_level_EDIT INTEGER; - v_ids_product VARCHAR(4000); - v_ids_product_no_permission VARCHAR(4000); - -- v_id_order_new INTEGER; - v_id_change_set INTEGER; - v_is_new_Customer_Sales_order BOOLEAN; - result_errors REFCURSOR; -BEGIN - -- SET SESSION sql_mode = sys.list_drop(@@session.sql_mode, 'ONLY_FULL_GROUP_BY'); - - v_guid := COALESCE(a_guid, gen_random_uuid()); - v_id_user := TRIM(COALESCE(a_id_user, '')); - v_comment := TRIM(COALESCE(a_comment, '')); - v_id_order := COALESCE(a_id_order, -1); - v_id_customer := a_id_customer; - v_id_currency_price := a_id_currency_price; - v_active := COALESCE(a_active, FALSE); - - v_code_error_type_bad_data := 'BAD_DATA'; - v_id_error_type_bad_data := (SELECT id_type FROM Shop_Msg_Error_Type WHERE code = v_code_error_type_bad_data LIMIT 1); - v_code_error_type_no_permission := 'NO_PERMISSION'; - v_id_error_type_no_permission := (SELECT id_type FROM Shop_Msg_Error_Type WHERE code = v_code_error_type_no_permission LIMIT 1); - -- v_guid_permission := gen_random_uuid(); - v_id_permission_Customer_Sales_order := (SELECT id_permission FROM Shop_Permission WHERE code = 'STORE_CUSTOMER_SALES_ORDER' LIMIT 1); - v_id_access_level_EDIT := (SELECT id_access_level FROM Shop_Access_Level WHERE code = 'EDIT'); - - v_is_new_Customer_Sales_order := CASE WHEN v_id_order <= 0 THEN TRUE ELSE FALSE END; - - -- Temporary tables - /* - CREATE TABLE tmp_Shop_Customer_Sales_Order ( - id_order INTEGER NOT NULL PRIMARY KEY, - id_supplier_ordered INTEGER NOT NULL, - CONSTRAINT FK_tmp_Shop_Customer_Sales_Order_id_supplier_ordered - FOREIGN KEY (id_supplier_ordered) - REFERENCES Shop_Supplier(id_supplier), - price_total_local REAL NOT NULL, - id_currency_price INTEGER NOT NULL - ); - */ - - CREATE TABLE tmp_Shop_Customer_Sales_Order_Product_Link ( - id_link INTEGER NOT NULL PRIMARY KEY, - id_order INTEGER NOT NULL, - /* - CONSTRAINT FK_tmp_Supplier_Purchase_Order_Product_Link_id_order - FOREIGN KEY (id_order) - REFERENCES Shop_Customer_Sales_Order(id_order), - */ - id_permutation INTEGER NOT NULL, - CONSTRAINT FK_tmp_Supplier_Purchase_Order_Product_Link_id_permutation - FOREIGN KEY (id_permutation) - REFERENCES Shop_Product_Permutation(id_permutation), - price_total_local REAL NOT NULL, - id_currency_price INTEGER NOT NULL, - quantity_ordered REAL NOT NULL, - id_unit_quantity INTEGER NOT NULL, - CONSTRAINT FK_tmp_Supplier_Purchase_Order_Product_Link_id_unit_quantity - FOREIGN KEY (id_unit_quantity) - REFERENCES Shop_Unit_Measurement(id_unit_measurement), - quantity_delivered REAL NULL, - latency_delivery_days INTEGER NOT NULL, - display_order INTEGER NOT NULL, - active BOOLEAN NOT NULL, - name_error VARCHAR(200) NOT NULL - ); - - CREATE TABLE IF NOT EXISTS tmp_Msg_Error ( - display_order INTEGER NOT NULL PRIMARY KEY GENERATED ALWAYS AS IDENTITY, - guid UUID NOT NULL, - id_type INTEGER 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 - -- User ID - IF NOT EXISTS (SELECT * FROM tmp_Msg_Error) THEN - IF NOT EXISTS (SELECT * FROM Shop_User WHERE id_user = v_id_user) THEN - INSERT INTO tmp_Msg_Error ( - guid, id_type, code, msg - ) - VALUES - (v_guid, v_id_error_type_bad_data, v_code_error_type_bad_data, CONCAT('Invalid User ID: ', COALESCE(v_id_user, 'NULL'))) - ; - END IF; - END IF; - - -- Order ID - IF NOT EXISTS (SELECT * FROM tmp_Msg_Error) THEN - IF (v_id_order > 0) AND NOT EXISTS (SELECT * FROM Shop_Customer_Sales_Order WHERE id_order = v_id_order) THEN - INSERT INTO tmp_Msg_Error ( - guid, id_type, code, msg - ) - VALUES - (v_guid, v_id_error_type_bad_data, v_code_error_type_bad_data, CONCAT('Invalid Customer Sales Order ID: ', COALESCE(v_id_order, 'NULL'))) - ; - END IF; - END IF; - - -- Customer ID - IF NOT EXISTS (SELECT * FROM tmp_Msg_Error) THEN - IF ISNULL(v_id_customer) OR NOT EXISTS (SELECT * FROM Shop_Customer WHERE id_customer = v_id_customer) THEN - INSERT INTO tmp_Msg_Error ( - guid, id_type, code, msg - ) - VALUES - (v_guid, v_id_error_type_bad_data, v_code_error_type_bad_data, CONCAT('Invalid Customer ID: ', COALESCE(v_id_customer, 'NULL'))) - ; - END IF; - END IF; - - -- Currency ID - IF NOT EXISTS (SELECT * FROM tmp_Msg_Error) THEN - IF ISNULL(v_id_currency_price) OR NOT EXISTS (SELECT * FROM Shop_Currency WHERE id_currency = v_id_currency_price) THEN - INSERT INTO tmp_Msg_Error ( - guid, id_type, code, msg - ) - VALUES - (v_guid, v_id_error_type_bad_data, v_code_error_type_bad_data, CONCAT('Invalid currency ID: ', COALESCE(v_id_currency, 'NULL'))) - ; - END IF; - END IF; - - -- Comment - IF NOT EXISTS (SELECT * FROM tmp_Msg_Error) THEN - IF v_comment = '' THEN - INSERT INTO tmp_Msg_Error ( - guid, id_type, code, msg - ) - VALUES - (v_guid, v_id_error_type_bad_data, v_code_error_type_bad_data, 'A comment must be provided.') - ; - END IF; - END IF; - - - -- Get data from Temp table - IF NOT EXISTS (SELECT * FROM tmp_Msg_Error) THEN - INSERT INTO tmp_Shop_Customer_Sales_Order_Product_Link ( - id_link, - id_order, - id_permutation, - price_total_local, - id_currency_price, - quantity_ordered, - id_unit_quantity, - quantity_delivered, - latency_delivery_days, - display_order, - active, - name_error - ) - SELECT - CSOPL_T.id_link, - CSOPL_T.id_order, - CSOPL_T.id_permutation, - (PP.cost_local + PP.profit_local_min) * quantity_ordered AS price_total_local, - CSOPL_T.id_currency_price, - CSOPL_T.quantity_ordered, - CSOPL_T.id_unit_quantity, - CSOPL_T.quantity_delivered, - CSOPL_T.latency_delivery_days, - CSOPL_T.display_order, - CSOPL_T.active, - PP.id_permutation || ' - ' || COALESCE(P.name ,'') AS name_error - FROM Shop_Customer_Sales_Order_Product_Link_Temp CSOPL_T - INNER JOIN Shop_Product_Permutation PP ON CSOPL_T.id_permutation = PP.id_permutation - INNER JOIN Shop_Product P ON PP.id_product = P.id_product - WHERE CSOPL_T.GUID = v_guid - ; - DELETE FROM Shop_Customer_Sales_Order_Product_Link_Temp CSOPL_T - WHERE CSOPL_T.GUID = v_guid - ; - - /* - UPDATE tmp_Shop_Customer_Sales_Order_Product_Link t_CSOPL - SET - price_total_local - */ - END IF; - - -- Invalid quantity ordered - IF NOT EXISTS (SELECT * FROM tmp_Msg_Error) THEN - IF EXISTS ( - SELECT * - FROM tmp_Shop_Customer_Sales_Order_Product_Link - WHERE - NOT ISNULL(quantity_ordered) - AND quantity_ordered < 0 - ) THEN - INSERT INTO tmp_Msg_Error ( - guid, id_type, code, msg - ) - SELECT - v_guid, - v_id_error_type_bad_data, - v_code_error_type_bad_data, - 'Invalid quantity ordered property for the following permutations: ' || STRING_AGG(t_CSOPL.name_error, ', ') - FROM tmp_Shop_Customer_Sales_Order_Product_Link t_CSOPL - -- INNER JOIN Shop_Product_Permutation PP ON t_CSOPL.id_permutation = PP.id_permutation - WHERE t_CSOPL.quantity_ordered < 0 - ; - END IF; - END IF; - - -- Duplicates - IF NOT EXISTS (SELECT * FROM tmp_Msg_Error) THEN - IF EXISTS (SELECT id_permutation, name_error, COUNT(*) FROM tmp_Shop_Customer_Sales_Order_Product_Link t_CSOPL GROUP BY id_permutation HAVING COUNT(*) > 1) THEN - INSERT INTO tmp_Msg_Error ( - guid, id_type, code, msg - ) - SELECT - v_guid, - v_id_error_type_bad_data, - v_code_error_type_bad_data, - 'Duplicate records: ' || STRING_AGG(t_CSOPLC.name_error, ', ') - FROM (SELECT id_permutation, name_error, COUNT(*) FROM tmp_Shop_Customer_Sales_Order_Product_Link t_CSOPL GROUP BY id_permutation HAVING COUNT(*) > 1) t_CSOPLC - ; - END IF; - END IF; - - - - -- Permissions - IF NOT EXISTS (SELECT * FROM tmp_Msg_Error) THEN - v_ids_product := ( - SELECT STRING_AGG(DISTINCT PP.id_product, ',') - FROM tmp_Shop_Customer_Sales_Order_Product_Link t_SPO - INNER JOIN Shop_Product_Permutation PP ON t_SPO.id_permutation = PP.id_permutation - ); - - CALL p_shop_calc_user(v_guid_permission, v_id_user, 0, v_id_permission_Customer_Sales_order, v_id_access_level_edit, v_ids_product); - - /* - UPDATE tmp_Shop_Supplier t_S - INNER JOIN Shop_Calc_User_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_Calc_User_Temp - WHERE - GUID = v_guid_permission - AND can_edit = 0 - ); - - IF v_has_permission = FALSE THEN - 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 - v_guid, - v_id_error_type_no_permission, - CONCAT('You do not have ', name, ' permissions.') - FROM Shop_Permission - WHERE id_permission = v_id_permission_Customer_Sales_order - ; - END IF; - */ - v_ids_product_no_permission := ( - SELECT STRING_AGG(PT.id_product, ',') - FROM Shop_Calc_User_Temp PT - WHERE - PT.can_edit = 0 - AND NOT ISNULL(PT.id_product) - ); - IF NOT ISNULL(v_ids_product_no_permission) THEN - INSERT INTO tmp_Msg_Error ( - guid, id_type, code, msg - ) - VALUES ( - v_guid, - v_id_error_type_no_permission, - v_code_error_type_no_permission, - 'You do not have permission to edit the following product IDs: ' || v_ids_product_no_permission - ) - ; - END IF; - - DELETE FROM Shop_Calc_User_Temp - WHERE GUID = v_guid; - END IF; - - -- Transaction - IF NOT EXISTS (SELECT * FROM tmp_Msg_Error) THEN - START TRANSACTION; - INSERT INTO Shop_Sales_And_Purchasing_Change_Set ( - comment, - updated_last_by, - updated_last_on - ) - VALUES ( - 'Save ' - || CASE WHEN v_is_new_Customer_Sales_order = TRUE THEN 'new ' ELSE '' END - || 'Customer Sales Order - ' - || v_comment, - v_id_user, - CURRENT_TIMESTAMP - ); - - v_id_change_set := (SELECT id_change_set FROM Shop_Sales_And_Purchasing_Change_Set ORDER BY id_change_set DESC LIMIT 1); - - IF (v_is_new_Customer_Sales_order = 1) THEN - INSERT INTO Shop_Customer_Sales_Order ( - id_customer, - price_total_local, - id_currency_price, - created_by, - id_change_set, - active - ) - SELECT - v_id_customer, - SUM(t_CSOPL.price_total_local), - v_id_currency_price, - v_id_user, - v_id_change_set, - v_active - FROM tmp_Shop_Customer_Sales_Order_Product_Link t_CSOPL - ; - -- v_id_order_new - v_id_order := (SELECT id_order FROM Shop_Customer_Sales_Order ORDER BY id_order DESC LIMIT 1); - INSERT INTO Shop_Customer_Sales_Order_Product_Link ( - id_order, - id_permutation, - price_total_local, - id_currency_price, - quantity_ordered, - id_unit_quantity, - quantity_delivered, - latency_delivery_days, - display_order, - active, - created_by, - id_change_set - ) - SELECT - v_id_order, -- v_id_order_new, - id_permutation, - price_total_local, - id_currency_price, - quantity_ordered, - id_unit_quantity, - quantity_delivered, - latency_delivery_days, - display_order, - active, - v_id_user, - v_id_change_set - FROM tmp_Shop_Customer_Sales_Order_Product_Link t_CSOPL - ; - ELSE - UPDATE Shop_Customer_Sales_Order CSO - SET - CSO.id_customer = v_id_customer, - CSO.price_total_local = SUM(t_CSOPL.price_total_local), - CSO.id_currency = v_id_currency_price, - CSO.id_change_set = v_id_change_set, - CSO.active = v_active - FROM Shop_Customer_Sales_Order CSO - INNER JOIN tmp_Shop_Customer_Sales_Order_Product_Link t_CSOPL ON CSO.id_order = t_CSOPL.id_order - WHERE SPO.id_order = v_id_order - ; - IF EXISTS (SELECT * FROM tmp_Shop_Customer_Sales_Order_Product_Link t_CSOPL INNER JOIN Shop_Customer_Sales_Order_Product_Link CSOPL ON t_CSOPL.id_link = CSOPL.id_link) THEN - UPDATE Shop_Customer_Sales_Order_Product_Link CSOPL - SET - CSOPL.id_order = t_CSOPL.id_order, - CSOPL.id_permutation = t_CSOPL.id_permutation, - CSOPL.price_total_local = t_CSOPL.price_total_local, - CSOPL.id_currency_price = t_CSOPL.id_currency_price, - CSOPL.quantity_ordered = t_CSOPL.quantity_ordered, - CSOPL.id_unit_quantity = t_CSOPL.id_unit_quantity, - CSOPL.quantity_delivered = t_CSOPL.quantity_delivered, - CSOPL.latency_delivery_days = t_CSOPL.latency_delivery_days, - CSOPL.display_order = t_CSOPL.display_order, - CSOPL.active = t_CSOPL.active, - CSOPL.id_change_set = v_id_change_set - FROM Shop_Customer_Sales_Order_Product_Link CSOPL - INNER JOIN tmp_Shop_Customer_Sales_Order_Product_Link t_CSOPL - ON CSOPL.id_link = t_CSOPL.id_link - ; - ELSE - INSERT INTO Shop_Customer_Sales_Order_Product_Link ( - id_order, - id_permutation, - price_total_local, - id_currency_price, - quantity_ordered, - id_unit_quantity, - quantity_delivered, - latency_delivery_days, - display_order, - active, - created_by, - id_change_set - ) - SELECT - id_order, - id_permutation, - price_total_local, - id_currency_price, - quantity_ordered, - id_unit_quantity, - quantity_delivered, - latency_delivery_days, - display_order, - active, - v_id_user, - v_id_change_set - FROM tmp_Shop_Customer_Sales_Order_Product_Link t_CSOPL - WHERE t_CSOPL.id_link < 0 - ; - END IF; - END IF; - - COMMIT; - /* - IF EXISTS (SELECT * FROM tmp_Msg_Error) THEN - ROLLBACK; - ELSE - COMMIT; - END IF; - */ - END IF; - - -- Returns - -- v_now := CURRENT_TIMESTAMP; - /* - -- Supplier Purchase Orders - SELECT * - FROM Shop_Customer_Sales_Order - WHERE id_order = v_id_order - ; - - -- Supplier Purchase Order Product Links - SELECT * - FROM Shop_Customer_Sales_Order_Product_Link - WHERE id_order = v_id_order - ; - */ - - -- Errors - OPEN result_errors FOR - SELECT * - FROM tmp_Msg_Error - ; - -- RETURN NEXT result_errors; - - -- DROP TABLE tmp_Shop_Customer_Sales_Order; - DROP TABLE tmp_Shop_Customer_Sales_Order_Product_Link; - DROP TABLE tmp_Msg_Error; -END; -$$ LANGUAGE plpgsql; - - -/* - -DELETE FROM Shop_Customer_Sales_Order_Product_Link_Audit; -DELETE FROM Shop_Customer_Sales_Order_Product_Link; -DELETE FROM Shop_Customer_Sales_Order_Product_Link_Temp; -DELETE FROM Shop_Customer_Sales_Order_Audit; -DELETE FROM Shop_Customer_Sales_Order; - -INSERT INTO Shop_Customer_Sales_Order_Product_Link_Temp ( - guid, - id_link, - id_order, - id_permutation, - price_total_local, - id_currency_price, - quantity_ordered, - id_unit_quantity, - quantity_delivered, - latency_delivery_days, - display_order, - active -) -VALUES - ( - 'NIPS', -- guid - -1, -- id_link, - -1, -- id_order, - 1, -- id_permutation, - 100, -- price_total_local, - 1, -- id_currency_price, - 1, -- quantity_ordered, - 1, -- id_unit_quantity, - 1, -- quantity_delivered, - 14, -- latency_delivery_days , - 1, -- display_order - 1 -- active - ) -; - -SELECT * FROM Shop_Customer_Sales_Order_Product_Link_Temp; - -CALL p_shop_save_customer_sales_order ( - 'NIPS', -- a_guid - 'auth0|6582b95c895d09a70ba10fef', -- a_id_user - 'Initial customer', -- a_comment - -1, -- a_id_order - 4, -- a_id_customer - 1, -- a_id_currency_price - 1 -- a_active -); - -SELECT * FROM Shop_Customer_Sales_Order_Product_Link_Temp; - -DELETE FROM Shop_Customer_Sales_Order_Product_Link_Audit; -DELETE FROM Shop_Customer_Sales_Order_Product_Link; -DELETE FROM Shop_Customer_Sales_Order_Product_Link_Temp; -DELETE FROM Shop_Customer_Sales_Order_Audit; -DELETE FROM Shop_Customer_Sales_Order; - - -*/ - diff --git a/static/PostgreSQL/610_p_shop_save_user.sql b/static/PostgreSQL/610_p_shop_save_user.sql deleted file mode 100644 index 2fcfb3f2..00000000 --- a/static/PostgreSQL/610_p_shop_save_user.sql +++ /dev/null @@ -1,166 +0,0 @@ - - - -/* - -CALL p_shop_save_user ( - 'auth0|6582b95c895d09a70ba10fef', -- a_id_user - '', -- a_name - '', -- a_email - 0 -- a_email_verified -) - -*/ - - -CREATE OR REPLACE PROCEDURE p_shop_save_user ( - IN a_id_user INTEGER, - IN a_name VARCHAR(255), - IN a_email VARCHAR(254), - IN a_email_verified BIT -) -AS $$ -DECLARE - v_id_user INTEGER; - v_name VARCHAR(255); - v_email VARCHAR(254); - v_email_verified BIT; - v_has_filter_user BOOLEAN; - result_errors REFCURSOR; -BEGIN - v_id_user := TRIM(COALESCE(a_id_user, '')); - v_name := TRIM(COALESCE(a_name, '')); - v_email := TRIM(COALESCE(a_email, '')); - v_email_verified := COALESCE(a_email_verified, FALSE); - - v_has_filter_user = CASE WHEN v_id_user = '' THEN FALSE ELSE TRUE END; - - -- Temporary tables - DROP TABLE IF EXISTS tmp_Msg_Error; - DROP TABLE IF EXISTS tmp_Shop_User; - - CREATE TABLE tmp_Shop_User ( - id_user INTEGER, - CONSTRAINT FK_tmp_Shop_User_id_user - FOREIGN KEY (id_user) - REFERENCES Shop_User(id_user), - active BOOLEAN NOT NULL - ); - - CREATE TABLE tmp_Msg_Error ( - display_order INTEGER NOT NULL PRIMARY KEY GENERATED ALWAYS AS IDENTITY, - id_type INTEGER NOT NULL, - -- code VARCHAR(50) NOT NULL, - -- CONSTRAINT chk_tmp_Msg_Error_code CHECK (code IN (SELECT code FROM Shop_Msg_Error_Type)), - CONSTRAINT FK_tmp_Msg_Error_id_type - FOREIGN KEY (id_type) - REFERENCES Shop_Msg_Error_Type(id_type), - msg VARCHAR(4000) NOT NULL - ); - - - -- Parse filters - - - -- User - IF v_has_filter_user THEN - INSERT INTO tmp_Shop_User ( - id_user, - active - ) - SELECT id_user, - active - FROM Shop_User - WHERE id_user = v_id_user - AND active - LIMIT 1 - ; - - IF NOT EXISTS (SELECT id_user FROM tmp_Shop_User LIMIT 1) THEN - INSERT INTO Shop_User ( - id_user, - name, - email, - email_verified - ) - VALUES ( - v_id_user, - v_name, - v_email, - v_email_verified - ); - - INSERT INTO tmp_Shop_User ( - id_user, - active - ) - SELECT id_user, - active - FROM Shop_User - WHERE id_user = v_id_user - AND active - LIMIT 1 - ; - END IF; - - v_id_user := (SELECT id_user FROM tmp_Shop_User LIMIT 1); - ELSE - INSERT INTO tmp_Msg_Error ( - id_type, - msg - ) - VALUES ( - (SELECT id_type FROM Shop_Msg_Error_Type WHERE code = 'BAD_DATA' LIMIT 1), - 'No user ID provided.' - ) - ; - END IF; - - - /* - IF NOT EXISTS (SELECT msg FROM tmp_Msg_Error LIMIT 1) THEN - END IF; - */ - - - -- Returns - /* - -- User - SELECT * - FROM tmp_Shop_User - ; - */ - - -- Errors - OPEN result_errors FOR - SELECT * - FROM tmp_Msg_Error - ; - -- RETURN NEXT result_errors; - - /* - -- Return arguments for test - SELECT a_id_user, - a_name, - a_email, - a_email_verified - ; - */ - - -- Clean up - DROP TABLE IF EXISTS tmp_Msg_Error; - DROP TABLE IF EXISTS tmp_Shop_User; -END; -$$ LANGUAGE plpgsql; - - -/* - -CALL p_shop_save_user ( - '', - '', - '', - 0 -) - -*/ diff --git a/static/PostgreSQL/611_p_shop_save_user_basket.sql b/static/PostgreSQL/611_p_shop_save_user_basket.sql deleted file mode 100644 index 6952dada..00000000 --- a/static/PostgreSQL/611_p_shop_save_user_basket.sql +++ /dev/null @@ -1,833 +0,0 @@ - - - -/* - -CALL p_shop_edit_user_basket ( - '', -- a_id_user - '', -- a_ids_permutation_basket - '', -- a_quantities_permutation_basket - 1, -- a_id_permutation_edit - NULL, -- a_quantity_permutation_edit - 1, -- a_sum_not_edit - 1, -- a_id_currency_edit - 1 -- a_id_region_purchase -) - -* - - -CREATE OR REPLACE PROCEDURE p_shop_edit_user_basket ( - IN a_id_user INTEGER, - IN a_ids_permutation_basket VARCHAR(4000), - IN a_quantities_permutation_basket VARCHAR(4000), - IN a_id_permutation_edit INTEGER, - IN a_quantity_permutation_edit INTEGER, - IN a_sum_not_edit BOOLEAN, - IN a_id_currency INTEGER, - IN a_id_region_purchase INT -) -AS $$ -DECLARE - v_guid UUID; - v_id_user INTEGER; - v_ids_permutation_basket BOOLEAN; - v_quantities_permutation_basket VARCHAR -- REMAKE WITH TEMP TABLE -BEGIN - -- Argument redeclaration - -- Variable declaration - DECLARE v_has_filter_user BOOLEAN; - DECLARE v_has_filter_permutation_basket BOOLEAN; - DECLARE v_has_filter_permutation_edit BOOLEAN; - DECLARE v_has_filter_region BOOLEAN; - DECLARE v_has_filter_currency BOOLEAN; - DECLARE v_n_id_permutation_basket INTEGER; - DECLARE v_n_quantity_permutation_basket INTEGER; - DECLARE v_row_number INTEGER; - DECLARE v_guid UUID; - -- DECLARE v_id_user VARCHAR(100); - DECLARE v_id_permission_product INTEGER; - DECLARE v_ids_permutation_permission VARCHAR(4000); - DECLARE v_now TIMESTAMP; - -- DECLARE v_quantity_new INTEGER; - DECLARE v_change_set_used BOOLEAN; - DECLARE v_id_change_set INTEGER; - - SET v_guid = gen_random_uuid(); - - -- Argument validation + default values - IF a_id_user IS NULL THEN - SET a_id_user = ''; - ELSE - SET a_id_user = TRIM(a_id_user); - END IF; - IF a_ids_permutation_basket IS NULL THEN - SET a_ids_permutation_basket = ''; - ELSE - SET a_ids_permutation_basket = TRIM(a_ids_permutation_basket); - END IF; - IF a_quantities_permutation_basket IS NULL THEN - SET a_quantities_permutation_basket = ''; - ELSE - SET a_quantities_permutation_basket = TRIM(a_quantities_permutation_basket); - END IF; - IF a_sum_not_edit IS NULL THEN - SET a_sum_not_edit = TRUE; - END IF; - - -- Temporary tables - DROP TABLE IF EXISTS tmp_Msg_Error; - DROP TABLE IF EXISTS tmp_Shop_Basket; - DROP TEMPORARY TABLE IF EXISTS tmp_Shop_Quantity; - DROP TABLE IF EXISTS tmp_Shop_Product; - DROP TABLE IF EXISTS tmp_Shop_User; - - CREATE TABLE tmp_Shop_User ( - id_user INTEGER, - CONSTRAINT FK_tmp_Shop_User_id_user - FOREIGN KEY (id_user) - REFERENCES Shop_User(id_user), - active BOOLEAN NOT NULL - ); - - CREATE TABLE tmp_Shop_Product ( - id_product INTEGER NOT NULL, - CONSTRAINT FK_tmp_Shop_Product_id_product - FOREIGN KEY (id_product) - REFERENCES Shop_Product(id_product), - id_permutation INTEGER NOT NULL, - CONSTRAINT FK_tmp_Shop_Product_id_permutation - FOREIGN KEY (id_permutation) - REFERENCES Shop_Product_Permutation(id_permutation), - display_order INTEGER NOT NULL, - active INTEGER NOT NULL DEFAULT 1 - ); - - CREATE TEMPORARY TABLE tmp_Shop_Quantity( - quantity INTEGER NOT NULL, - display_order INTEGER NOT NULL, - active INTEGER NOT NULL DEFAULT 1 - ); - - CREATE TABLE tmp_Shop_Basket ( - id_category INTEGER NOT NULL, - CONSTRAINT FK_tmp_Shop_Basket_id_category - FOREIGN KEY (id_category) - REFERENCES Shop_Product_Category(id_category), - id_product INTEGER NOT NULL, - CONSTRAINT FK_tmp_Shop_Basket_id_product - FOREIGN KEY (id_product) - REFERENCES Shop_Product(id_product), - id_permutation INTEGER NOT NULL, - CONSTRAINT FK_tmp_Shop_Basket_id_permutation - FOREIGN KEY (id_permutation) - REFERENCES Shop_Product_Permutation(id_permutation), - id_region_purchase INTEGER NOT NULL, - CONSTRAINT FK_tmp_Shop_Basket_id_region_purchase - FOREIGN KEY (id_region_purchase) - REFERENCES Shop_Region(id_region), - id_currency INTEGER NOT NULL, - CONSTRAINT FK_tmp_Shop_Basket_id_currency - FOREIGN KEY (id_currency) - REFERENCES Shop_Currency(id_currency), - quantity INTEGER NOT NULL, - active BOOLEAN NOT NULL DEFAULT TRUE - /* - display_order_category INTEGER NOT NULL, - display_order_product INTEGER NOT NULL - */ - ); - - CREATE TABLE IF NOT EXISTS tmp_Msg_Error ( - display_order INTEGER NOT NULL PRIMARY KEY GENERATED ALWAYS AS IDENTITY, - guid UUID NOT NULL, - id_type INTEGER NOT NULL, - -- code VARCHAR(50) NOT NULL, - -- CONSTRAINT chk_tmp_Msg_Error_code CHECK (code IN (SELECT code FROM Shop_Msg_Error_Type)), - CONSTRAINT FK_tmp_Msg_Error_id_type - FOREIGN KEY (id_type) - REFERENCES Shop_Msg_Error_Type(id_type), - msg VARCHAR(4000) NOT NULL - ); - - - -- Parse filters - SET v_has_filter_user = NOT (a_id_user = ''); - SET v_has_filter_permutation_basket = NOT (a_ids_permutation_basket = ''); - SET v_has_filter_permutation_edit = NOT ISNULL(a_id_permutation_edit); - SET v_has_filter_currency = NOT ISNULL(a_id_currency); - SET v_has_filter_region = NOT ISNULL(a_id_region_purchase); - -- SET v_quantity_new = CASE WHEN a_sum_not_edit THEN quantity + a_quantity_product_edit ELSE a_quantity_product_edit END; - /* - SELECT v_has_filter_user, v_has_filter_basket - ; - - */ - - -- Currency - IF NOT v_has_filter_currency THEN - INSERT INTO tmp_Msg_Error ( - id_type, - guid, - msg - ) - VALUES ( - (SELECT id_type FROM Shop_Msg_Error_Type WHERE code = 'BAD_DATA' LIMIT 1), - v_guid, - 'Currency ID not provided.' - ) - ; - END IF; - IF v_has_filter_currency AND NOT EXISTS ( SELECT * FROM Shop_Currency WHERE id_currency = a_id_currency) THEN - INSERT INTO tmp_Msg_Error ( - id_type, - guid, - msg - ) - VALUES ( - (SELECT id_type FROM Shop_Msg_Error_Type WHERE code = 'BAD_DATA' LIMIT 1), - v_guid, - CONCAT('Currency ID not found: ', a_id_currency, '.') - ) - ; - END IF; - - -- Region - IF NOT v_has_filter_region THEN - INSERT INTO tmp_Msg_Error ( - id_type, - guid, - msg - ) - VALUES ( - (SELECT id_type FROM Shop_Msg_Error_Type WHERE code = 'BAD_DATA' LIMIT 1), - v_guid, - 'Region ID not provided.' - ) - ; - END IF; - IF v_has_filter_region AND NOT EXISTS ( SELECT * FROM Shop_Region WHERE id_region = a_id_region_purchase) THEN - INSERT INTO tmp_Msg_Error ( - id_type, - guid, - msg - ) - VALUES ( - (SELECT id_type FROM Shop_Msg_Error_Type WHERE code = 'BAD_DATA' LIMIT 1), - v_guid, - CONCAT('Region ID not found: ', a_id_region_purchase, '.') - ) - ; - END IF; - - -- User - IF v_has_filter_user THEN - INSERT INTO tmp_Shop_User ( - id_user, - active - ) - SELECT id_user, - active - FROM Shop_User - WHERE id_user LIKE CONCAT('%', a_id_user, '%') - AND active - LIMIT 1 - ; - - IF NOT EXISTS (SELECT id_user FROM tmp_Shop_User LIMIT 1) THEN - SET v_has_filter_user = FALSE; - - INSERT INTO tmp_Msg_Error ( - id_type, - guid, - msg - ) - VALUES ( - (SELECT id_type FROM Shop_Msg_Error_Type WHERE code = 'BAD_DATA' LIMIT 1), - v_guid, - CONCAT('User ID not found: ', a_id_user, '.') - ) - ; - END IF; - - SET a_id_user := (SELECT id_user FROM tmp_Shop_User LIMIT 1); - END IF; - - IF v_has_filter_user AND NOT EXISTS (SELECT msg FROM tmp_Msg_Error WHERE guid = v_guid LIMIT 1) THEN - SET v_change_set_used = FALSE; - INSERT INTO Shop_User_Change_Set ( - comment - ) - VALUES ( - 'edit basket' - ); - SET v_id_change_set := (SELECT id_change_set FROM Shop_User_Change_Set ORDER BY id_change_set DESC LIMIT 1); - END IF; - - -- Get basket - -- User - IF v_has_filter_user AND NOT EXISTS (SELECT msg FROM tmp_Msg_Error WHERE guid = v_guid LIMIT 1) THEN - INSERT INTO tmp_Shop_Basket ( - id_category, - id_product, - id_permutation, - id_region_purchase, - id_currency, - quantity, - active - /* - display_order_category, - display_order_product - */ - ) - SELECT - C.id_category, - UB.id_product, - UB.id_permutation, - UB.id_region_purchase, - UB.id_currency, - UB.quantity, - UB.active - /* - C.display_order, - P.display_order - */ - FROM Shop_User_Basket UB - /* - INNER JOIN tmp_Shop_User t_U - ON UB.id_user = t_U.id_user - */ - INNER JOIN Shop_Product_Permutation PP - ON UB.id_product = PP.id_product - AND PP.active - INNER JOIN Shop_Product P - ON PP.id_product = P.id_product - AND P.active - INNER JOIN Shop_Product_Category C - ON P.id_category = C.id_category - AND C.active - WHERE UB.id_user = a_id_user - ; - END IF; - - -- Currency - IF EXISTS (SELECT * FROM tmp_Shop_Basket WHERE active LIMIT 1) - AND NOT EXISTS (SELECT msg FROM tmp_Msg_Error WHERE guid = v_guid LIMIT 1) THEN - IF EXISTS (SELECT * FROM tmp_Shop_Basket WHERE active AND id_currency != a_id_currency) THEN - INSERT INTO tmp_Msg_Error ( - id_type, - guid, - msg - ) - VALUES ( - (SELECT id_type FROM Shop_Msg_Error_Type WHERE code = 'BAD_DATA' LIMIT 1), - v_guid, - CONCAT( - 'Currency ID does not match currency of other items in basket. Basket currency: ', - (SELECT code FROM Shop_Currency WHERE id_currency = ( - SELECT - id_currency - FROM tmp_Shop_Basket - WHERE active - AND id_currency != a_id_currency - LIMIT 1 - )), - ', new currency: ', - (SELECT code FROM Shop_Currency WHERE id_currency = a_id_currency), - '.' - ) - ) - ; - END IF; - END IF; - - -- Region - IF EXISTS (SELECT * FROM tmp_Shop_Basket WHERE active LIMIT 1) - AND NOT EXISTS (SELECT msg FROM tmp_Msg_Error WHERE guid = v_guid LIMIT 1) THEN - IF EXISTS ( - SELECT * - FROM tmp_Shop_Basket - WHERE - active - AND id_region_purchase != a_id_region_purchase - ) THEN - INSERT INTO tmp_Msg_Error ( - id_type, - guid, - msg - ) - VALUES ( - (SELECT id_type FROM Shop_Msg_Error_Type WHERE code = 'BAD_DATA' LIMIT 1), - v_guid, - CONCAT('Purchase region ID does not match region of other items in basket. Basket currency: ', - (SELECT code FROM Shop_Region WHERE id_region = ( - SELECT - id_region_purchase - FROM tmp_Shop_Basket - WHERE active - AND id_region != a_id_region_purchase - LIMIT 1 - )), - ', new currency: ', - (SELECT code FROM Shop_Region WHERE id_region = a_id_region_purchase), - '.' - ) - ) - ; - END IF; - END IF; - - -- String product id, permutation id, quantity list - IF NOT EXISTS (SELECT * FROM tmp_Shop_Basket WHERE active LIMIT 1) AND NOT EXISTS (SELECT msg FROM tmp_Msg_Error WHERE guid = v_guid LIMIT 1) THEN -- NOT v_has_filter_user AND - -- Get product ids - CALL p_split(a_guid, a_ids_permutation_basket, ','); - INSERT INTO tmp_Shop_Product ( - id_product, id_permutation, display_order - ) - SELECT PP.id_product, ST.substring, ST.display_order - FROM Split_Temp ST - INNER JOIN Shop_Product_Permutation PP - ON ST.substring = PP.id_permutation - -- AND PP.active - ; - /* - SELECT substring as id_product, display_order - FROM Split_Temp - ; - */ - DROP TABLE Split_Temp; - - -- Get product quantities - CALL p_split(a_guid, a_quantities_permutation_basket, ','); - INSERT INTO tmp_Shop_Quantity ( - quantity, display_order - ) - SELECT substring, display_order - FROM Split_Temp - ; - /* - SELECT substring AS quantity_product, display_order - FROM Split_Temp - ; - */ - DROP TABLE Split_Temp; - - -- Compare number of product ids to number of quantities - SET v_n_id_permutation_basket := (SELECT display_order FROM tmp_Shop_Product ORDER BY display_order DESC LIMIT 1); - SET v_n_quantity_permutation_basket := (SELECT display_order FROM tmp_Shop_Quantity ORDER BY display_order DESC LIMIT 1); - IF NOT v_n_id_permutation_basket = v_n_quantity_permutation_basket THEN - INSERT INTO tmp_Msg_Error ( - id_type, - guid, - msg - ) - VALUES ( - (SELECT id_type FROM Shop_Msg_Error_Type WHERE code = 'BAD_DATA' LIMIT 1), - v_guid, - CONCAT('Number of permutations (', v_n_id_permutation_basket, ') does not equal number of quantities (', v_n_quantity_permutation_basket, ') for basket.') - ) - ; - ELSE - INSERT INTO tmp_Shop_Basket ( - id_category, - id_product, - id_permutation, - id_region_purchase, - id_currency, - quantity - ) - SELECT - C.id_category, - P.id_product, - t_P.id_permutation, - a_id_region_purchase, - a_id_currency, - t_Q.quantity - FROM tmp_Shop_Product t_P - INNER JOIN tmp_Shop_Quantity t_Q - ON t_P.display_order = t_Q.display_order - INNER JOIN Shop_Product_Permutation PP - ON t_P.id_permutation = PP.id_permutation - AND PP.active - INNER JOIN Shop_Product P - ON PP.id_product = P.id_product - AND P.active - INNER JOIN Shop_Product_Category C - ON P.id_category = C.id_category - AND C.active - -- RIGHT JOIN tmp_Shop_Basket t_UB ON ISNULL(t_UB.id_product) - -- WHERE t_P.id_product NOT IN (SELECT id_product FROM tmp_Shop_Basket) - ; - - /* - IF EXISTS( - SELECT * - FROM Shop_Product P - INNER JOIN Shop_Product_Category C - ON P.id_category = C.id_category - INNER JOIN tmp_Shop_Basket t_B - ON P.id_product = t_B.id_product - WHERE C.active = FALSE OR P.active = FALSE LIMIT 1 - ) THEN - INSERT INTO tmp_Msg_Error ( - id_type, - guid, - msg - ) - VALUES ( - (SELECT id_type FROM Shop_Msg_Error_Type WHERE code = 'BAD_DATA' LIMIT 1), - v_guid, - CONCAT('No valid product IDs in list: ', a_ids_permutation_basket, '.') - ) - ; - END IF; - */ - END IF; - END IF; - - /* - select v_has_filter_edit; - select * from tmp_Shop_Basket; - select * from tmp_Msg_Error; - */ - - - -- Edit basket product - IF v_has_filter_permutation_edit AND NOT EXISTS (SELECT msg FROM tmp_Msg_Error WHERE guid = v_guid LIMIT 1) THEN - IF EXISTS ( - SELECT * - FROM Shop_Product_Permutation PP - INNER JOIN Shop_Product P - ON PP.id_product = P.id_product - INNER JOIN Shop_Product_Category C - ON P.id_category = C.id_category - WHERE - ( - C.active = FALSE - OR P.active = FALSE - OR PP.active = FALSE - ) - AND PP.id_permutation = a_id_permutation_edit - LIMIT 1 - ) THEN - INSERT INTO tmp_Msg_Error ( - id_type, - guid, - msg - ) - VALUES ( - (SELECT id_type FROM Shop_Msg_Error_Type WHERE code = 'BAD_DATA' LIMIT 1), - v_guid, - CONCAT('Invalid product ID to edit: ', a_id_product_edit, '.') - ) - ; - END IF; - END IF; - IF v_has_filter_permutation_edit AND NOT EXISTS (SELECT msg FROM tmp_Msg_Error WHERE guid = v_guid LIMIT 1) THEN - IF EXISTS ( - SELECT * - FROM tmp_Shop_Basket - WHERE - id_permutation = a_id_permutation_edit - ) THEN - UPDATE tmp_Shop_Basket - SET quantity = CASE WHEN a_sum_not_edit = TRUE THEN COALESCE(quantity, 0) + a_quantity_permutation_edit ELSE a_quantity_permutation_edit END, - active = CASE WHEN CASE WHEN a_sum_not_edit = TRUE THEN COALESCE(quantity, 0) + a_quantity_permutation_edit ELSE a_quantity_permutation_edit END = FALSE THEN FALSE ELSE TRUE END - WHERE id_permutation = a_id_permutation_edit - ; - - IF EXISTS ( - SELECT * - FROM tmp_Shop_Basket t_B - WHERE t_B.quantity < 0 - ) THEN - INSERT INTO tmp_Msg_Error ( - id_type, - guid, - msg - ) - VALUES ( - (SELECT id_type FROM Shop_Msg_Error_Type WHERE code = 'BAD_DATA' LIMIT 1), - v_guid, - 'Invalid basket quantity.' - ) - ; - END IF; - - IF v_has_filter_user AND NOT EXISTS (SELECT msg FROM tmp_Msg_Error WHERE guid = v_guid LIMIT 1) THEN - SET v_change_set_used = TRUE; - - UPDATE Shop_User_Basket UB - INNER JOIN tmp_Shop_Basket t_UB - ON UB.id_permutation = a_id_permutation_edit - SET UB.quantity = t_UB.quantity, - UB.active = t_UB.active, - UB.id_change_set_user = v_id_change_set - WHERE UB.id_permutation = a_id_permutation_edit - AND id_user = a_id_user - ; - END IF; - ELSE - IF a_quantity_permutation_edit < 0 THEN - INSERT INTO tmp_Msg_Error ( - id_type, - guid, - msg - ) - VALUES ( - (SELECT id_type FROM Shop_Msg_Error_Type WHERE code = 'BAD_DATA' LIMIT 1), - v_guid, - 'Invalid basket quantity.' - ) - ; - ELSE - INSERT INTO tmp_Shop_Basket ( - id_category, - id_product, - id_permutation, - id_region_purchase, - id_currency, - quantity, - active - ) - SELECT - P.id_category, - P.id_product, - PP.id_permutation, - a_id_region_purchase, - a_id_currency, - a_quantity_permutation_edit, - CASE WHEN a_quantity_permutation_edit > 0 THEN TRUE ELSE FALSE END - FROM Shop_Product_Permutation PP - INNER JOIN Shop_Product P - ON PP.id_product = P.id_product - WHERE id_permutation = a_id_permutation_edit - ; - IF v_has_filter_user THEN - IF EXISTS ( - SELECT * - FROM Shop_User_Basket UB - WHERE - UB.id_permutation = a_id_permutation_edit - ) THEN - SET v_change_set_used = TRUE; - - UPDATE Shop_User_Basket - INNER JOIN tmp_Shop_Basket t_UB ON UB.id_permutation = t_UB.id_permutation - SET UB.quantity = t_UB.quantity, - UB.active = t_UB.active, - UB.id_change_set_user = v_id_change_set - WHERE UB.id_permutation = a_id_permutation_edit - AND id_user = a_id_user - ; - ELSE - INSERT INTO Shop_User_Basket ( - id_user, - id_product, - id_permutation, - id_region_purchase, - id_currency, - quantity, - active - ) - SELECT a_id_user, - t_UB.id_product, - t_UB.id_permutation, - t_UB.id_region_purchase, - t_UB.id_currency, - t_UB.quantity, - t_UB.active - FROM tmp_Shop_Basket t_UB - WHERE id_permutation = a_id_permutation_edit - ; - END IF; - END IF; - END IF; - END IF; - END IF; - - - -- Checks - /* - SELECT * FROM tmp_Shop_Basket; - SELECT - STRING_AGG(t_UB.id_product, ',') AS basket_product_ids - FROM tmp_Shop_Basket t_UB - -- WHERE ISNULL(t_UB.id_permutation) - ; - SELECT - STRING_AGG(t_UB.id_permutation, ',') AS basket_permutation_ids - FROM tmp_Shop_Basket t_UB - WHERE NOT ISNULL(t_UB.id_permutation) - ; - */ - -- Returns - CALL p_shop_get_many_product ( - a_id_user, -- a_id_user - 1, -- a_get_all_categories - '', -- a_ids_category - 0, -- a_get_inactive_categories - 0, -- a_get_all_products - ( - SELECT - STRING_AGG(t_B.id_product, ',') - FROM tmp_Shop_Basket t_B - WHERE active = TRUE - ), -- a_ids_product - 0, -- a_get_inactive_products - 0, -- a_get_first_product_only - 0, -- a_get_all_product_permutations - ( - SELECT - STRING_AGG(t_B.id_permutation, ',') - FROM tmp_Shop_Basket t_B - WHERE NOT ISNULL(t_B.id_permutation) - AND active = TRUE - ), -- a_ids_permutation - 0, -- a_get_inactive_permutations - 0, -- a_get_all_images - '', -- a_ids_image - 0, -- a_get_inactive_images - 1, -- a_get_first_image_only - 0, -- a_get_all_delivery_region - a_id_region_purchase, -- a_ids_delivery_region - 0, -- a_get_inactive_delivery_region - 0, -- a_get_all_currency - a_id_currency, -- a_ids_currency - 0, -- a_get_inactive_currency - 1, -- a_get_all_discount - '', -- a_ids_discount - 0 -- a_get_inactive_discount - ); - - -- Basket - SELECT t_UB.id_category, - t_UB.id_product, - t_UB.id_permutation, - P.name, - PCL.price_local_VAT_incl, - PCL.price_local_VAT_excl, - PCL.id_currency, - t_UB.quantity - FROM tmp_Shop_Basket t_UB - INNER JOIN Shop_Product_Permutation PP - ON t_UB.id_permutation = PP.id_permutation - INNER JOIN Shop_Product P - ON PP.id_product = P.id_product - INNER JOIN Shop_Product_Category C - ON P.id_category = C.id_category - INNER JOIN Shop_Product_Currency_Link PCL - ON PP.id_permutation = PCL.id_permutation - AND PCL.id_region_purchase = a_id_region_purchase - AND PCL.id_currency = a_id_currency - WHERE t_UB.active = TRUE - ORDER BY C.display_order, P.display_order - ; - - -- Errors - /* Completed by product get many */ - SELECT - t_ME.display_order, - t_ME.guid, - t_ME.id_type, - t_ME.msg, - MET.code, - MET.name, - MET.description - FROM tmp_Msg_Error t_ME - INNER JOIN Shop_Msg_Error_Type MET - ON t_ME.id_type = MET.id_type - WHERE GUID = v_guid - ; - - /* - -- Return arguments for test - SELECT - a_ids_category, - a_get_inactive_categories, - a_ids_product, - a_get_inactive_products, - a_get_first_product_only, - a_get_all_products, - a_ids_image, - a_get_inactive_images, - a_get_first_image_only, - a_get_all_images - ; - */ - - -- Clean up - IF NOT v_change_set_used THEN - DELETE FROM Shop_User_Change_Set - WHERE id_change_set = v_id_change_set - ; - END IF; - - -- DROP TABLE IF EXISTS tmp_Msg_Error; - DELETE FROM tmp_Msg_Error WHERE guid = v_guid; - IF NOT EXISTS (SELECT * FROM tmp_Msg_Error) THEN - DROP TABLE tmp_Msg_Error; - END IF; - DROP TABLE IF EXISTS tmp_Shop_Basket; - DROP TEMPORARY TABLE IF EXISTS tmp_Shop_Quantity; - DROP TABLE IF EXISTS tmp_Shop_Product; - DROP TABLE IF EXISTS tmp_Shop_User; -END; -$$ LANGUAGE plpgsql; - -*/ - - -/* - -CALL p_shop_edit_user_basket ( - '', -- a_id_user - '', -- a_ids_permutation_basket - '', -- a_quantities_permutation_basket - 2, -- a_id_permutation_edit - 1, -- a_quantity_permutation_edit - 1, -- a_sum_not_edit - 2, -- a_id_currency_edit - 1 -- a_id_region_purchase -); - -CALL p_shop_edit_user_basket ( - '', -- a_id_user - '1', -- a_ids_permutation_basket - '9', -- a_quantities_permutation_basket - 1, -- a_id_permutation_edit - 69, -- a_quantity_permutation_edit - 1, -- a_sum_not_edit - 1, -- a_id_currency_edit - 1 -- a_id_region_purchase -); -CALL p_shop_edit_user_basket ( - 'auth0|6582b95c895d09a70ba10feF', -- a_id_user - '2', -- a_ids_permutation_basket - '7', -- a_quantities_permutation_basket - 2, -- a_id_permutation_edit - NULL, -- a_quantity_permutation_edit - 1, -- a_sum_not_edit - 1, -- a_id_currency_edit - 1 -- a_id_region_purchase -); - - - {'a_id_user': 'auth0|6582b95c895d09a70ba10fef', - 'a_ids_permutation_basket': '1', - '7', -- a_quantities_permutation_basket - 'a_id_permutation_edit': 1, - 'a_quantity_permutation_edit': 1, - 'a_sum_not_edit': 1} - - select * from shop_user_basket; - insert into shop_user_change_set (comment) - values( 'deactivate duplicates'); - update SHOP_USER_BASKET - set active = FALSE, - id_change_set_user = (select id_change_set from shop_user_change_set order by id_change_set desc limit 1) - where id_user = 'auth0|6582b95c895d09a70ba10fef' - and id_product = 1 - ; - select * from shop_user_basket; -*/ diff --git a/static/PostgreSQL/700_p_shop_get_many_product.sql b/static/PostgreSQL/700_p_shop_get_many_product.sql deleted file mode 100644 index 0e879542..00000000 --- a/static/PostgreSQL/700_p_shop_get_many_product.sql +++ /dev/null @@ -1,1231 +0,0 @@ - - -CREATE OR REPLACE FUNCTION p_shop_get_many_product ( - IN a_id_user INTEGER, - IN a_get_all_category BOOLEAN, - IN a_get_inactive_category BOOLEAN, - IN a_get_first_category_only BOOLEAN, - IN a_ids_category INTEGER[], - IN a_get_all_product BOOLEAN, - IN a_get_inactive_product BOOLEAN, - IN a_get_first_product_only BOOLEAN, - IN a_ids_product INTEGER[], - IN a_get_all_product_permutation BOOLEAN, - IN a_get_inactive_permutation BOOLEAN, - IN a_get_first_permutation_only BOOLEAN, - IN a_ids_permutation INTEGER[], - IN a_get_all_image BOOLEAN, - IN a_get_inactive_image BOOLEAN, - IN a_get_first_image_only BOOLEAN, - IN a_ids_image INTEGER[], - IN a_get_all_delivery_region BOOLEAN, - IN a_get_inactive_delivery_region BOOLEAN, - IN a_ids_delivery_region INTEGER[], - IN a_get_all_currency BOOLEAN, - IN a_get_inactive_currency BOOLEAN, - IN a_ids_currency INTEGER[], - IN a_get_all_discount BOOLEAN, - IN a_get_inactive_discount BOOLEAN, - IN a_ids_discount INTEGER[] -) -RETURNS SETOF REFCURSOR -- categories, SETOF products, SETOF variations, SETOF prices, SETOF images, SETOF delivery_options, SETOF discounts -AS $$ -DECLARE - v_id_user INTEGER; - v_get_all_category BOOLEAN; - v_get_inactive_category BOOLEAN; - v_get_first_category_only BOOLEAN; - v_ids_category INTEGER[]; - v_get_all_product BOOLEAN; - v_get_inactive_product BOOLEAN; - v_get_first_product_only BOOLEAN; - v_ids_product INTEGER[]; - v_get_all_product_permutation BOOLEAN; - v_get_inactive_permutation BOOLEAN; - v_get_first_permutation_only BOOLEAN; - v_ids_permutation INTEGER[]; - v_get_all_image BOOLEAN; - v_get_inactive_image BOOLEAN; - v_get_first_image_only BOOLEAN; - v_ids_image INTEGER[]; - v_get_all_delivery_region BOOLEAN; - v_get_inactive_delivery_region BOOLEAN; - v_ids_delivery_region INTEGER[]; - v_get_all_currency BOOLEAN; - v_get_inactive_currency BOOLEAN; - v_ids_currency INTEGER[]; - v_get_all_discount BOOLEAN; - v_get_inactive_discount BOOLEAN; - v_ids_discount INTEGER[]; - - v_has_filter_category BOOLEAN; - v_has_filter_product BOOLEAN; - v_has_filter_permutation BOOLEAN; - v_has_filter_image BOOLEAN; - v_has_filter_delivery_region BOOLEAN; - v_has_filter_currency BOOLEAN; - v_has_filter_discount BOOLEAN; - v_guid UUID; - -- v_id_user VARCHAR(100); - v_ids_permutation_unavailable VARCHAR(4000); - v_id_permission_product INTEGER; - v_ids_product_permission VARCHAR(4000); - -- v_ids_permutation_permission VARCHAR(4000); - v_id_access_level_view INTEGER; - -- v_now TIMESTAMP; - v_id_minimum INTEGER; - - result_categories REFCURSOR; - result_products REFCURSOR; - result_variations REFCURSOR; - result_prices REFCURSOR; - result_images REFCURSOR; - result_delivery_options REFCURSOR; - result_discounts REFCURSOR; - /* - -- result_errors REFCURSOR; - */ -BEGIN - v_id_user := a_id_user; - v_get_all_category := COALESCE(a_get_all_category, FALSE); - v_get_inactive_category := COALESCE(a_get_inactive_category, FALSE); - v_get_first_category_only := COALESCE(a_get_first_category_only, TRUE); - v_ids_category := COALESCE(a_ids_category, ARRAY[]::INTEGER[]); - v_get_all_product := COALESCE(a_get_all_product, FALSE); - v_get_inactive_product := COALESCE(a_get_inactive_product, FALSE); - v_get_first_product_only := COALESCE(a_get_first_product_only, TRUE); - v_ids_product := COALESCE(a_ids_product, ARRAY[]::INTEGER[]); - v_get_all_product_permutation := COALESCE(a_get_all_product_permutation, FALSE); - v_get_inactive_permutation := COALESCE(a_get_inactive_permutation, FALSE); - v_get_first_permutation_only := COALESCE(a_get_first_permutation_only, TRUE); - v_ids_permutation := COALESCE(a_ids_permutation, ARRAY[]::INTEGER[]); - v_get_all_image := COALESCE(a_get_all_image, TRUE); - v_get_inactive_image := COALESCE(a_get_inactive_image, FALSE); - v_get_first_image_only := COALESCE(a_get_first_image_only, FALSE); - v_ids_image := COALESCE(a_ids_image, ARRAY[]::INTEGER[]); - v_get_all_delivery_region := COALESCE(a_get_all_delivery_region, TRUE); - v_get_inactive_delivery_region := COALESCE(a_get_inactive_delivery_region, FALSE); - v_ids_delivery_region := COALESCE(a_ids_delivery_region, ARRAY[]::INTEGER[]); - v_get_all_currency := COALESCE(a_get_all_currency, TRUE); - v_get_inactive_currency := COALESCE(a_get_inactive_currency, FALSE); - v_ids_currency := COALESCE(a_ids_currency, ARRAY[]::INTEGER[]); - v_get_all_discount := COALESCE(a_get_all_discount, TRUE); - v_get_inactive_discount := COALESCE(a_get_inactive_discount, FALSE); - v_ids_discount := COALESCE(a_ids_discount, ARRAY[]::INTEGER[]); - /* - ROLLBACK; - */ - v_guid := gen_random_uuid(); - v_id_access_level_view := (SELECT id_access_level FROM Shop_Access_Level WHERE code = 'VIEW'); - - v_has_filter_category = (CARDINALITY(v_ids_category) > 0); - v_has_filter_product = (CARDINALITY(v_ids_product) > 0); - v_has_filter_permutation = (CARDINALITY(v_ids_permutation) > 0); - v_has_filter_image = (CARDINALITY(v_ids_image) > 0); - v_has_filter_delivery_region = (CARDINALITY(v_ids_delivery_region) > 0); - v_has_filter_currency = (CARDINALITY(v_ids_currency) > 0); - v_has_filter_discount = (CARDINALITY(v_ids_discount) > 0); - - /* - SELECT v_id_user, v_get_all_category, v_ids_category, v_get_inactive_category, v_get_all_product, - v_ids_product, v_get_inactive_product, v_get_first_product_only, v_get_all_product_permutation, v_ids_permutation, - v_get_inactive_permutation, v_get_all_image, v_ids_image, v_get_inactive_image, v_get_first_image_only, - v_get_all_delivery_region, v_ids_delivery_region, v_get_inactive_delivery_region, v_get_all_currency, v_ids_currency, - v_get_inactive_currency, v_get_all_discount, v_ids_discount, v_get_inactive_discount - ; - */ - - -- Temporary tables - /* - DROP TEMPORARY TABLE IF EXISTS tmp_Discount; - DROP TEMPORARY TABLE IF EXISTS tmp_Currency; - DROP TEMPORARY TABLE IF EXISTS tmp_Delivery_Region; - DROP TEMPORARY TABLE IF EXISTS tmp_Shop_Image; - DROP TEMPORARY TABLE IF EXISTS tmp_Shop_Variation; - DROP TEMPORARY TABLE IF EXISTS tmp_Shop_Product; - DROP TEMPORARY TABLE IF EXISTS tmp_Shop_Product_Category; - */ - DROP TABLE IF EXISTS tmp_Discount; - DROP TABLE IF EXISTS tmp_Currency; - DROP TABLE IF EXISTS tmp_Delivery_Region; - DROP TABLE IF EXISTS tmp_Shop_Image; - DROP TABLE IF EXISTS tmp_Shop_Variation; - DROP TABLE IF EXISTS tmp_Shop_Product; - DROP TABLE IF EXISTS tmp_Shop_Product_Category; - - CREATE TEMPORARY TABLE tmp_Shop_Product_Category ( - id_category INTEGER NOT NULL, - /* - CONSTRAINT FK_tmp_Shop_Product_Category_id_category - FOREIGN KEY (id_category) - REFERENCES Shop_Product_Category(id_category), - */ - active BOOLEAN NOT NULL, - display_order INTEGER NOT NULL, - can_view BOOLEAN, - can_edit BOOLEAN, - can_admin BIT - ); - - CREATE TEMPORARY TABLE tmp_Shop_Product ( - id_category INTEGER NOT NULL, - /* - CONSTRAINT FK_tmp_Shop_Product_id_category - FOREIGN KEY (id_category) - REFERENCES Shop_Product_Category(id_category), - */ - id_product INTEGER NOT NULL, - /* - CONSTRAINT FK_tmp_Shop_Product_id_product - FOREIGN KEY (id_product) - REFERENCES Shop_Product(id_product), - */ - -- product_has_variations BOOLEAN NOT NULL, - id_permutation INTEGER NULL, - /* - CONSTRAINT FK_tmp_Shop_Product_id_permutation - FOREIGN KEY (id_permutation) - REFERENCES Shop_Product_Permutation(id_permutation), - */ - active_category BOOLEAN NOT NULL, - active_product BOOLEAN NOT NULL, - active_permutation BOOLEAN NULL, - display_order_category INTEGER NOT NULL, - display_order_product INTEGER NOT NULL, - display_order_permutation INTEGER NULL, - -- rank_permutation INTEGER NOT NULL, -- _in_category - rank_category INTEGER NOT NULL, - rank_product INTEGER NOT NULL, - rank_permutation INTEGER NOT NULL, - name VARCHAR(255) NOT NULL, - description VARCHAR(4000) NOT NULL, - /* - price_GBP_full REAL NOT NULL, - price_GBP_min REAL NOT NULL, - */ - latency_manufacture INTEGER NOT NULL, - quantity_min REAL NOT NULL, - quantity_max REAL NOT NULL, - quantity_step REAL NOT NULL, - quantity_stock REAL NOT NULL, - is_subscription BOOLEAN NOT NULL, - id_unit_measurement_interval_recurrence INTEGER, - /* - CONSTRAINT FK_tmp_Shop_Product_id_unit_measurement_interval_recurrence - FOREIGN KEY (id_unit_measurement_interval_recurrence) - REFERENCES Shop_Interval_Recurrence(id_interval), - */ - count_interval_recurrence INTEGER, - id_stripe_product VARCHAR(100), - product_has_variations BOOLEAN NOT NULL, - can_view BOOLEAN, - can_edit BOOLEAN, - can_admin BOOLEAN - ); - - /* - CREATE TEMPORARY TABLE tmp_Shop_Variation ( - id_variation INTEGER NOT NULL, - id_product INTEGER NOT NULL, - display_order INTEGER NOT NULL - ); - */ - - CREATE TEMPORARY TABLE tmp_Shop_Image ( - id_image INTEGER NOT NULL, - /* - CONSTRAINT FK_tmp_Shop_Image_id_image - FOREIGN KEY (id_image) - REFERENCES Shop_Image(id_image), - */ - id_product INTEGER NOT NULL, - /* - CONSTRAINT FK_tmp_Shop_Image_id_product - FOREIGN KEY (id_product) - REFERENCES Shop_Product(id_product), - */ - id_permutation INTEGER NULL, - /* - CONSTRAINT FK_tmp_Shop_Image_id_permutation - FOREIGN KEY (id_permutation) - REFERENCES Shop_Product_Permutation(id_permutation), - */ - active BOOLEAN NOT NULL, - display_order INTEGER NOT NULL, - rank_in_product_permutation INTEGER NOT NULL - ); - - CREATE TEMPORARY TABLE tmp_Delivery_Region ( - id_region INTEGER NOT NULL, - /* - CONSTRAINT FK_tmp_Delivery_Region_id_region - FOREIGN KEY (id_region) - REFERENCES Shop_Region(id_region), - */ - active BOOLEAN NOT NULL, - display_order INTEGER NOT NULL, - requires_delivery_option BOOLEAN NOT NULL DEFAULT FALSE - ); - - CREATE TEMPORARY TABLE tmp_Currency ( - id_currency INTEGER NOT NULL, - /* - CONSTRAINT FK_tmp_Shop_Currency_id_currency - FOREIGN KEY (id_currency) - REFERENCES Shop_Currency(id_currency), - */ - active BOOLEAN NOT NULL, - display_order INTEGER NOT NULL - ); - - CREATE TEMPORARY TABLE tmp_Discount ( - id_discount INTEGER NOT NULL, - /* - CONSTRAINT FK_tmp_Discount_id_discount - FOREIGN KEY (id_discount) - REFERENCES Shop_Discount(id_discount), - */ - active BOOLEAN NOT NULL, - display_order INTEGER NOT NULL - ); - - /* - CREATE TEMPORARY TABLE IF NOT EXISTS tmp_Msg_Error ( - display_order INTEGER NOT NULL PRIMARY KEY GENERATED ALWAYS AS IDENTITY, - guid UUID NOT NULL, - id_type INTEGER 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 - ); - */ - - - INSERT INTO tmp_Shop_Product ( - id_category, - id_product, - id_permutation, - active_category, - active_product, - active_permutation, - display_order_category, - display_order_product, - display_order_permutation, - -- rank_permutation, - rank_category, - rank_product, - rank_permutation, - name, - description, - /* - price_GBP_VAT_incl, - price_GBP_VAT_excl, - price_GBP_min, - */ - latency_manufacture, - quantity_min, - quantity_max, - quantity_step, - quantity_stock, - is_subscription, - id_unit_measurement_interval_recurrence, - count_interval_recurrence, - id_stripe_product, - product_has_variations - ) - SELECT - P.id_category, - P.id_product, - -- P.has_variations AS product_has_variations, - PP.id_permutation, - C.active AS active_category, - P.active AS active_product, - PP.active AS active_permutation, - C.display_order AS display_order_category, - P.display_order AS display_order_product, - PP.display_order AS display_order_permutation, - -- RANK() OVER (ORDER BY C.display_order, P.display_order, PP.display_order) AS rank_permutation, -- PARTITION BY P.id_category -- _in_category - RANK() OVER (ORDER BY C.display_order) AS rank_category, - RANK() OVER (PARTITION BY P.id_category ORDER BY P.display_order) AS rank_product, - RANK() OVER (PARTITION BY P.id_category, P.id_product ORDER BY PP.display_order) AS rank_permutation, - P.name, - PP.description, - /* - PP.price_GBP_VAT_incl, - PP.price_GBP_VAT_excl, - PP.price_GBP_min, - */ - PP.latency_manufacture, - PP.quantity_min, - PP.quantity_max, - PP.quantity_step, - PP.quantity_stock, - PP.is_subscription, - PP.id_unit_measurement_interval_recurrence, - PP.count_interval_recurrence, - PP.id_stripe_product, - P.has_variations - FROM Shop_Product P - INNER JOIN Shop_Product_Permutation PP - ON P.id_product = PP.id_product - INNER JOIN Shop_Product_Category C - ON P.id_category = C.id_category - WHERE - -- permutations - ( - ( - v_get_all_product_permutation - OR ( - v_has_filter_permutation - -- AND FIND_IN_SET(PP.id_permutation, v_ids_permutation) > 0 - AND PP.id_permutation = ANY(v_ids_permutation) - ) - ) - AND (v_get_inactive_permutation OR PP.active) - ) - -- categories - AND ( - ( - v_get_all_category - OR ( - v_has_filter_category - -- AND FIND_IN_SET(P.id_category, v_ids_category) > 0 - AND C.id_category = ANY(v_ids_category) - ) - ) - AND (v_get_inactive_category OR C.active) - ) - -- products - AND ( - ( - v_get_all_product - OR ( - v_has_filter_product - -- AND FIND_IN_SET(P.id_product, v_ids_product) > 0 - AND P.id_product = ANY(v_ids_product) - ) - ) - AND (v_get_inactive_product OR P.active) - ) - ; - - -- select * from tmp_Shop_Product; - - IF v_get_first_category_only THEN - DELETE FROM tmp_Shop_Product t_P - WHERE t_P.rank_category > 1 - ; - END IF; - - IF v_get_first_product_only THEN - DELETE FROM tmp_Shop_Product t_P - WHERE t_P.rank_product > 1 - ; - END IF; - - IF v_get_first_permutation_only THEN - DELETE FROM tmp_Shop_Product t_P - WHERE t_P.rank_permutation > 1 - ; - END IF; - - - INSERT INTO tmp_Shop_Product_Category ( - id_category, - active, - display_order - ) - SELECT DISTINCT C.id_category, - C.active, - C.display_order - FROM tmp_Shop_Product t_P - INNER JOIN Shop_Product_Category C - ON t_P.id_category = C.id_category - ORDER BY C.display_order - ; - - /* - INSERT INTO tmp_Shop_Variation ( - id_variation, id_product -- , display_order - ) - SELECT P.id_variation, P.id_product -- , P.display_order - FROM Shop_Variation V - INNER JOIN tmp_Shop_Product t_P - ON V.id_product = t_P.id_product - WHERE V.active; - */ - - -- Product Images - INSERT INTO tmp_Shop_Image ( - id_product, - id_permutation, - id_image, - active, - display_order, - rank_in_product_permutation - ) - SELECT id_product, - id_permutation, - id_image, - active, - ROW_NUMBER() OVER (ORDER BY display_order_product_temp, display_order_image), - RANK() OVER (PARTITION BY id_product, id_permutation ORDER BY display_order_product_temp, display_order_image) - FROM ( - SELECT t_P.id_product, - I.id_permutation, - I.id_image, - I.active, - I.display_order AS display_order_image, - t_P.rank_permutation AS display_order_product_temp - FROM Shop_Image I - INNER JOIN tmp_Shop_Product t_P - ON I.id_product = t_P.id_product - AND NOT t_P.product_has_variations - UNION - SELECT t_P.id_product, - I.id_permutation, - I.id_image, - I.active, - I.display_order AS display_order_image, - t_P.rank_permutation AS display_order_product_temp - FROM Shop_Image I - INNER JOIN tmp_Shop_Product t_P - ON I.id_permutation = t_P.id_permutation - AND t_P.product_has_variations - ) IPP - WHERE - ( - v_get_all_image - OR v_get_first_image_only - -- OR FIND_IN_SET(id_image, v_ids_image) > 0 - OR IPP.id_image = ANY(v_ids_image) - ) - AND (v_get_inactive_image OR IPP.active) - ; - - IF v_get_first_image_only THEN - DELETE FROM tmp_Shop_Image - WHERE rank_in_product_permutation > 1 - ; - END IF; - - /* - IF v_has_filter_image THEN - DELETE FROM tmp_Shop_Product - WHERE id_product NOT IN (SELECT DISTINCT id_product FROM tmp_Shop_Image); - DELETE FROM tmp_Shop_Product_Category - WHERE id_category NOT IN (SELECT DISTINCT id_category FROM tmp_Shop_Product); - END IF; - */ - - -- Delivery Regions - INSERT INTO tmp_Delivery_Region ( - id_region, - active, - display_order, - requires_delivery_option - ) - WITH RECURSIVE Recursive_CTE_Delivery_Region AS ( - SELECT - CAST(NULL AS INTEGER) AS id_region_parent, - DR.id_region AS id_region_child, - -- CASE WHEN FIND_IN_SET(DR.id_region, v_ids_delivery_region) > 0 THEN TRUE ELSE FALSE END AS requires_delivery_option - (DR.id_region = ANY(v_ids_delivery_region)) AS requires_delivery_option - FROM Shop_Product_Currency_Region_Link PCRL - INNER JOIN Shop_Currency C ON PCRL.id_currency = C.id_currency - INNER JOIN tmp_Shop_Product t_P - ON PCRL.id_product = t_P.id_product - AND PCRL.id_permutation = t_P.id_permutation - INNER JOIN Shop_Region DR ON PCRL.id_region_purchase = DR.id_region - WHERE - ( - v_get_all_delivery_region - -- OR FIND_IN_SET(DR.id_region, v_ids_delivery_region) > 0 - OR DR.id_region = ANY(v_ids_delivery_region) - ) - AND ( - v_get_inactive_delivery_region - OR DR.active = TRUE - ) - UNION - SELECT - DRB.id_region_parent, - DRB.id_region_child, - FALSE AS requires_delivery_option - FROM Shop_Region_Branch DRB - INNER JOIN Recursive_CTE_Delivery_Region r_DR - ON DRB.id_region_parent = r_DR.id_region_child - WHERE ( - v_get_inactive_delivery_region - OR DRB.active = TRUE - ) - ) - SELECT - DR.id_region, - DR.active, - DR.display_order, - requires_delivery_option - FROM Shop_Region DR - INNER JOIN Recursive_CTE_Delivery_Region r_DR - ON DR.id_region = r_DR.id_region_parent - OR DR.id_region = r_DR.id_region_child - ; - /* - select * from tmp_delivery_region; - SELECT * - FROM tmp_Shop_Product t_P - WHERE - /*( - v_get_all_category - OR v_get_all_product - OR v_get_all_product_permutation - ) */ - FIND_IN_SET(t_P.id_category, v_ids_category) > 0 - OR FIND_IN_SET(t_P.id_product, v_ids_product) > 0 - OR FIND_IN_SET(t_P.id_permutation, v_ids_permutation) > 0 - ; - */ - - IF v_has_filter_delivery_region THEN - v_ids_permutation_unavailable = ( - SELECT STRING_AGG(t_P.id_permutation, ', ') - FROM ( - SELECT * - FROM tmp_Shop_Product t_P - WHERE - /*( - v_get_all_category - OR v_get_all_produc - OR v_get_all_product_permutation - ) - FIND_IN_SET(t_P.id_category, v_ids_category) > 0 - OR FIND_IN_SET(t_P.id_product, v_ids_product) > 0 - OR FIND_IN_SET(t_P.id_permutation, v_ids_permutation) > 0 - */ - t_P.id_category = ANY(v_ids_category) - OR t_P.id_product = ANY(v_ids_product) - OR t_P.id_permutation = ANY(v_ids_permutation) - ) t_P - LEFT JOIN ( - SELECT * - FROM Shop_Product_Currency_Region_Link PCRL - WHERE - v_get_all_delivery_region - -- OR FIND_IN_SET(PCRL.id_region_purchase, v_ids_delivery_region) > 0 - OR PCRL.id_region_purchase = ANY(v_ids_delivery_region) - ) PCRL - ON t_P.id_product = PCRL.id_product - AND t_P.id_permutation = PCRL.id_permutation - LEFT JOIN tmp_Delivery_Region t_DR - ON PCRL.id_region_purchase = t_DR.id_region - AND t_DR.requires_delivery_option - WHERE - ISNULL(t_DR.id_region) - ); - IF NOT ISNULL(v_ids_permutation_unavailable) THEN - /* - INSERT INTO tmp_Msg_Error ( - guid, - id_type, - code, - msg - ) - VALUES ( - v_guid, - (SELECT id_type FROM Shop_Msg_Error_Type WHERE code = 'PRODUCT_AVAILABILITY' LIMIT 1), - 'PRODUCT_AVAILABILITY', - 'Error: The following permutation IDs are not available in this region: ' || COALESCE(v_ids_permutation_unavailable, 'NULL') - ); - */ - RAISE EXCEPTION 'The following permutation IDs are not available in this region: %', COALESCE(v_ids_permutation_unavailable, 'NULL') - USING ERRCODE = '22000'; - END IF; - /* - DELETE FROM tmp_Shop_Product t_P - WHERE t_P.id_permutation NOT IN ( - SELECT - id_permutation - FROM Shop_Product_Currency_Region_Link PCL - INNER JOIN tmp_Delivery_Region t_DR - ON PCRL.id_region_purchase = t_DR.id_region - ); - */ - END IF; - - -- select * from tmp_Shop_Product; - - -- Currencies - INSERT INTO tmp_Currency ( - id_currency, - active, - display_order - ) - SELECT - C.id_currency, - C.active, - C.display_order - FROM Shop_Product_Currency_Region_Link PCRL - INNER JOIN Shop_Currency C ON PCRL.id_currency = C.id_currency - INNER JOIN tmp_Shop_Product t_P - ON PCRL.id_product = t_P.id_product - AND PCRL.id_permutation = t_P.id_permutation - INNER JOIN tmp_Delivery_Region t_DR ON PCRL.id_region_purchase = t_DR.id_region - WHERE - ( - v_get_all_currency - -- R FIND_IN_SET(C.id_currency, v_ids_currency) > 0 - OR C.id_currency = ANY(v_ids_currency) - ) - AND ( - v_get_inactive_currency - OR ( - C.active - AND PCRL.active - ) - ) - ; - - -- select * from tmp_Currency; - - IF v_has_filter_currency THEN - v_ids_permutation_unavailable = ( - SELECT STRING_AGG(t_P.id_permutation, ', ') - FROM ( - SELECT * - FROM tmp_Shop_Product t_P - WHERE - /*( - v_get_all_category - OR v_get_all_product - OR v_get_all_product_permutation - ) - FIND_IN_SET(t_P.id_category, v_ids_category) > 0 - OR FIND_IN_SET(t_P.id_product, v_ids_product) > 0 - OR FIND_IN_SET(t_P.id_permutation, v_ids_permutation) > 0 - */ - t_P.id_category = ANY(v_ids_category) - OR t_P.id_product = ANY(v_ids_product) - OR t_P.id_permutation = ANY(v_ids_permutation) - ) t_P - INNER JOIN ( - SELECT * - FROM Shop_Product_Currency_Region_Link PCRL - WHERE - ( - v_get_all_currency - -- OR FIND_IN_SET(PCRL.id_currency, v_ids_currency) > 0 - OR PCRL.id_currency = ANY(v_ids_currency) - ) - ) PCRL - ON t_P.id_permutation = PCRL.id_permutation - LEFT JOIN tmp_Currency t_C - ON PCRL.id_currency = t_C.id_currency - WHERE ISNULL(t_C.id_currency) - ); - IF NOT ISNULL(v_ids_permutation_unavailable) THEN - /* - INSERT INTO tmp_Msg_Error ( - guid, - id_type, - code, - msg - ) - VALUES ( - v_guid, - (SELECT id_type FROM Shop_Msg_Error_Type WHERE code = 'PRODUCT_AVAILABILITY' LIMIT 1), - 'PRODUCT_AVAILABILITY', - 'Error: The following permutation IDs are not available in this currency: ' || COALESCE(v_ids_permutation_unavailable, 'NULL') - ); - */ - RAISE EXCEPTION 'The following permutation IDs are not available in this currency: %', COALESCE(v_ids_permutation_unavailable, 'NULL') - USING ERRCODE = '22000'; - END IF; - /* - DELETE FROM tmp_Shop_Product t_P - WHERE t_P.id_permutation NOT IN ( - SELECT - id_permutation - FROM Shop_Product_Currency_Region_Link PCL - INNER JOIN tmp_Currency t_C - ON PCRL.id_currency = t_C.id_currency - ); - */ - END IF; - - -- Discounts - INSERT INTO tmp_Discount ( - id_discount, - active, - display_order - ) - SELECT - D.id_discount, - D.active, - D.display_order - FROM Shop_Discount D - INNER JOIN tmp_Shop_Product t_P - ON D.id_product = t_P.id_product - AND D.id_permutation = t_P.id_permutation - WHERE - ( - v_get_all_discount - -- OR FIND_IN_SET(D.id_discount, v_ids_discount) > 0 - OR D.id_discount = ANY(v_ids_discount) - ) - AND ( - v_get_inactive_discount - OR D.active - ) - ; - -- select 'pre-permission results'; - -- select * from tmp_Shop_Product; - - -- Permissions - IF EXISTS (SELECT * FROM tmp_Shop_Product_Category LIMIT 1) THEN - -- v_id_user := (SELECT id_user FROM Shop_User WHERE name = CURRENT_USER); - v_id_permission_product := (SELECT id_permission FROM Shop_Permission WHERE code = 'STORE_PRODUCT' LIMIT 1); - v_ids_product_permission := (SELECT STRING_AGG(id_product, ',') FROM tmp_Shop_Product WHERE NOT ISNULL(id_product)); - -- v_ids_permutation_permission := (SELECT STRING_AGG(id_permutation, ',') FROM tmp_Shop_Product WHERE NOT ISNULL(id_permutation)); - - -- SELECT v_guid, v_id_user, false, v_id_permission_product, v_id_access_level_view, v_ids_product_permission; - -- select * from Shop_Calc_User_Temp; - - CALL p_shop_calc_user(v_guid, v_id_user, false, v_id_permission_product, v_id_access_level_view, v_ids_product_permission); - - -- select * from Shop_Calc_User_Temp; - - UPDATE tmp_Shop_Product t_P - SET t_P.can_view = UE_T.can_view, - t_P.can_edit = UE_T.can_edit, - t_P.can_admin = UE_T.can_admin - FROM tmp_Shop_Product t_P - INNER JOIN Shop_Calc_User_Temp UE_T - ON t_P.id_product = UE_T.id_product - AND UE_T.GUID = v_guid - ; - -- select * from Shop_Calc_User_Temp; - -- select * from tmp_Shop_Product; - - DELETE FROM tmp_Shop_Product t_P - WHERE - -- FIND_IN_SET(t_P.id_product, (SELECT STRING_AGG(UET.id_product, ',') FROM Shop_Calc_User_Temp UET)) = FALSE -- id_product NOT LIKE CONCAT('%', (SELECT STRING_AGG(id_product, '|') FROM Shop_Calc_User_Temp), '%'); - t_P.id_product NOT IN ( - SELECT id_product - FROM Shop_Calc_User_Temp UET - WHERE UET.GUID = v_guid - ) - OR ISNULL(t_P.can_view) - OR t_P.can_view = FALSE - ; - - -- CALL p_shop_clear_calc_user(v_guid); - -- DROP TABLE IF EXISTS Shop_Calc_User_Temp; - DELETE FROM Shop_Calc_User_Temp - WHERE GUID = v_guid - ; - END IF; - - - -- select * from tmp_Shop_Product; - - -- Returns - -- v_now := CURRENT_TIMESTAMP; - - -- Categories - OPEN result_categories FOR - -- RETURN QUERY - SELECT - DISTINCT t_C.id_category, - C.name, - C.description, - C.display_order - FROM tmp_Shop_Product_Category t_C - INNER JOIN Shop_Product_Category C - ON t_C.id_category = C.id_category - INNER JOIN tmp_Shop_Product t_P - ON t_C.id_category = t_P.id_category - ORDER BY C.display_order - ; - RETURN NEXT result_categories; - -- CLOSE result_categories; - - -- Products - OPEN result_products FOR - -- RETURN QUERY - SELECT - t_P.id_product, - t_P.id_permutation, - t_P.name, - t_P.description, - P.has_variations, - P.id_category, - PP.cost_local, - PP.id_currency_cost, - PP.profit_local_min, - t_P.latency_manufacture, - t_P.quantity_min, - t_P.quantity_max, - t_P.quantity_step, - t_P.quantity_stock, - t_P.id_stripe_product, - t_P.is_subscription, - RI.name AS name_interval_recurrence, - RI.name_plural AS name_plural_interval_recurrence, - t_P.count_interval_recurrence, - t_P.display_order_category, - t_P.display_order_product, - t_P.display_order_permutation, - COALESCE(t_P.can_view, FALSE), - COALESCE(t_P.can_edit, FALSE), - COALESCE(t_P.can_admin, FALSE) - FROM tmp_Shop_Product t_P - INNER JOIN Shop_Product P ON t_P.id_product = P.id_product - INNER JOIN Shop_Product_Permutation PP ON t_P.id_permutation = PP.id_permutation - LEFT JOIN Shop_Interval_Recurrence RI ON t_P.id_unit_measurement_interval_recurrence = RI.id_interval - ORDER BY t_P.rank_permutation - ; - RETURN NEXT result_products; - -- CLOSE result_products; - - -- Variations - OPEN result_variations FOR - -- RETURN QUERY - SELECT - V.id_variation, - t_P.id_product, - t_P.id_permutation, - t_P.id_category, - VT.code AS code_variation_type, - VT.name AS name_variation_type, - V.code AS code_variation, - V.name AS name_variation, - RANK() OVER (ORDER BY t_P.rank_permutation, PPVL.display_order) AS display_order - FROM Shop_Variation V - INNER JOIN Shop_Variation_Type VT - ON V.id_type = VT.id_type - INNER JOIN Shop_Product_Permutation_Variation_Link PPVL ON V.id_variation = PPVL.id_variation - INNER JOIN tmp_Shop_Product t_P ON PPVL.id_permutation = t_P.id_permutation - WHERE V.active - AND PPVL.active - ; - RETURN NEXT result_variations; - -- CLOSE result_variations; - - /* - -- Permutation variations output - SELECT t_P.id_permutation, - t_P.id_product, - t_P.id_category, - id_variation - FROM Shop_Product_Permutation_Variation_Link PPVL - INNER JOIN tmp_Shop_Product t_P - ON t_P.id_permutation = PPVL.id_permutation - ORDER BY t_P.display_order - ; - */ - -- select * from Shop_Product_Currency_Region_Link; - -- select * from shop_currency; - /* - select * from tmp_Currency; - select * from tmp_delivery_region; - select * from tmp_shop_product; - */ - - -- Product Price - OPEN result_prices FOR - -- RETURN QUERY - SELECT - PCRL.id_link AS id_price, - t_P.id_permutation, - t_P.id_product, - t_P.id_category, - t_C.id_currency, - C.code AS code_currency, - C.name AS name_currency, - C.symbol AS symbol_currency, - t_DR.id_region, - PCRL.price_local_VAT_incl, - PCRL.price_local_VAT_excl, - ROW_NUMBER() OVER(ORDER BY t_P.rank_permutation, C.display_order) AS display_order - FROM Shop_Product_Currency_Region_Link PCRL - INNER JOIN tmp_Shop_Product t_P - ON PCRL.id_product = t_P.id_product - AND PCRL.id_permutation = t_P.id_permutation - -- INNER JOIN Shop_Product P ON PCRL.id_product = P.id_product - INNER JOIN tmp_Currency t_C ON PCRL.id_currency = t_C.id_currency - INNER JOIN Shop_Currency C ON t_C.id_currency = C.id_currency - INNER JOIN tmp_Delivery_Region t_DR ON PCRL.id_region_purchase = t_DR.id_region - WHERE ( - v_get_inactive_product - AND v_get_inactive_permutation - AND v_get_inactive_currency - AND v_get_inactive_delivery_region - OR PCRL.active - ) - ORDER BY t_P.rank_permutation - ; - RETURN NEXT result_prices; - -- CLOSE result_prices; - - /* - -- Currency - SELECT - DISTINCT C.id_currency, - C.code, - C.name, - C.factor_from_GBP, - t_C.display_order - FROM Shop_Currency C - INNER JOIN tmp_Currency t_C ON C.id_currency = t_C.id_currency - GROUP BY C.id_currency, t_C.display_order - ORDER BY t_C.display_order - ; - */ - - -- Images - OPEN result_images FOR - -- RETURN QUERY - SELECT - t_I.id_image, - t_I.id_product, - t_I.id_permutation, - t_P.id_category, - I.url, - I.active, - I.display_order - FROM tmp_Shop_Image t_I - INNER JOIN Shop_Image I - ON t_I.id_image = I.id_image - INNER JOIN tmp_Shop_Product t_P - ON t_I.id_product = t_P.id_product - AND t_I.id_permutation = t_P.id_permutation - ORDER BY t_P.rank_permutation, I.display_order - ; - RETURN NEXT result_images; - -- CLOSE result_images; - - -- Delivery options - OPEN result_delivery_options FOR - -- RETURN QUERY - SELECT - _DO.id_option, - PDOL.id_product, - PDOL.id_permutation, - t_P.id_category, - _DO.code, - _DO.name, - _DO.latency_delivery_min, - _DO.latency_delivery_max, - _DO.quantity_min, - _DO.quantity_max, - STRING_AGG(DR.code, ',') AS codes_region, - STRING_AGG(DR.name, ',') AS names_region, - PDOL.price_local, - PDOL.display_order - FROM Shop_Delivery_Option _DO - INNER JOIN Shop_Product_Permutation_Delivery_Option_Link PDOL - ON _DO.id_option = PDOL.id_delivery_option - AND ( - v_get_inactive_delivery_region - OR PDOL.active - ) - INNER JOIN tmp_Shop_Product t_P - ON PDOL.id_product = t_P.id_product - AND PDOL.id_permutation = t_P.id_permutation - INNER JOIN tmp_Delivery_Region t_DR ON PDOL.id_region = t_DR.id_region - INNER JOIN Shop_Region DR ON t_DR.id_region = DR.id_region - WHERE ( - v_get_inactive_delivery_region - OR _DO.active - ) - GROUP BY t_P.id_category, t_P.id_product, PDOL.id_permutation, t_P.rank_permutation, DR.id_region, _DO.id_option, PDOL.id_link - ORDER BY t_P.rank_permutation, PDOL.display_order - ; - RETURN NEXT result_delivery_options; - -- CLOSE result_delivery_options; - - -- Discounts - OPEN result_discounts FOR - -- RETURN QUERY - SELECT - D.id_discount, - P.id_category, - D.id_product, - D.id_permutation, - DR.id_region, - C.id_currency, - D.code AS code_discount, - D.name AS name_discount, - D.multiplier, - D.subtractor, - D.apply_multiplier_first, - D.quantity_min, - D.quantity_max, - D.date_start, - D.date_end, - STRING_AGG(DR.code, ', ') OVER(PARTITION BY D.id_discount) AS codes_region, - STRING_AGG(DR.name, ', ') OVER(PARTITION BY D.id_discount) AS names_region, - STRING_AGG(C.code, ', ') OVER(PARTITION BY D.id_discount) AS codes_currency, - STRING_AGG(C.name, ', ') OVER(PARTITION BY D.id_discount) AS names_currency, - ROW_NUMBER() OVER(ORDER BY D.display_order) AS display_order - FROM tmp_Discount t_D - INNER JOIN Shop_Discount D ON t_D.id_discount = D.id_discount - INNER JOIN Shop_Product P ON D.id_product = P.id_product - INNER JOIN tmp_Shop_Product t_P - ON D.id_product = t_P.id_product - -- AND D.id_permutation = t_P.id_permutation - INNER JOIN Shop_Discount_Region_Currency_Link DRCL - ON D.id_discount = DRCL.id_discount - INNER JOIN tmp_Delivery_Region t_DR ON DRCL.id_region = t_DR.id_region - INNER JOIN Shop_Region DR ON t_DR.id_region = DR.id_region - INNER JOIN tmp_Currency t_C ON DRCL.id_currency = t_C.id_currency - INNER JOIN Shop_Currency C ON t_C.id_currency = C.id_currency - GROUP BY D.id_discount, DR.id_region, C.id_currency, P.id_category, P.id_product, D.id_permutation - ORDER BY D.display_order, DR.display_order, C.display_order - ; - RETURN NEXT result_discounts; - -- CLOSE result_discounts; - /* - -- Delivery Regions - SELECT - t_DR.id_region, - t_P.id_category, - t_P.id_product, - t_P.id_permutation, - DR.code, - DR.name - FROM tmp_Delivery_Region t_DR - INNER JOIN Shop_Delivery_Region DR ON t_DR.id_region = DR.id_region - INNER JOIN Shop_Product_Region_Currency_Link PDRL - ON DR.id_region = PDRL.id_region - AND ( - v_get_inactive_delivery_region - OR PDRL.active - ) - INNER JOIN tmp_Shop_Product t_P - ON PDRL.id_product = t_P.id_product - AND PDRL.id_permutation = t_P.id_permutation - INNER JOIN tmp_Currency t_C ON PDRL.id_currency = t_C.id_currency - ORDER BY t_DR.display_order - ; - */ - - -- Errors - /* - OPEN result_errors FOR - RETURN QUERY - SELECT - t_ME.display_order, - t_ME.guid, - t_ME.id_type, - t_ME.msg, - MET.code, - MET.name, - MET.description - FROM tmp_Msg_Error t_ME - INNER JOIN Shop_Msg_Error_Type MET - ON t_ME.id_type = MET.id_type - WHERE guid = v_guid - ; - RETURN NEXT result_errors; - */ - - /* - -- Return arguments for test - SELECT - v_ids_category, - v_get_inactive_category, - v_ids_product, - v_get_inactive_product, - v_get_first_product_only, - v_get_all_product, - v_ids_image, - v_get_inactive_image, - v_get_first_image_only, - v_get_all_image - ; - */ - - -- select 'other outputs'; - -- select * from tmp_Shop_Product; - - -- Clean up - /* - DROP TEMPORARY TABLE IF EXISTS tmp_Discount; - DROP TEMPORARY TABLE IF EXISTS tmp_Currency; - DROP TEMPORARY TABLE IF EXISTS tmp_Delivery_Region; - DROP TEMPORARY TABLE IF EXISTS tmp_Shop_Image; - DROP TEMPORARY TABLE IF EXISTS tmp_Shop_Variation; - DROP TEMPORARY TABLE IF EXISTS tmp_Shop_Product; - DROP TEMPORARY TABLE IF EXISTS tmp_Shop_Product_Category; - DROP TABLE IF EXISTS tmp_Discount; - DROP TABLE IF EXISTS tmp_Currency; - DROP TABLE IF EXISTS tmp_Delivery_Region; - DROP TABLE IF EXISTS tmp_Shop_Image; - DROP TABLE IF EXISTS tmp_Shop_Variation; - DROP TABLE IF EXISTS tmp_Shop_Product; - DROP TABLE IF EXISTS tmp_Shop_Product_Category; - */ -END; -$$ LANGUAGE plpgsql; - - -/* - -DROP FUNCTION IF EXISTS fetch_results; - -CREATE OR REPLACE FUNCTION fetch_results() -RETURNS VOID AS $$ -DECLARE - curs refcursor; - rec record; - curs1 refcursor; - rec1 record; - curs2 refcursor; - rec2 record; -BEGIN - FOR curs IN SELECT p_shop_get_many_product ( - 1, -- a_id_user - TRUE, -- a_get_all_category - FALSE, -- a_get_inactive_category - FALSE, -- a_get_first_category_only - ARRAY[]::INTEGER[], -- a_ids_category - TRUE, -- a_get_all_product - FALSE, -- a_get_inactive_product - FALSE, -- a_get_first_product_only - ARRAY[]::INTEGER[], -- a_ids_product - TRUE, -- a_get_all_product_permutation - FALSE, -- a_get_inactive_permutation - FALSE, -- a_get_first_permutation_only - ARRAY[1, 2, 3, 4, 5]::INTEGER[], -- a_ids_permutation - FALSE, -- a_get_all_image - FALSE, -- a_get_inactive_image - TRUE, -- a_get_first_image_only - ARRAY[]::INTEGER[], -- a_ids_image - FALSE, -- a_get_all_delivery_region - FALSE, -- a_get_inactive_delivery_region - ARRAY[]::INTEGER[], -- a_ids_delivery_region - FALSE, -- a_get_all_currency - FALSE, -- a_get_inactive_currency - ARRAY[]::INTEGER[], -- a_ids_currency - TRUE, -- a_get_all_discount - FALSE, -- a_get_inactive_discount - ARRAY[]::INTEGER[] -- a_ids_discount - ) LOOP - RAISE NOTICE 'Fetching from cursor: %', curs; - LOOP - FETCH curs INTO rec; - EXIT WHEN NOT FOUND; - RAISE NOTICE 'Record: %', rec; - END LOOP; - END LOOP; -END; -$$ LANGUAGE plpgsql; - -SELECT fetch_results(); - -*/ diff --git a/static/PostgreSQL/701_p_shop_get_many_role_permission.sql b/static/PostgreSQL/701_p_shop_get_many_role_permission.sql deleted file mode 100644 index 27141e79..00000000 --- a/static/PostgreSQL/701_p_shop_get_many_role_permission.sql +++ /dev/null @@ -1,152 +0,0 @@ - -/* -DROP TABLE IF EXISTS tmp_Shop_Image; -DROP TABLE IF EXISTS tmp_Shop_Product; -DROP TABLE IF EXISTS tmp_Shop_Variation; -DROP TABLE IF EXISTS tmp_Shop_Product_Category; - -CREATE OR REPLACE PROCEDURE p_shop_get_many_role_permission ( - a_ids_role VARCHAR(4000), - a_get_inactive_roles BOOLEAN -) -AS $$ -DECLARE - v_ids_role VARCHAR(4000); - v_get_inactive_roles BOOLEAN; - v_has_filter_role BOOLEAN; - v_priority_view INTEGER; - v_priority_edit INTEGER; - v_priority_admin INTEGER; -BEGIN - v_ids_role := TRIM(COALESCE(a_ids_role, '')); - v_get_inactive_roles := COALESCE(a_get_inactive_roles, FALSE); - - -- v_ids_role = REPLACE(v_ids_role, '|', ',`'); - v_has_filter_role = CASE WHEN v_ids_role = '' THEN FALSE ELSE TRUE END; - - - -- Temporary tables - CREATE TABLE tmp_Permission ( - id_role INTEGER NOT NULL, - CONSTRAINT FK_tmp_User_Permission_id_role - FOREIGN KEY (id_role) - REFERENCES Shop_Role(id_role), - id_permission INTEGER, - CONSTRAINT FK_tmp_User_Permission_id_permission - FOREIGN KEY (id_permission) - REFERENCES Shop_Permission(id_permission), - id_access_level INTEGER, - CONSTRAINT FK_tmp_User_Permission_id_access_level - FOREIGN KEY (id_user) - REFERENCES Shop_Access_Level(id_user), - can_view BOOLEAN, - can_edit BOOLEAN, - can_admin BIT - ); - - - INSERT INTO tmp_User_Permission ( - id_role, - id_permission, - id_access_level, - can_view, - can_edit, - can_admin - ) - SELECT U.id_user, - U.is_super_user, - U.is_super_user, - U.is_super_user, - U.is_super_user - FROM Shop_Role R - INNER JOIN Shop_Role_Permission_Link RPL - ON R.id_role = RPL.id_role - AND RPL.active - INNER JOIN Shop_Permission PERM - ON RPL.id_permission = PERM.id_permission - AND PERM.active - INNER JOIN Shop_Permission_Group PG - ON PERM.id_permission_group = PG.id_group - AND PG.active - LEFT JOIN Shop_Access_Level AL - ON RPL.id_access_level = AL.id_access_level - AND AL.active - WHERE FIND_IN_SET(R.id_role, v_ids_role) > 0 - AND PERM.required_access_level = FALSE OR AL. - ; - - UPDATE tmp_User_Permission t_UP - INNER JOIN Shop_Access_Level AL - ON AL.code = 'ADMIN' - SET t_UP.id_access_level = AL.id_access_level - WHERE t_UP.is_super_user - ; - - - -- Clean up - DROP TABLE IF EXISTS tmp_Shop_Product_Category; - DROP TABLE IF EXISTS tmp_Shop_Product; - DROP TABLE IF EXISTS tmp_Shop_Image; -END; -$$ LANGUAGE plpgsql; -*/ - - -/* - -DROP FUNCTION IF EXISTS fetch_results; - -CREATE OR REPLACE FUNCTION fetch_results() -RETURNS VOID AS $$ -DECLARE - curs refcursor; - rec record; - curs1 refcursor; - rec1 record; - curs2 refcursor; - rec2 record; -BEGIN - FOR curs IN SELECT p_shop_get_many_product ( - 1, -- a_id_user - TRUE, -- a_get_all_category - FALSE, -- a_get_inactive_category - FALSE, -- a_get_first_category_only - ARRAY[]::INTEGER[], -- a_ids_category - TRUE, -- a_get_all_product - FALSE, -- a_get_inactive_product - FALSE, -- a_get_first_product_only - ARRAY[]::INTEGER[], -- a_ids_product - TRUE, -- a_get_all_product_permutation - FALSE, -- a_get_inactive_permutation - FALSE, -- a_get_first_permutation_only - ARRAY[1, 2, 3, 4, 5]::INTEGER[], -- a_ids_permutation - FALSE, -- a_get_all_image - FALSE, -- a_get_inactive_image - TRUE, -- a_get_first_image_only - ARRAY[]::INTEGER[], -- a_ids_image - FALSE, -- a_get_all_delivery_region - FALSE, -- a_get_inactive_delivery_region - ARRAY[]::INTEGER[], -- a_ids_delivery_region - FALSE, -- a_get_all_currency - FALSE, -- a_get_inactive_currency - ARRAY[]::INTEGER[], -- a_ids_currency - TRUE, -- a_get_all_discount - FALSE, -- a_get_inactive_discount - ARRAY[]::INTEGER[] -- a_ids_discount - CURS1, - CURS2 - ) LOOP - RAISE NOTICE 'Fetching from cursor: %', curs; - LOOP - FETCH curs INTO rec; - EXIT WHEN NOT FOUND; - RAISE NOTICE 'Record: %', rec; - END LOOP; - END LOOP; -END; -$$ LANGUAGE plpgsql; - -SELECT fetch_results(); - -*/ - diff --git a/static/PostgreSQL/702.1_p_shop_get_many_currency.sql b/static/PostgreSQL/702.1_p_shop_get_many_currency.sql deleted file mode 100644 index ba8a9a43..00000000 --- a/static/PostgreSQL/702.1_p_shop_get_many_currency.sql +++ /dev/null @@ -1,57 +0,0 @@ - - -CREATE OR REPLACE FUNCTION p_shop_get_many_currency ( - IN a_get_inactive_currency BOOLEAN -) -RETURNS SETOF REFCURSOR -AS $$ -DECLARE - v_get_inactive_currency BOOLEAN; - result_currency REFCURSOR; -BEGIN - v_get_inactive_currency := COALESCE(a_get_inactive_currency, FALSE); - - OPEN result_currency FOR - SELECT - C.id_currency, - C.code, - C.name, - C.factor_from_GBP, - C.active, - C.display_order - FROM Shop_Currency C - WHERE v_get_inactive_currency - OR C.active - ORDER BY C.display_order - ; - RETURN NEXT result_currency; -END; -$$ LANGUAGE plpgsql; - - -/* - -DROP FUNCTION IF EXISTS fetch_results; - -CREATE OR REPLACE FUNCTION fetch_results() -RETURNS VOID AS $$ -DECLARE - curs refcursor; - rec record; -BEGIN - FOR curs IN SELECT p_shop_get_many_currency ( - FALSE -- a_get_inactive_currency - ) LOOP - RAISE NOTICE 'Fetching from cursor: %', curs; - LOOP - FETCH curs INTO rec; - EXIT WHEN NOT FOUND; - RAISE NOTICE 'Record: %', rec; - END LOOP; - END LOOP; -END; -$$ LANGUAGE plpgsql; - -SELECT fetch_results(); - -*/ diff --git a/static/PostgreSQL/702.2_p_shop_get_many_region.sql b/static/PostgreSQL/702.2_p_shop_get_many_region.sql deleted file mode 100644 index 62202b1a..00000000 --- a/static/PostgreSQL/702.2_p_shop_get_many_region.sql +++ /dev/null @@ -1,60 +0,0 @@ - - -CREATE OR REPLACE FUNCTION p_shop_get_many_region ( - IN a_get_inactive_region BOOLEAN -) -RETURNS SETOF REFCURSOR -AS $$ -DECLARE - v_get_inactive_region BOOLEAN; - result_region REFCURSOR; -BEGIN - v_get_inactive_region := COALESCE(a_get_inactive_region, FALSE); - - OPEN result_region FOR - SELECT - R.id_region, - R.code, - R.name, - R.active, - R.display_order - FROM Shop_Region R - WHERE v_get_inactive_region - OR R.active - ORDER BY R.display_order - ; - -- RETURN NEXT result_region; -END; -$$ LANGUAGE plpgsql; - - -/* - -DROP FUNCTION IF EXISTS fetch_results; - -CREATE OR REPLACE FUNCTION fetch_results() -RETURNS VOID AS $$ -DECLARE - curs refcursor; - rec record; - curs1 refcursor; - rec1 record; - curs2 refcursor; - rec2 record; -BEGIN - FOR curs IN SELECT p_shop_get_many_region ( - FALSE -- a_get_inactive_region - ) LOOP - RAISE NOTICE 'Fetching from cursor: %', curs; - LOOP - FETCH curs INTO rec; - EXIT WHEN NOT FOUND; - RAISE NOTICE 'Record: %', rec; - END LOOP; - END LOOP; -END; -$$ LANGUAGE plpgsql; - -SELECT fetch_results(); - -*/ diff --git a/static/PostgreSQL/703_p_shop_get_many_user_order.sql b/static/PostgreSQL/703_p_shop_get_many_user_order.sql deleted file mode 100644 index 8604c138..00000000 --- a/static/PostgreSQL/703_p_shop_get_many_user_order.sql +++ /dev/null @@ -1,283 +0,0 @@ - - -CREATE OR REPLACE FUNCTION p_shop_get_many_user_order ( - IN a_id_user INTEGER, - IN a_ids_order VARCHAR(4000), - IN a_n_order_max INTEGER, - IN a_id_checkout_session VARCHAR(200) -) -RETURNS SETOF REFCURSOR -AS $$ -DECLARE - v_id_user INTEGER; - v_ids_order VARCHAR(4000); - v_n_order_max INTEGER; - v_id_checkout_session VARCHAR(200); - v_has_filter_user BOOLEAN; - v_has_filter_order BOOLEAN; - v_has_filter_session BOOLEAN; - v_code_error_data VARCHAR(200); - v_code_error_permission VARCHAR(200); - v_guid UUID; - result_orders REFCURSOR; - -- result_errors REFCURSOR; -BEGIN - v_id_user := TRIM(COALESCE(a_id_user, '')); - v_ids_order := TRIM(COALESCE(a_ids_order, '')); - v_n_order_max := a_n_order_max; - v_id_checkout_session := TRIM(COALESCE(a_id_checkout_session, '')); - - v_code_error_data := (SELECT code FROM Shop_Msg_Error_Type WHERE id_type = 1); - v_code_error_permission := (SELECT code FROM Shop_Msg_Error_Type WHERE id_type = 2); - v_guid = gen_random_uuid(); - - v_has_filter_user = CASE WHEN v_id_user = '' THEN FALSE ELSE TRUE END; - v_ids_order = REPLACE(v_ids_order, '|', ','); - v_has_filter_order = CASE WHEN v_ids_order = '' THEN FALSE ELSE TRUE END; - v_has_filter_session = CASE WHEN v_id_checkout_session = '' THEN FALSE ELSE TRUE END; - - - -- Temporary tables - DROP TABLE IF EXISTS tmp_Shop_User; - DROP TABLE IF EXISTS tmp_Shop_Order; - - /* - CREATE TABLE tmp_Shop_User( - id_user INTEGER PRIMARY KEY, - CONSTRAINT FK_tmp_Shop_User_id_user - FOREIGN KEY (id_user) - REFERENCES Shop_User(id_user), - active BOOLEAN NOT NULL - ); - */ - - CREATE TEMPORARY TABLE tmp_Shop_Order ( - id_order INTEGER NOT NULL PRIMARY KEY, - CONSTRAINT FK_tmp_Shop_Order_id_order - FOREIGN KEY (id_order) - REFERENCES Shop_User_Order(id_order), - active BOOLEAN NOT NULL - ); - - /* - CREATE TABLE IF NOT EXISTS tmp_Msg_Error ( - display_order INTEGER NOT NULL PRIMARY KEY GENERATED ALWAYS AS IDENTITY, - guid UUID NOT NULL, - -- id_type INTEGER NOT NULL, - -- CONSTRAINT FK_tmp_Msg_Error_id_type FOREIGN KEY (id_type) - -- REFERENCES Shop_Msg_Error_Type (id_type), - code VARCHAR(50), - msg VARCHAR(4000) NOT NULL - ); - */ - - -- User - IF v_has_filter_user THEN - INSERT INTO tmp_Shop_User ( - id_user, - active - ) - SELECT id_user, - active - FROM Shop_User - WHERE id_user = v_id_user - AND active - LIMIT 1 - ; - - v_has_filter_user = EXISTS (SELECT id_user FROM tmp_Shop_User LIMIT 1); - v_id_user := (SELECT id_user FROM tmp_Shop_User LIMIT 1); - ELSE - RAISE EXCEPTION 'Valid user ID must be provided.' - USING ERRCODE = '22000' - ; - END IF; - - -- Permissions - CALL p_shop_calc_user ( - v_guid, -- a_guid - a_id_user, -- a_id_user - 0, -- a_get_inactive_users - CONVERT((SELECT id_permission FROM Shop_Permission WHERE 'STORE_USER' = code), CHAR), -- a_ids_permission - (SELECT id_access_level FROM Shop_Access_Level WHERE code = 'VIEW' AND active), -- a_ids_access_level - '', -- a_ids_product - '' -- a_ids_permutation - ); - - IF NOT (SELECT can_edit FROM Shop_Calc_User_Temp WHERE guid = v_guid) THEN - RAISE EXCEPTION 'User ID does not have permission to access orders.' - USING ERRCODE = '42501' - ; - END IF; - - DELETE FROM Shop_Calc_User_Temp - WHERE guid = v_guid - ; - - -- Invalid Order IDs - IF v_has_filter_order AND EXISTS ( - SELECT * - FROM Shop_User_Order - WHERE - NOT (id_user = v_id_user) - AND id_order = ANY(v_ids_order) - LIMIT 1 - ) THEN -- id_order LIKE CONCAT('%', v_ids_order, '%') LIMIT 1) THEN - RAISE EXCEPTION 'You do not have access to the following order IDs: %', ( - SELECT STRING_AGG(id_order, ', ') - FROM Shop_User_Order - WHERE - NOT (id_user = v_id_user) - AND id_order = ANY(v_ids_order) - ) - USING ERRCODE = '22000' - ; - END IF; - -- Invalid Checkout Session IDs - IF v_has_filter_session AND EXISTS ( - SELECT * - FROM Shop_User_Order - WHERE - NOT (id_user = v_id_user) - AND id_checkout_session = v_id_checkout_session - ) THEN - RAISE EXCEPTION 'You do not have access to the following checkout session IDs: %', ( - SELECT STRING_AGG(id_order, ', ') - FROM Shop_User_Order - WHERE - NOT (id_user = v_id_user) - AND id_checkout_session = v_id_checkout_session - ) - USING ERRCODE = '22000' - ; - END IF; - - -- Valid Orders - IF NOT EXISTS (SELECT * FROM tmp_Msg_Error WHERE guid = v_guid LIMIT 1) THEN - - INSERT INTO tmp_Shop_Order ( - id_order, - active - ) - SELECT UO.id_order, - UO.active - FROM Shop_User_Order UO - INNER JOIN tmp_Shop_User t_U - ON UO.id_user = t_U.id_user - AND t_U.active - WHERE ((NOT v_has_filter_order OR FIND_IN_SET(UO.id_order, v_ids_order) > 0) -- UO.id_order LIKE CONCAT('%', v_ids_order, '%')) - OR (NOT v_has_filter_session OR UO.id_checkout_session = v_id_checkout_session)) - AND UO.active - ; - END IF; - - - - -- Returns - /* - SELECT * - FROM tmp_Shop_User - ; - */ - - OPEN result_orders FOR - SELECT t_O.id_order, - UOPL.id_product, - UOPL.id_permutation, - UOPL.quantity - FROM tmp_Shop_Order t_O - INNER JOIN Shop_User_Order UO - ON t_O.id_order = UO.id_order - INNER JOIN Shop_User_Order_Product_Link UOPL - ON UO.id_order = UOPL.id_order - WHERE t_O.active - ; - RETURN NEXT result_orders; - - /* - -- Errors - OPEN result_errors FOR - SELECT * - FROM tmp_Msg_Error - ; - -- RETURN NEXT result_errors; - */ - - - /* - -- Return arguments for test - SELECT - v_id_user, - v_ids_order, - v_n_order_max, - v_id_checkout_session - ; - */ - - -- Clean up - -- DROP TABLE IF EXISTS tmp_Shop_User; - -- DROP TABLE IF EXISTS tmp_Shop_Order; -END; -$$ LANGUAGE plpgsql; - - -/* - -DROP FUNCTION IF EXISTS fetch_results; - -CREATE OR REPLACE FUNCTION fetch_results() -RETURNS VOID AS $$ -DECLARE - curs refcursor; - rec record; - curs1 refcursor; - rec1 record; - curs2 refcursor; - rec2 record; -BEGIN - FOR curs IN SELECT p_shop_get_many_user_order ( - 'auth0|6582b95c895d09a70ba10fef', # a_id_user - '1', # a_ids_order - 0, # a_n_order_max - '' # a_id_checkout_session - ) LOOP - RAISE NOTICE 'Fetching from cursor: %', curs; - LOOP - FETCH curs INTO rec; - EXIT WHEN NOT FOUND; - RAISE NOTICE 'Record: %', rec; - END LOOP; - END LOOP; -END; -$$ LANGUAGE plpgsql; - -SELECT fetch_results(); - -*/ - - -/* - -CALL p_shop_get_many_user_order ( - 'auth0|6582b95c895d09a70ba10fef', # a_id_user - '1', # a_ids_order - 0, # a_n_order_max - '' # a_id_checkout_session -); - -CALL p_shop_get_many_user_order ( - '', # a_id_user - '1', # a_ids_order - 0, # a_n_order_max - '' # a_id_checkout_session -); - -insert into shop_product_change_set (comment) - values ('set product not subscription - test bool output to python'); - update shop_product - set is_subscription = 0, - id_change_set = (select id_change_set from shop_product_change_set order by id_change_set desc limit 1) - where id_product = 1 -select * from shop_User; -select * from shop_User_oRDER; -*/ diff --git a/static/PostgreSQL/704_p_shop_get_many_stripe_product_new.sql b/static/PostgreSQL/704_p_shop_get_many_stripe_product_new.sql deleted file mode 100644 index 2b7330ea..00000000 --- a/static/PostgreSQL/704_p_shop_get_many_stripe_product_new.sql +++ /dev/null @@ -1,316 +0,0 @@ - - -/* - -CALL p_shop_get_many_stripe_product_new ( - '' -) - -*/ - -CREATE OR REPLACE FUNCTION p_shop_get_many_stripe_product_new ( - IN a_id_user INTEGER -) -RETURNS SETOF REFCURSOR -AS $$ -DECLARE - v_id_user INTEGER; - v_code_error_data VARCHAR(200); - v_code_error_permission VARCHAR(200); - v_guid UUID; - result_products REFCURSOR; - result_product_variation_links REFCURSOR; - -- result_errors REFCURSOR; -BEGIN - v_id_user := a_id_user; - v_code_error_data := (SELECT code FROM Shop_Msg_Error_Type WHERE id_type = 1); - v_code_error_permission := (SELECT code FROM Shop_Msg_Error_Type WHERE id_type = 2); - v_guid = gen_random_uuid(); - - - -- Temporary tables - DROP TABLE IF EXISTS tmp_Shop_Product; - DROP TABLE IF EXISTS tmp_Shop_User; - - CREATE TEMPORARY TABLE tmp_Shop_User( - id_user INTEGER PRIMARY KEY, - CONSTRAINT FK_tmp_Shop_User_id_user - FOREIGN KEY (id_user) - REFERENCES Shop_User(id_user), - active BOOLEAN NOT NULL - ); - - CREATE TEMPORARY TABLE tmp_Shop_Product ( - id_product INTEGER NOT NULL, - CONSTRAINT FK_tmp_Shop_Product_id_product - FOREIGN KEY (id_product) - REFERENCES Shop_Product(id_product), - id_permutation INTEGER NULL, - CONSTRAINT FK_tmp_Shop_Product_id_permutation - FOREIGN KEY (id_permutation) - REFERENCES Shop_Product_Permutation(id_permutation), - active BOOLEAN NOT NULL, - display_order_product INTEGER NOT NULL, - display_order_permutation INTEGER NOT NULL, - name VARCHAR(200) NOT NULL, - description VARCHAR(4000) NOT NULL - ); - - /* - CREATE TABLE IF NOT EXISTS tmp_Msg_Error ( -- IF NOT EXISTS - display_order INTEGER NOT NULL PRIMARY KEY GENERATED ALWAYS AS IDENTITY, - guid UUID NOT NULL, - code VARCHAR(50) NOT NULL, - -- CONSTRAINT chk_tmp_Msg_Error_code CHECK (code IN (SELECT code FROM Shop_Msg_Error_Type)), - /* - id_type INTEGER NOT NULL, - CONSTRAINT FK_tmp_Msg_Error_id_type - FOREIGN KEY (id_type) - REFERENCES Shop_Msg_Error_Type(id_type), - */ - msg VARCHAR(4000) NOT NULL - ); - */ - - - -- User - IF NOT EXISTS( - SELECT * - FROM Shop_User - WHERE - id_user = v_id_user - AND active - ) THEN - RAISE EXCEPTION 'Valid user ID required.' - USING ERRCODE = '22000' - ; - END IF; - - INSERT INTO tmp_Shop_User ( - id_user, - active - ) - SELECT id_user, - active - FROM Shop_User - WHERE id_user = v_id_user - AND active - LIMIT 1 - ; - - -- Get products - INSERT INTO tmp_Shop_Product ( - id_product, - id_permutation, - active, - display_order_product, - display_order_permutation, - name, - description - ) - SELECT id_product, - id_permutation, - active, - display_order_product, - display_order_permutation, - name, - description - FROM ( - SELECT id_product, - NULL AS id_permutation, - active, - display_order AS display_order_product, - NULL AS display_order_permutation, - name, - description, - id_stripe_product - FROM Shop_Product P - UNION - SELECT t_PPPV.id_product, - id_permutation, - t_PPPV.active, - display_order_product, - display_order_permutation, - P.name, ': ' || names_variation AS name, - P.description || ' With variations: ' || type_name_pairs_variation AS description, - t_PPPV.id_stripe_product - FROM ( - SELECT P.id_product, - PP.id_permutation, - PP.active, - P.display_order AS display_order_product, - PP.display_order AS display_order_permutation, - STRING_AGG(V.name, ' ') AS names_variation, - STRING_AGG(VT.name || ': ' || V.name, ', ') AS type_name_pairs_variation, - PP.id_stripe_product - FROM Shop_Product_Permutation PP - INNER JOIN Shop_Product P - ON PP.id_product = P.id_product - AND P.active - INNER JOIN Shop_Product_Permutation_Variation_Link PPVL - ON PP.id_permutation = PPVL.id_permutation - AND PPVL.active - INNER JOIN Shop_Variation V - ON PPVL.id_variation = V.id_variation - AND V.active - INNER JOIN Shop_Variation_Type VT - ON V.id_type = VT.id_type - AND VT.active - GROUP BY id_product, id_permutation -- , VT.id_type, V.id_variation - ) t_PPPV - INNER JOIN Shop_Product P - ON t_PPPV.id_product = P.id_product - ) t_PPP - WHERE ISNULL(id_stripe_product) - AND active - ; - - -- Permissions - CALL p_shop_calc_user ( - v_guid, -- a_guid - v_id_user, -- a_id_user - 0, -- a_get_inactive_users - CONVERT((SELECT id_permission FROM Shop_Permission WHERE 'STORE_ADMIN' = code), CHAR), -- a_ids_permission - (SELECT id_access_level FROM Shop_Access_Level WHERE code = 'ADMIN' AND active), -- a_ids_access_level - (SELECT STRING_AGG(id_product, ',') From tmp_Shop_Product), -- a_ids_product - (SELECT STRING_AGG(id_permutation, ',') From tmp_Shop_Product) -- a_ids_permutation -- WHERE NOT ISNULL(id_permutation) - ); - - IF EXISTS (SELECT can_admin FROM Shop_Calc_User_Temp WHERE guid = v_guid AND NOT can_admin) THEN - RAISE EXCEPTION 'User ID does not have permission to get all new stripe products.' - USING ERRCODE = '42501' - ; - END IF; - - DELETE FROM Shop_Calc_User_Temp - WHERE guid = v_guid - ; - - - - - -- Returns - /* - SELECT * - FROM tmp_Shop_User - ; - */ - - /* - IF EXISTS (SELECT * FROM tmp_Msg_Error WHERE guid = v_guid LIMIT 1) THEN - DELETE FROM tmp_Shop_Product; - END IF; - */ - - OPEN result_products FOR - SELECT id_product, - id_permutation, - name, - description - FROM tmp_Shop_Product - ORDER BY display_order_product, display_order_permutation - ; - RETURN NEXT result_products; - - OPEN result_product_variation_links FOR - SELECT PP.id_permutation, - V.id_variation, - V.name AS name_variation, - VT.id_type AS id_type_variation, - VT.name as name_variation_type - FROM tmp_Shop_Product t_P - INNER JOIN Shop_Product_Permutation PP - ON t_P.id_permutation = PP.id_permutation - INNER JOIN Shop_Product_Permutation_Variation_Link PPVL - ON PP.id_permutation = PPVL.id_permutation - AND PPVL.active - INNER JOIN Shop_Variation V - ON PPVL.id_variation = V.id_variation - AND V.active - INNER JOIN Shop_Variation_Type VT - ON V.id_type = VT.id_type - AND VT.active - ; - RETURN NEXT result_product_variation_links; - - -- Errors - /* - OPEN result_errors FOR - SELECT * - FROM tmp_Msg_Error - ; - -- RETURN NEXT result_errors; - */ - - - /* - -- Return arguments for test - SELECT - v_id_user - ; - */ - - -- Clean up - DROP TABLE IF EXISTS tmp_Shop_Product; - DROP TABLE IF EXISTS tmp_Shop_User; -END; -$$ LANGUAGE plpgsql; - - -/* - -DROP FUNCTION IF EXISTS fetch_results; - -CREATE OR REPLACE FUNCTION fetch_results() -RETURNS VOID AS $$ -DECLARE - curs refcursor; - rec record; - curs1 refcursor; - rec1 record; - curs2 refcursor; - rec2 record; -BEGIN - FOR curs IN SELECT p_shop_get_many_stripe_product_new ( - 'auth0|6582b95c895d09a70ba10fef' - ) LOOP - RAISE NOTICE 'Fetching from cursor: %', curs; - LOOP - FETCH curs INTO rec; - EXIT WHEN NOT FOUND; - RAISE NOTICE 'Record: %', rec; - END LOOP; - END LOOP; -END; -$$ LANGUAGE plpgsql; - -SELECT fetch_results(); - -*/ - - -/* -CALL p_shop_get_many_stripe_product_new ( - '' -); - -CALL p_shop_get_many_stripe_product_new ( - 'auth0|6582b95c895d09a70ba10fef' -); - - - -select * from shop_product; -select * from shop_product_permutation_variation_link; - -CALL p_shop_calc_user ( - 'ead789a1-c7ac-11ee-a256-b42e9986184a', -- a_guid - 'auth0|6582b95c895d09a70ba10fef', -- a_id_user - 0, -- a_get_inactive_users - '4', -- a_ids_permission - '3', -- a_ids_access_level - '1', -- a_ids_product - '1' -- a_ids_permutation -- WHERE NOT ISNULL(id_permutation) - ); - -*/ diff --git a/static/PostgreSQL/705_p_shop_get_many_stripe_price_new.sql b/static/PostgreSQL/705_p_shop_get_many_stripe_price_new.sql deleted file mode 100644 index a85fafd3..00000000 --- a/static/PostgreSQL/705_p_shop_get_many_stripe_price_new.sql +++ /dev/null @@ -1,253 +0,0 @@ - - - -/* - -CALL p_shop_get_many_stripe_price_new ( - '' -) - -*/ - - - -CREATE OR REPLACE FUNCTION p_shop_get_many_stripe_price_new ( - IN a_id_user INTEGER -) -RETURNS SETOF REFCURSOR -AS $$ -DECLARE - v_id_user INTEGER; - v_has_filter_user BOOLEAN; - v_code_error_data VARCHAR(200); - v_code_error_permission VARCHAR(200); - v_guid UUID; - result_products REFCURSOR; - -- result_errors REFCURSOR; -BEGIN - v_id_user := TRIM(COALESCE(a_id_user, '')); - v_code_error_data := (SELECT code FROM Shop_Msg_Error_Type WHERE id_type = 1); - v_code_error_permission := (SELECT code FROM Shop_Msg_Error_Type WHERE id_type = 2); - v_guid = gen_random_uuid(); - - v_has_filter_user = CASE WHEN v_id_user = '' THEN FALSE ELSE TRUE END; - - - -- Temporary tables - DROP TABLE IF EXISTS tmp_Shop_Product_Currency_Link; - DROP TABLE IF EXISTS tmp_Shop_User; - - CREATE TEMPORARY TABLE tmp_Shop_User( - id_user INTEGER PRIMARY KEY, - CONSTRAINT FK_tmp_Shop_User_id_user - FOREIGN KEY (id_user) - REFERENCES Shop_User(id_user), - active BOOLEAN NOT NULL - ); - - CREATE TEMPORARY TABLE tmp_Shop_Product_Currency_Link ( - id_link INTEGER NOT NULL PRIMARY KEY, - CONSTRAINT FK_tmp_Shop_Product_Currency_Link_id_link - FOREIGN KEY (id_link) - REFERENCES Shop_Product_Currency_Region_Link(id_link), - id_product INTEGER NOT NULL, - CONSTRAINT FK_tmp_Shop_Product_CurrencyLink_id_product - FOREIGN KEY (id_product) - REFERENCES Shop_Product(id_product), - id_permutation INTEGER NULL, - CONSTRAINT FK_tmp_Shop_Product_Currency_Link_id_permutation - FOREIGN KEY (id_permutation) - REFERENCES Shop_Product_Permutation(id_permutation), - id_currency INTEGER NOT NULL, - CONSTRAINT FK_tmp_Shop_Product_Currency_Link_id_currency - FOREIGN KEY (id_currency) - REFERENCES Shop_Currency(id_currency), - active BOOLEAN NOT NULL - ); - - /* - CREATE TABLE IF NOT EXISTS tmp_Msg_Error ( -- IF NOT EXISTS - display_order INTEGER NOT NULL PRIMARY KEY GENERATED ALWAYS AS IDENTITY, - guid UUID NOT NULL, - code VARCHAR(50) NOT NULL, - -- CONSTRAINT chk_tmp_Msg_Error_code CHECK (code IN (SELECT code FROM Shop_Msg_Error_Type)), - /* - id_type INTEGER NOT NULL, - CONSTRAINT FK_tmp_Msg_Error_id_type - FOREIGN KEY (id_type) - REFERENCES Shop_Msg_Error_Type(id_type), - */ - msg VARCHAR(4000) NOT NULL - ); - */ - - - -- User permissions - IF NOT EXISTS( - SELECT * - FROM Shop_User - WHERE - id_user = v_id_user - AND active - ) THEN - RAISE EXCEPTION 'Valid user ID required.' - USING ERRCODE = '22000' - ; - END IF; - - INSERT INTO tmp_Shop_User ( - id_user, - active - ) - SELECT id_user, - active - FROM Shop_User - WHERE id_user = v_id_user - AND active - LIMIT 1 - ; - - -- Get products - INSERT INTO tmp_Shop_Product_Currency_Link ( - id_link, - id_product, - id_permutation, - id_currency, - active - ) - SELECT id_link, - id_product, - id_permutation, - id_currency, - active - FROM Shop_Product_Currency_Region_Link - WHERE ISNULL(id_stripe_price) - AND active - ; - - -- Permissions - -- SELECT * FROM tmp_Msg_Error LIMIT 1; - CALL p_shop_calc_user ( - v_guid, -- a_guid - v_id_user, -- a_id_user - 0, -- a_get_inactive_users - CONVERT((SELECT id_permission FROM Shop_Permission WHERE 'STORE_ADMIN' = code), CHAR), -- a_ids_permission - (SELECT id_access_level FROM Shop_Access_Level WHERE code = 'ADMIN' AND active), -- a_ids_access_level - (SELECT STRING_AGG(DISTINCT id_product, ',') FROM tmp_Shop_Product_Currency_Link), -- (SELECT DISTINCT id_product FROM tmp_Shop_Product_Currency_Link) calc_PCL) -- a_ids_product - (SELECT STRING_AGG(DISTINCT id_permutation, ',') FROM tmp_Shop_Product_Currency_Link) -- a_ids_permutation - ); - -- SELECT * FROM tmp_Msg_Error LIMIT 1; - - IF EXISTS (SELECT can_admin FROM Shop_Calc_User_Temp WHERE guid = v_guid AND NOT can_admin LIMIT 1) THEN - RAISE EXCEPTION 'User ID does not have permission to get all new stripe prices.' - USING ERRCODE = '42501' - ; - END IF; - - DELETE FROM Shop_Calc_User_Temp - WHERE guid = v_guid - ; - - - - -- Returns - /* - IF EXISTS (SELECT * FROM tmp_Msg_Error WHERE guid = v_guid LIMIT 1) THEN - DELETE FROM tmp_Shop_Product_Currency_Link; - END IF; - */ - /* - SELECT * - FROM tmp_Shop_User - ; - */ - - OPEN result_products FOR - SELECT t_PCL.id_product, - t_PCL.id_permutation, - P.price_GBP_full * C.factor_from_GBP AS unit_price, - C.code AS code_currency, - P.id_stripe_product, - P.is_subscription, - LOWER(RI.code) AS name_recurring_interval, - P.count_interval_recurrence - FROM tmp_Shop_Product_Currency_Link t_PCL - INNER JOIN Shop_Product P - ON t_PCL.id_product = P.id_product - AND P.active - INNER JOIN Shop_Interval_Recurrence RI - ON P.id_unit_measurement_interval_recurrence = RI.id_interval - AND RI.active - INNER JOIN Shop_Currency C - ON t_PCL.id_currency = C.id_currency - AND C.active - WHERE t_PCL.active - ; - RETURN NEXT result_products; - - -- Errors - /* - OPEN result_errors FOR - SELECT * - FROM tmp_Msg_Error - ; - -- RETURN NEXT result_errors; - */ - - - /* - -- Return arguments for test - SELECT - v_id_user - ; - */ - - -- Clean up - DROP TABLE IF EXISTS tmp_Shop_User; - DROP TABLE IF EXISTS tmp_Shop_Product_Currency_Link; -END; -$$ LANGUAGE plpgsql; - - -/* - -DROP FUNCTION IF EXISTS fetch_results; - -CREATE OR REPLACE FUNCTION fetch_results() -RETURNS VOID AS $$ -DECLARE - curs refcursor; - rec record; - curs1 refcursor; - rec1 record; - curs2 refcursor; - rec2 record; -BEGIN - FOR curs IN SELECT p_shop_get_many_stripe_price_new ( - 'auth0|6582b95c895d09a70ba10fef' - ) LOOP - RAISE NOTICE 'Fetching from cursor: %', curs; - LOOP - FETCH curs INTO rec; - EXIT WHEN NOT FOUND; - RAISE NOTICE 'Record: %', rec; - END LOOP; - END LOOP; -END; -$$ LANGUAGE plpgsql; - -SELECT fetch_results(); - -*/ - - -/* -CALL p_shop_get_many_stripe_price_new ( - '' -); - -CALL p_shop_get_many_stripe_price_new ( - 'auth0|6582b95c895d09a70ba10fef' -); - -*/ diff --git a/static/PostgreSQL/706_p_shop_get_many_supplier.sql b/static/PostgreSQL/706_p_shop_get_many_supplier.sql deleted file mode 100644 index 92efce78..00000000 --- a/static/PostgreSQL/706_p_shop_get_many_supplier.sql +++ /dev/null @@ -1,247 +0,0 @@ - - -CREATE OR REPLACE FUNCTION p_shop_get_many_supplier ( - IN a_id_user INTEGER, - IN a_get_all_supplier BOOLEAN, - IN a_get_inactive_supplier BOOLEAN, - IN a_get_first_supplier_only BOOLEAN, - IN a_ids_supplier INTEGER[] -) -RETURNS SETOF REFCURSOR -AS $$ -DECLARE - v_id_user INTEGER; - v_get_all_supplier BOOLEAN; - v_get_inactive_supplier BOOLEAN; - v_get_first_supplier_only BOOLEAN; - v_ids_supplier INTEGER[]; - v_has_filter_supplier BOOLEAN; - v_guid UUID; - v_id_permission_supplier INTEGER; - v_id_access_level_view INTEGER; - v_id_minimum INTEGER; - result_suppliers REFCURSOR; - -- result_errors REFCURSOR; -BEGIN - v_id_user := TRIM(COALESCE(a_id_user, '')); - v_get_all_supplier := COALESCE(a_get_all_supplier, TRUE); - v_get_inactive_supplier := COALESCE(a_get_inactive_supplier, FALSE); - v_get_first_supplier_only := COALESCE(a_get_first_supplier_only, FALSE); - v_ids_supplier := TRIM(COALESCE(a_ids_supplier, '')); - - v_guid := gen_random_uuid(); - v_id_access_level_view := (SELECT id_access_level FROM Shop_Access_Level WHERE code = 'VIEW'); - v_has_filter_supplier = NOT (a_ids_supplier = ''); - - - -- Temporary tables - DROP TABLE IF EXISTS tmp_Shop_Supplier; - - CREATE TABLE tmp_Shop_Supplier ( - id_supplier INTEGER NOT NULL, - CONSTRAINT FK_tmp_Shop_Supplier_id_supplier - FOREIGN KEY (id_supplier) - REFERENCES Shop_Supplier(id_supplier), - active BOOLEAN NOT NULL, - rank_supplier INTEGER NULL, - can_view BOOLEAN, - can_edit BOOLEAN, - can_admin BIT - ); - - /* - CREATE TABLE IF NOT EXISTS tmp_Msg_Error ( - display_order INTEGER NOT NULL PRIMARY KEY GENERATED ALWAYS AS IDENTITY, - guid UUID NOT NULL, - id_type INTEGER 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 - ); - */ - - -- select v_has_filter_product, v_has_filter_permutation; - - IF v_has_filter_supplier THEN - IF EXISTS ( - SELECT * - FROM UNNEST(v_ids_supplier) AS Supplier_Id - LEFT JOIN Shop_Supplier S ON Supplier_Id = S.id_supplier - WHERE ISNULL(S.id_supplier) - ) THEN - RAISE EXCEPTION 'Invalid supplier IDs: %', ( - SELECT STRING_AGG(Supplier_Id, ', ') - FROM UNNEST(v_ids_supplier) AS Supplier_Id - LEFT JOIN Shop_Supplier S ON Supplier_Id = S.id_supplier - WHERE ISNULL(S.id_supplier) - LIMIT 1 - ) - USING ERRCODE = '22000' - ; - ELSE - INSERT INTO tmp_Shop_Supplier ( - id_supplier, - active, - rank_supplier - ) - SELECT - S.id_supplier, - S.active, - RANK() OVER (ORDER BY id_supplier ASC) AS rank_supplier - FROM Shop_Supplier S - WHERE - ( - a_get_inactive_supplier - OR S.active = TRUE - ) - AND ( - a_get_all_supplier - OR S.id_supplier = ANY(v_ids_supplier) - ) - ; - END IF; - - IF a_get_first_supplier_only THEN - DELETE FROM tmp_Shop_Supplier t_S - WHERE t_S.rank_supplier > ( - SELECT MIN(t_S.rank_supplier) - FROM tmp_Shop_Supplier t_S - ) - ; - END IF; - END IF; - - -- Permissions - -- v_id_user := (SELECT id_user FROM Shop_User WHERE name = CURRENT_USER); - v_id_permission_supplier := (SELECT id_permission FROM Shop_Permission WHERE code = 'STORE_SUPPLIER' LIMIT 1); - - -- SELECT v_guid, a_id_user, false, v_id_permission_product, v_id_access_level_view, v_ids_permutation_permission; - -- select * from Shop_Calc_User_Temp; - - CALL p_shop_calc_user(v_guid, a_id_user, FALSE, v_id_permission_supplier, v_id_access_level_view, ''); - - -- select * from Shop_Calc_User_Temp; - - IF NOT EXISTS (SELECT can_view FROM Shop_Calc_User_Temp UE_T WHERE UE_T.GUID = v_guid) THEN - RAISE EXCEPTION 'You do not have view permissions for %', ( - SELECT name - FROM Shop_Permission - WHERE id_permission = v_id_permission_supplier - LIMIT 1 - ) - USING ERRCODE = '42501' - ; - END IF; - - - -- select * from tmp_Shop_Product; - - -- Returns - - -- Suppliers - OPEN result_suppliers FOR - SELECT - t_S.id_supplier, - S.name_company, - name_contact, - department_contact, - id_address, - phone_number, - fax, - email, - website, - id_currency, - active - FROM tmp_Shop_Supplier t_S - INNER JOIN Shop_Supplier S - ON t_S.id_supplier = S.id_supplier - ; - RETURN NEXT result_suppliers; - - -- Errors - /* - SELECT - /* - t_ME.display_order, - t_ME.guid, - t_ME.id_type, - t_ME.msg, - MET.code, - MET.name, - MET.description - */ - * - FROM tmp_Msg_Error t_ME - INNER JOIN Shop_Msg_Error_Type MET - ON t_ME.id_type = MET.id_type - WHERE guid = v_guid - ; - OPEN result_errors FOR - SELECT * - FROM tmp_Msg_Error - ; - -- RETURN NEXT result_errors; - */ - - /* - -- Return arguments for test - SELECT - a_ids_category, - a_get_inactive_category, - a_ids_product, - a_get_inactive_product, - a_get_first_product_only, - a_get_all_product, - a_ids_image, - a_get_inactive_image, - a_get_first_image_only, - a_get_all_image - ; - */ - - -- select 'other outputs'; - -- select * from tmp_Shop_Product; - - -- Clean up - DROP TABLE IF EXISTS tmp_Supplier; - - DELETE FROM Shop_Calc_User_Temp - WHERE GUID = v_guid - ; -END; -$$ LANGUAGE plpgsql; - - -/* - -DROP FUNCTION IF EXISTS fetch_results; - -CREATE OR REPLACE FUNCTION fetch_results() -RETURNS VOID AS $$ -DECLARE - curs refcursor; - rec record; -BEGIN - FOR curs IN SELECT p_shop_get_many_supplier ( - '', -- a_id_user - TRUE, -- a_get_all_supplier - FALSE, -- a_get_inactive_supplier - FALSE, -- a_get_first_supplier_only - '' -- a_ids_supplier - ) LOOP - RAISE NOTICE 'Fetching from cursor: %', curs; - LOOP - FETCH curs INTO rec; - EXIT WHEN NOT FOUND; - RAISE NOTICE 'Record: %', rec; - END LOOP; - END LOOP; -END; -$$ LANGUAGE plpgsql; - -SELECT fetch_results(); - -*/ - diff --git a/static/PostgreSQL/706_p_shop_get_many_supplier_purchase_order.sql b/static/PostgreSQL/706_p_shop_get_many_supplier_purchase_order.sql deleted file mode 100644 index 8ff67675..00000000 --- a/static/PostgreSQL/706_p_shop_get_many_supplier_purchase_order.sql +++ /dev/null @@ -1,709 +0,0 @@ - - -CREATE OR REPLACE FUNCTION p_shop_get_many_supplier_purchase_order ( - IN a_id_user INTEGER, - IN a_get_all_supplier BOOLEAN, - IN a_get_inactive_supplier BOOLEAN, - IN a_get_first_supplier_only BOOLEAN, - IN a_ids_supplier INTEGER[], - IN a_get_all_order BOOLEAN, - IN a_get_inactive_order BOOLEAN, - IN a_get_first_order_only BOOLEAN, - IN a_ids_order INTEGER[], - IN a_get_inactive_category BOOLEAN, - IN a_ids_category INTEGER[], - IN a_get_inactive_product BOOLEAN, - IN a_ids_product INTEGER[], - IN a_get_inactive_permutation BOOLEAN, - IN a_ids_permutation INTEGER[], - IN a_date_from TIMESTAMP, - IN a_date_to TIMESTAMP -) -RETURNS SETOF REFCURSOR -AS $$ -DECLARE - v_id_user INTEGER; - v_get_all_supplier BOOLEAN; - v_get_inactive_supplier BOOLEAN; - v_get_first_supplier_only BOOLEAN; - v_ids_supplier INTEGER[]; - v_get_all_order BOOLEAN; - v_get_inactive_order BOOLEAN; - v_get_first_order_only BOOLEAN; - v_ids_order INTEGER[]; - v_get_inactive_category BOOLEAN; - v_ids_category INTEGER[]; - v_get_inactive_product BOOLEAN; - v_ids_product INTEGER[]; - v_get_inactive_permutation BOOLEAN; - v_ids_permutation INTEGER[]; - v_date_from TIMESTAMP; - v_date_to TIMESTAMP; - v_has_filter_supplier BOOLEAN; - v_has_filter_order BOOLEAN; - v_has_filter_category BOOLEAN; - v_has_filter_product BOOLEAN; - v_has_filter_permutation BOOLEAN; - v_has_filter_date_from BOOLEAN; - v_has_filter_date_to BOOLEAN; - v_guid UUID; - v_ids_permission_supplier_purchase_order INTEGER[]; - v_ids_product_permission INTEGER[]; - v_id_access_level_view INTEGER; - v_code_error_data VARCHAR(50); - v_id_type_error_data INTEGER; - result_suppliers REFCURSOR; - result_orders REFCURSOR; - result_order_product_links REFCURSOR; - -- result_errors REFCURSOR; -BEGIN - v_id_user := TRIM(COALESCE(a_id_user, '')); - v_get_all_supplier := COALESCE(a_get_all_supplier, TRUE); - v_get_inactive_supplier := COALESCE(a_get_inactive_supplier, FALSE); - v_get_first_supplier_only := COALESCE(a_get_first_supplier_only, FALSE); - v_ids_supplier := TRIM(COALESCE(a_ids_supplier, '')); - v_get_all_order := COALESCE(a_get_all_order, TRUE); - v_get_inactive_order := COALESCE(a_get_inactive_order, FALSE); - v_get_first_order_only := COALESCE(a_get_first_order_only, FALSE); - v_ids_order := TRIM(COALESCE(a_ids_order, '')); - v_get_inactive_category := COALESCE(a_get_inactive_category, FALSE); - v_ids_category := TRIM(COALESCE(a_ids_category, '')); - v_get_inactive_product := COALESCE(a_get_inactive_product, FALSE); - v_ids_product := TRIM(COALESCE(a_ids_product, '')); - v_get_inactive_permutation := COALESCE(a_get_inactive_permutation, FALSE); - v_ids_permutation := TRIM(COALESCE(a_ids_permutation, '')); - v_date_from := a_date_from; - v_date_to := a_date_to; - - v_guid := gen_random_uuid(); - v_id_access_level_view := (SELECT id_access_level FROM Shop_Access_Level WHERE code = 'VIEW' LIMIT 1); - -- v_ids_permission_supplier_purchase_order := (SELECT id_permission FROM Shop_Permission WHERE code = 'SHOP_SUPPLIER_PURCHASE_ORDER' LIMIT 1); - v_code_error_data = 'BAD_DATA'; - v_id_type_error_data := (SELECT id_type FROM Shop_Msg_Error_Type WHERE code = v_code_error_data); - v_has_filter_supplier = (CARDINALITY(v_ids_supplier) > 0); - v_has_filter_order = (CARDINALITY(v_ids_order) > 0); - v_has_filter_category = (CARDINALITY(v_ids_category) > 0); - v_has_filter_product = (CARDINALITY(v_ids_product) > 0); - v_has_filter_permutation = (CARDINALITY(v_ids_permutation) > 0); - v_has_filter_date_from = CASE WHEN ISNULL(v_date_from) THEN FALSE ELSE TRUE END; - v_has_filter_date_to = CASE WHEN ISNULL(v_date_to) THEN FALSE ELSE TRUE END; - - -- Temporary tables - DROP TABLE IF EXISTS tmp_Shop_Supplier_Purchase_Order_Product_Link; - DROP TABLE IF EXISTS tmp_Shop_Supplier_Purchase_Order; - DROP TABLE IF EXISTS tmp_Shop_Supplier; - DROP TABLE IF EXISTS tmp_Shop_Product; - - CREATE TABLE tmp_Shop_Supplier ( - id_supplier INTEGER NOT NULL, - CONSTRAINT FK_tmp_Shop_Supplier_id_supplier - FOREIGN KEY (id_supplier) - REFERENCES Shop_Supplier(id_supplier), - active BOOLEAN NOT NULL, - rank_supplier INTEGER NULL, - can_view BOOLEAN, - can_edit BOOLEAN, - can_admin BIT - ); - - CREATE TABLE tmp_Shop_Supplier_Purchase_Order ( - id_order INTEGER NOT NULL PRIMARY KEY, - id_supplier_ordered INTEGER NOT NULL, - CONSTRAINT FK_tmp_Shop_Supplier_Purchase_Order_id_supplier_ordered - FOREIGN KEY (id_supplier_ordered) - REFERENCES Shop_Supplier(id_supplier), - cost_total_local REAL NOT NULL, - id_currency_cost INTEGER NOT NULL, - active BOOLEAN NOT NULL, - rank_order INTEGER NOT NULL - ); - - /* - CREATE TABLE tmp_Shop_Supplier_Purchase_Order_Product_Link ( - id_link INTEGER NOT NULL PRIMARY KEY, - id_order INTEGER NOT NULL, - CONSTRAINT FK_tmp_Supplier_Purchase_Order_Product_Link_id_order - FOREIGN KEY (id_order) - REFERENCES Shop_Supplier_Purchase_Order(id_order), - id_permutation INTEGER NOT NULL, - CONSTRAINT FK_tmp_Supplier_Purchase_Order_Product_Link_id_permutation - FOREIGN KEY (id_permutation) - REFERENCES Shop_Product_Permutation(id_permutation), - cost_total_local REAL NOT NULL, - id_currency_cost INTEGER NOT NULL, - quantity_ordered REAL NOT NULL, - id_unit_quantity INTEGER NOT NULL, - CONSTRAINT FK_tmp_Supplier_Purchase_Order_Product_Link_id_unit_quantity - FOREIGN KEY (id_unit_quantity) - REFERENCES Shop_Unit_Measurement(id_unit_measurement), - quantity_received REAL NULL, - latency_delivery_days INTEGER NOT NULL, - display_order INTEGER NOT NULL - ); - */ - - CREATE TABLE tmp_Shop_Product ( - id_category INTEGER NOT NULL, - CONSTRAINT FK_tmp_Shop_Product_id_category - FOREIGN KEY (id_category) - REFERENCES Shop_Product_Category(id_category), - id_product INTEGER NOT NULL, - CONSTRAINT FK_tmp_Shop_Product_id_product - FOREIGN KEY (id_product) - REFERENCES Shop_Product(id_product), - -- product_has_variations BOOLEAN NOT NULL, - id_permutation INTEGER NULL, - CONSTRAINT FK_tmp_Shop_Product_id_permutation - FOREIGN KEY (id_permutation) - REFERENCES Shop_Product_Permutation(id_permutation), - active_category BOOLEAN NOT NULL, - active_product BOOLEAN NOT NULL, - active_permutation BOOLEAN NULL, - display_order_category INTEGER NOT NULL, - display_order_product INTEGER NOT NULL, - display_order_permutation INTEGER NULL, - rank_permutation INTEGER NOT NULL, -- _in_category - name VARCHAR(255) NOT NULL, - description VARCHAR(4000) NOT NULL, - /* - price_GBP_full REAL NOT NULL, - price_GBP_min REAL NOT NULL, - */ - latency_manufacture INTEGER NOT NULL, - quantity_min REAL NOT NULL, - quantity_max REAL NOT NULL, - quantity_step REAL NOT NULL, - quantity_stock REAL NOT NULL, - is_subscription BOOLEAN NOT NULL, - id_unit_measurement_interval_recurrence INTEGER, - CONSTRAINT FK_tmp_Shop_Product_id_unit_measurement_interval_recurrence - FOREIGN KEY (id_unit_measurement_interval_recurrence) - REFERENCES Shop_Interval_Recurrence(id_interval), - count_interval_recurrence INTEGER, - id_stripe_product VARCHAR(100), - product_has_variations INTEGER NOT NULL, - can_view BOOLEAN, - can_edit BOOLEAN, - can_admin BIT - ); - - /* - CREATE TABLE IF NOT EXISTS tmp_Msg_Error ( - display_order INTEGER NOT NULL PRIMARY KEY GENERATED ALWAYS AS IDENTITY, - guid UUID NOT NULL, - id_type INTEGER 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 - ); - */ - - -- select v_has_filter_product, v_has_filter_permutation; - - IF v_has_filter_supplier THEN - IF EXISTS ( - SELECT * - FROM UNNEST(v_ids_supplier) AS Supplier_Id - LEFT JOIN Shop_Supplier S ON Supplier_Id = S.id_supplier - WHERE ISNULL(S.id_supplier) - LIMIT 1 - ) THEN - RAISE EXCEPTION 'Invalid supplier IDs: %', ( - SELECT STRING_AGG(Supplier_Id, ', ') - FROM UNNEST(v_ids_supplier) AS Supplier_Id - LEFT JOIN Shop_Supplier S ON Supplier_Id = S.id_supplier - WHERE ISNULL(S.id_supplier) - LIMIT 1 - ) - USING ERRCODE = '22000' - ; - ELSE - INSERT INTO tmp_Shop_Supplier ( - id_supplier, - active, - rank_supplier - ) - SELECT - S.id_supplier, - S.active, - RANK() OVER (ORDER BY id_supplier ASC) AS rank_supplier - FROM Shop_Supplier S - INNER JOIN Split_Temp TS ON S.id_supplier = TS.substring - WHERE - ( - v_get_inactive_supplier - OR S.active = TRUE - ) - ; - END IF; - - IF v_get_first_supplier_only THEN - DELETE FROM tmp_Shop_Supplier t_S - WHERE t_S.rank_supplier > ( - SELECT MIN(t_S.rank_supplier) - FROM tmp_Shop_Supplier t_S - ) - ; - END IF; - END IF; - - IF v_has_filter_category = TRUE THEN - IF EXISTS ( - SELECT * - FROM UNNEST(v_ids_category) AS Category_Id - LEFT JOIN Shop_Product_Category C ON Category_Id = C.id_category - WHERE ISNULL(C.id_category) - ) THEN - RAISE EXCEPTION 'Invalid category IDs: %', ( - SELECT STRING_AGG(Category_Id, ', ') - FROM UNNEST(v_ids_category) AS Category_Id - LEFT JOIN Shop_Product_Category C ON Category_Id = C.id_category - WHERE ISNULL(C.id_category) - ) - USING ERRCODE = '22000' - ; - END IF; - END IF; - - IF v_has_filter_product = TRUE THEN - IF EXISTS ( - SELECT * - FROM UNNEST(v_ids_product) AS Product_Id - LEFT JOIN Shop_Product P ON Product_Id = P.id_product - WHERE ISNULL(P.id_product) - LIMIT 1 - ) THEN - RAISE EXCEPTION 'Invalid product IDs: %', ( - SELECT STRING_AGG(Product_Id, ', ') - FROM UNNEST(v_ids_product) AS Product_Id - LEFT JOIN Shop_Product P ON Product_Id = P.id_product - WHERE ISNULL(P.id_product) - ) - USING ERRCODE = '22000' - ; - END IF; - END IF; - - IF v_has_filter_permutation = TRUE THEN - IF EXISTS ( - SELECT * - FROM UNNEST(v_ids_permutation) AS Permutation_Id - LEFT JOIN Shop_Product_Permutation PP ON Permutation_Id = PP.id_permutation - WHERE ISNULL(PP.id_permutation) - LIMIT 1 - ) THEN - RAISE EXCEPTION 'Invalid permutation IDs: %', ( - SELECT STRING_AGG(Permutation_Id, ', ') - FROM UNNEST(v_ids_permutation) AS Permutation_Id - LEFT JOIN Shop_Product_Permutation PP ON Permutation_Id = PP.id_permutation - WHERE ISNULL(PP.id_permutation) - ) - USING ERRCODE = '22000' - ; - END IF; - END IF; - - IF v_has_filter_category = TRUE OR v_has_filter_product = TRUE OR v_has_filter_permutation = TRUE THEN - INSERT INTO tmp_Shop_Product ( - id_category, - id_product, - id_permutation, - active_category, - active_product, - active_permutation, - display_order_category, - display_order_product, - display_order_permutation - -- rank_permutation, - /* - name, - description, - /* - price_GBP_VAT_incl, - price_GBP_VAT_excl, - price_GBP_min, - */ - latency_manufacture, - quantity_min, - quantity_max, - quantity_step, - quantity_stock, - is_subscription, - id_unit_measurement_interval_recurrence, - count_interval_recurrence, - id_stripe_product, - product_has_variations - */ - ) - SELECT - P.id_category, - P.id_product, - -- P.has_variations AS product_has_variations, - PP.id_permutation, - C.active AS active_category, - P.active AS active_product, - PP.active AS active_permutation, - C.display_order AS display_order_category, - P.display_order AS display_order_product, - PP.display_order AS display_order_permutation - -- RANK() OVER (ORDER BY C.display_order, P.display_order, PP.display_order) AS rank_permutation, #PARTITION BY P.id_category -- _in_category - /* - P.name, - PP.description, - /* - PP.price_GBP_VAT_incl, - PP.price_GBP_VAT_excl, - PP.price_GBP_min, - */ - PP.latency_manufacture, - PP.quantity_min, - PP.quantity_max, - PP.quantity_step, - PP.quantity_stock, - PP.is_subscription, - PP.id_unit_measurement_interval_recurrence, - PP.count_interval_recurrence, - PP.id_stripe_product, - P.has_variations - */ - FROM Shop_Product P - INNER JOIN Shop_Product_Permutation PP - ON P.id_product = PP.id_product - INNER JOIN Shop_Product_Category C - ON P.id_category = C.id_category - WHERE - -- permutations - ( - ( - NOT v_has_filter_permutation - OR FIND_IN_SET(PP.id_permutation, v_ids_permutation) > 0 - ) - AND ( - v_get_inactive_permutation - OR PP.active = TRUE - ) - ) - -- categories - AND ( - ( - NOT v_has_filter_category - OR FIND_IN_SET(P.id_category, v_ids_category) > 0 - ) - AND ( - v_get_inactive_category - OR C.active = TRUE - ) - ) - -- products - AND ( - ( - NOT v_has_filter_product - OR FIND_IN_SET(P.id_product, v_ids_product) > 0 - ) - AND ( - v_get_inactive_product - OR P.active = TRUE - ) - ) - ; - END IF; - - -- Get orders - IF v_has_filter_order AND EXISTS ( - -- SELECT * FROM Split_Temp TS LEFT JOIN Shop_Supplier_Purchase_Order SPO ON TS.substring = SPO.id_order WHERE ISNULL(SPO.id_order) - SELECT * - FROM UNNEST(v_ids_order) Order_Id - - ) THEN - RAISE EXCEPTION 'Invalid order IDs: %', ( - SELECT STRING_AGG(TS.substring, ', ') - FROM UNNEST(v_ids_order) - LEFT JOIN Shop_Supplier_Purchase_Order SPO ON TS.substring = SPO.id_order - WHERE ISNULL(SPO.id_order) - ) - USING ERRCODE = '22000' - ; - END IF; - - INSERT INTO tmp_Shop_Supplier_Purchase_Order ( -- _Product_Link - id_order, - -- active, - rank_order - ) - SELECT - SPO.id_order, - -- SPO.active, - RANK() OVER (ORDER BY SPO.id_order ASC) AS rank_order - FROM Shop_Supplier_Purchase_Order SPO - -- INNER JOIN Split_Temp TS ON SPO.id_order = TS.substring - INNER JOIN Shop_Supplier_Purchase_Order_Product_Link SPOPL ON SPO.id_order = SPOPL.id_order - INNER JOIN Shop_Supplier S ON SPO.id_supplier_ordered = S.id_supplier - INNER JOIN Shop_Product_Permutation PP ON SPOPL.id_permutation = PP.id_permutation - INNER JOIN Shop_Product P ON PP.id_product = P.id_product - INNER JOIN Shop_Product_Category C ON P.id_category = C.id_category - LEFT JOIN tmp_Shop_Product t_P ON SPOPL.id_permutation = t_P.id_permutation - LEFT JOIN tmp_Shop_Supplier t_S ON SPO.id_supplier_ordered = t_S.id_supplier - WHERE - -- supplier - ( - v_has_filter_supplier = FALSE - OR NOT ISNULL(t_S.id_supplier) -- SPO.id_supplier_ordered IN (SELECT DISTINCT id_supplier FROM tmp_Shop_Supplier) - ) - -- order - AND ( - ( - v_has_filter_order = FALSE - OR ( - -- ID - -- FIND_IN_SET(SPO.id_order, v_ids_order) > 0 - SPO.id_order = ANY(v_ids_order) - -- date - AND ( - ( - v_has_filter_date_from = FALSE - OR SPO.created_on > v_date_from - ) - AND ( - v_has_filter_date_to = FALSE - OR SPO.created_on < v_date_to - ) - ) - ) - ) - -- active - /* - AND ( - v_get_inactive_order - OR SPO.active = TRUE - ) - */ - ) - -- permutations - AND ( - ( - v_has_filter_category = FALSE - AND v_has_filter_product = FALSE - AND v_has_filter_permutation = FALSE - ) - OR NOT ISNULL(t_P.id_permutation) -- SPO.id_permutation IN (SELECT DISTINCT id_permutation FROM tmp_Shop_Product) - ) - ; - - IF v_get_first_order_only THEN - DELETE FROM tmp_Shop_Supplier_Purchase_Order t_SPO - WHERE t_SPO.rank_order > ( - SELECT MIN(t_SPO.rank_order) - FROM tmp_Shop_Supplier_Purchase_Order t_SPO - ) - ; - END IF; - - -- Permissions - -- v_id_user := (SELECT id_user FROM Shop_User WHERE name = CURRENT_USER); - v_ids_permission_supplier_purchase_order := (SELECT STRING_AGG(id_permission, ',') FROM Shop_Permission WHERE code IN ('STORE_SUPPLIER', 'STORE_SUPPLIER_PURCHASE_ORDER')); - -- v_ids_permutation_permission := (SELECT STRING_AGG(id_permutation, ',') FROM tmp_Shop_Product WHERE NOT ISNULL(id_permutation)); - v_ids_product_permission := (SELECT STRING_AGG(DISTINCT t_P.id_product, ',') FROM tmp_Shop_Product t_P WHERE NOT ISNULL(t_P.id_product)); - - -- SELECT v_guid, v_id_user, false, v_id_permission_product, v_id_access_level_view, v_ids_permutation_permission; - -- select * from Shop_Calc_User_Temp; - - CALL p_shop_calc_user(v_guid, v_id_user, FALSE, v_ids_permission_supplier_purchase_order, v_id_access_level_view, v_ids_product_permission); - - -- select * from Shop_Calc_User_Temp; - - IF NOT EXISTS (SELECT can_view FROM Shop_Calc_User_Temp UE_T WHERE UE_T.GUID = v_guid) THEN - RAISE EXCEPTION 'You do not have view permissions for %', ( - SELECT STRING_AGG(name, ', ') - FROM Shop_Permission - WHERE id_permission = v_ids_permission_supplier_purchase_order - ) - USING ERRCODE = '42501' - ; - END IF; - - - UPDATE tmp_Shop_Product t_P - SET t_P.can_view = UE_T.can_view, - t_P.can_edit = UE_T.can_edit, - t_P.can_admin = UE_T.can_admin - FROM tmp_Shop_Product t_P - INNER JOIN Shop_Calc_User_Temp UE_T - ON t_P.id_product = UE_T.id_product -- t_P.id_permutation = UE_T.id_permutation - AND UE_T.GUID = v_guid - ; - - -- CALL p_shop_clear_calc_user(v_guid); - -- DROP TABLE IF EXISTS Shop_Calc_User_Temp; - DELETE FROM Shop_Calc_User_Temp - WHERE GUID = v_guid - ; - - - -- select * from tmp_Shop_Product; - - -- Returns - -- v_now := CURRENT_TIMESTAMP; - - -- Suppliers - OPEN result_suppliers FOR - SELECT - t_S.id_supplier, - S.name_company, - S.name_contact, - S.department_contact, - S.id_address, - S.phone_number, - S.fax, - S.email, - S.website, - S.id_currency, - t_S.active - FROM tmp_Shop_Supplier t_S - INNER JOIN Shop_Supplier S - ON t_S.id_supplier = S.id_supplier - ; - RETURN NEXT result_suppliers; - - -- Supplier Purchase Order - OPEN result_orders FOR - SELECT -- * - t_SPO.id_order, - SPO.id_supplier_ordered, - SPO.cost_total_local, - SPO.id_currency_cost, - t_SPO.active - FROM Shop_Supplier_Purchase_Order SPO - INNER JOIN tmp_Shop_Supplier_Purchase_Order t_SPO ON SPO.id_order = t_SPO.id_order - ; - RETURN NEXT result_orders; - - -- Supplier Purchase Order Product Link - OPEN result_order_product_links FOR - SELECT - SPOPL.id_link, - SPOPL.id_order, - SPOPL.id_permutation, - P.name as name_product, - SPOPL.cost_total_local, - SPOPL.id_currency_cost, - SPOPL.quantity_ordered, - SPOPL.id_unit_quantity, - SPOPL.quantity_received, - SPOPL.latency_delivery_days, - SPOPL.display_order - FROM Shop_Supplier_Purchase_Order_Product_Link SPOPL - -- INNER JOIN tmp_Shop_Supplier_Purchase_Order_Product_Link t_SPOPL ON SPOPL.id_link = t_SPOPL.id_link - INNER JOIN tmp_Shop_Supplier_Purchase_Order t_SPO ON SPOPL.id_order = t_SPO.id_order - INNER JOIN Shop_Product_Permutation PP ON SPOPL.id_permutation = PP.id_permutation - INNER JOIN Shop_Product P ON PP.id_product = P.id_product - INNER JOIN Shop_Product_Category C ON P.id_category = C.id_category - ORDER BY SPOPL.id_order, C.display_order, P.display_order, PP.display_order - ; - RETURN NEXT result_order_product_links; - - -- Errors - /* - SELECT - /* - t_ME.display_order, - t_ME.guid, - t_ME.id_type, - t_ME.msg, - MET.code, - MET.name, - MET.description - */ - * - FROM tmp_Msg_Error t_ME - INNER JOIN Shop_Msg_Error_Type MET - ON t_ME.id_type = MET.id_type - WHERE guid = v_guid - ; - */ - - /* - OPEN result_errors FOR - SELECT * - FROM tmp_Msg_Error - ; - -- RETURN NEXT result_errors; - */ - - - /* - -- Return arguments for test - SELECT - v_ids_category, - v_get_inactive_category, - v_ids_product, - v_get_inactive_product, - v_get_first_product_only, - v_get_all_product, - v_ids_image, - v_get_inactive_image, - v_get_first_image_only, - v_get_all_image - ; - */ - - -- select 'other outputs'; - -- select * from tmp_Shop_Product; - - -- Clean up - DROP TABLE IF EXISTS tmp_Shop_Supplier_Purchase_Order_Product_Link; - DROP TABLE IF EXISTS tmp_Shop_Supplier_Purchase_Order; - DROP TABLE IF EXISTS tmp_Shop_Supplier; - DROP TABLE IF EXISTS tmp_Shop_Product; - - DELETE FROM Shop_Calc_User_Temp - WHERE GUID = v_guid - ; -END; -$$ LANGUAGE plpgsql; - - -/* - -DROP FUNCTION IF EXISTS fetch_results; - -CREATE OR REPLACE FUNCTION fetch_results() -RETURNS VOID AS $$ -DECLARE - curs refcursor; - rec record; -BEGIN - FOR curs IN SELECT p_shop_get_many_supplier_purchase_order ( - '', -- a_id_user - TRUE, -- a_get_all_supplier - FALSE, -- a_get_inactive_supplier - FALSE, -- a_get_first_supplier_only - '', -- a_ids_supplier - TRUE, -- a_get_all_order - -- FALSE, -- a_get_inactive_order - FALSE, -- a_get_first_order_only - '', -- a_ids_order - FALSE, -- a_get_inactive_category - '', -- a_ids_category - FALSE, -- a_get_inactive_product - '', -- a_ids_product - FALSE, -- a_get_inactive_permutation - '', -- a_ids_permutation - NULL, -- a_date_from - NULL -- a_date_to - ) LOOP - RAISE NOTICE 'Fetching from cursor: %', curs; - LOOP - FETCH curs INTO rec; - EXIT WHEN NOT FOUND; - RAISE NOTICE 'Record: %', rec; - END LOOP; - END LOOP; -END; -$$ LANGUAGE plpgsql; - -SELECT fetch_results(); - -*/ - diff --git a/static/PostgreSQL/708_p_shop_get_many_manufacturing_purchase_order.sql b/static/PostgreSQL/708_p_shop_get_many_manufacturing_purchase_order.sql deleted file mode 100644 index adad5f6c..00000000 --- a/static/PostgreSQL/708_p_shop_get_many_manufacturing_purchase_order.sql +++ /dev/null @@ -1,601 +0,0 @@ - - -CREATE OR REPLACE FUNCTION p_shop_get_many_manufacturing_purchase_order ( - IN a_id_user INTEGER, - IN a_get_all_order BOOLEAN, - IN a_get_inactive_order BOOLEAN, - IN a_get_first_order_only BOOLEAN, - IN a_ids_order INTEGER[], - IN a_get_inactive_category BOOLEAN, - IN a_ids_category INTEGER[], - IN a_get_inactive_product BOOLEAN, - IN a_ids_product INTEGER[], - IN a_get_inactive_permutation BOOLEAN, - IN a_ids_permutation INTEGER[], - IN a_date_from TIMESTAMP, - IN a_date_to TIMESTAMP -) -RETURNS SETOF REFCURSOR -AS $$ -DECLARE - v_id_user INTEGER; - v_get_all_order BOOLEAN; - v_get_inactive_order BOOLEAN; - v_get_first_order_only BOOLEAN; - v_ids_order INTEGER[]; - v_get_inactive_category BOOLEAN; - v_ids_category INTEGER[]; - v_get_inactive_product BOOLEAN; - v_ids_product INTEGER[]; - v_get_inactive_permutation BOOLEAN; - v_ids_permutation INTEGER[]; - v_date_from TIMESTAMP; - v_date_to TIMESTAMP; - v_has_filter_order BOOLEAN; - v_has_filter_category BOOLEAN; - v_has_filter_product BOOLEAN; - v_has_filter_permutation BOOLEAN; - v_has_filter_date_from BOOLEAN; - v_has_filter_date_to BOOLEAN; - v_guid UUID; - v_id_access_level_view INTEGER; - v_code_error_data VARCHAR(50); - v_id_type_error_data INTEGER; - v_ids_permission_manufacturing_purchase_order VARCHAR(4000); - v_ids_product_permission INTEGER[]; - result_orders REFCURSOR; - result_order_product_links REFCURSOR; - result_errors REFCURSOR; -BEGIN - v_id_user := TRIM(COALESCE(a_id_user, '')); - v_get_all_order := COALESCE(a_get_all_order, TRUE); - v_get_inactive_order := COALESCE(a_get_inactive_order, FALSE); - v_get_first_order_only := COALESCE(a_get_first_order_only, FALSE); - v_ids_order := TRIM(COALESCE(a_ids_order, '')); - v_get_inactive_category := COALESCE(a_get_inactive_category, FALSE); - v_ids_category := TRIM(COALESCE(a_ids_category, '')); - v_get_inactive_product := COALESCE(a_get_inactive_product, FALSE); - v_ids_product := TRIM(COALESCE(a_ids_product, '')); - v_get_inactive_permutation := COALESCE(a_get_inactive_permutation, FALSE); - v_ids_permutation := TRIM(COALESCE(a_ids_permutation, '')); - v_date_from := a_date_from; - v_date_to := a_date_to; - - v_guid := gen_random_uuid(); - v_id_access_level_view := (SELECT id_access_level FROM Shop_Access_Level WHERE code = 'VIEW' LIMIT 1); - -- v_ids_permission_manufacturing_purchase_order := (SELECT id_permission FROM Shop_Permission WHERE code = 'SHOP_manufacturing_PURCHASE_ORDER' LIMIT 1); - v_code_error_data = 'BAD_DATA'; - v_id_type_error_data := (SELECT id_type FROM Shop_Msg_Error_Type WHERE code = v_code_error_data); - - v_has_filter_order = CASE WHEN v_ids_order = '' THEN FALSE ELSE TRUE END; - v_has_filter_category = CASE WHEN v_ids_category = '' THEN FALSE ELSE TRUE END; - v_has_filter_product = CASE WHEN v_ids_product = '' THEN FALSE ELSE TRUE END; - v_has_filter_permutation = CASE WHEN v_ids_permutation = '' THEN FALSE ELSE TRUE END; - v_has_filter_date_from = CASE WHEN ISNULL(v_date_from) THEN FALSE ELSE TRUE END; - v_has_filter_date_to = CASE WHEN ISNULL(v_date_to) THEN FALSE ELSE TRUE END; - - - -- Temporary tables - DROP TABLE IF EXISTS tmp_Shop_Manufacturing_Purchase_Order_Product_Link; - DROP TABLE IF EXISTS tmp_Shop_Manufacturing_Purchase_Order; - DROP TABLE IF EXISTS tmp_Shop_Product; - - CREATE TABLE tmp_Shop_Manufacturing_Purchase_Order ( - id_order INTEGER NOT NULL PRIMARY KEY, - /* - id_supplier_ordered INTEGER NOT NULL, - CONSTRAINT FK_tmp_Shop_Manufacturing_Purchase_Order_id_supplier_ordered - FOREIGN KEY (id_supplier_ordered) - REFERENCES Shop_Supplier(id_supplier), - */ - cost_total_local REAL NOT NULL, - id_currency_cost INTEGER NOT NULL, - value_produced_total_local REAL NOT NULL, - active BOOLEAN NOT NULL, - rank_order INTEGER NOT NULL - ); - - /* - CREATE TABLE tmp_Shop_Manufacturing_Purchase_Order_Product_Link ( - id_link INTEGER NOT NULL PRIMARY KEY, - id_order INTEGER NOT NULL, - CONSTRAINT FK_tmp_manufacturing_Purchase_Order_Product_Link_id_order - FOREIGN KEY (id_order) - REFERENCES Shop_manufacturing_Purchase_Order(id_order), - id_permutation INTEGER NOT NULL, - CONSTRAINT FK_tmp_manufacturing_Purchase_Order_Product_Link_id_permutation - FOREIGN KEY (id_permutation) - REFERENCES Shop_Product_Permutation(id_permutation), - cost_total_local REAL NOT NULL, - id_currency_cost INTEGER NOT NULL, - quantity_used REAL NOT NULL, - id_unit_quantity INTEGER NOT NULL, - CONSTRAINT FK_tmp_manufacturing_Purchase_Order_Product_Link_id_unit_quantity - FOREIGN KEY (id_unit_quantity) - REFERENCES Shop_Unit_Measurement(id_unit_measurement), - quantity_produced REAL NULL, - latency_delivery_days INTEGER NOT NULL, - display_order INTEGER NOT NULL - ); - */ - - CREATE TABLE tmp_Shop_Product ( - id_category INTEGER NOT NULL, - CONSTRAINT FK_tmp_Shop_Product_id_category - FOREIGN KEY (id_category) - REFERENCES Shop_Product_Category(id_category), - id_product INTEGER NOT NULL, - CONSTRAINT FK_tmp_Shop_Product_id_product - FOREIGN KEY (id_product) - REFERENCES Shop_Product(id_product), - -- product_has_variations BOOLEAN NOT NULL, - id_permutation INTEGER NULL, - CONSTRAINT FK_tmp_Shop_Product_id_permutation - FOREIGN KEY (id_permutation) - REFERENCES Shop_Product_Permutation(id_permutation), - active_category BOOLEAN NOT NULL, - active_product BOOLEAN NOT NULL, - active_permutation BOOLEAN NULL, - display_order_category INTEGER NOT NULL, - display_order_product INTEGER NOT NULL, - display_order_permutation INTEGER NULL, - rank_permutation INTEGER NOT NULL, -- _in_category - -- name VARCHAR(255) NOT NULL, - -- description VARCHAR(4000) NOT NULL, - /* - price_GBP_full REAL NOT NULL, - price_GBP_min REAL NOT NULL, - */ - /* - latency_manufacture INTEGER NOT NULL, - quantity_min REAL NOT NULL, - quantity_max REAL NOT NULL, - quantity_step REAL NOT NULL, - quantity_stock REAL NOT NULL, - is_subscription BOOLEAN NOT NULL, - id_unit_measurement_interval_recurrence INTEGER, - CONSTRAINT FK_tmp_Shop_Product_id_unit_measurement_interval_recurrence - FOREIGN KEY (id_unit_measurement_interval_recurrence) - REFERENCES Shop_Interval_Recurrence(id_interval), - count_interval_recurrence INTEGER, - id_stripe_product VARCHAR(100), - product_has_variations INTEGER NOT NULL, - */ - can_view BOOLEAN, - can_edit BOOLEAN, - can_admin BIT - ); - - /* - CREATE TABLE IF NOT EXISTS tmp_Msg_Error ( - display_order INTEGER NOT NULL PRIMARY KEY GENERATED ALWAYS AS IDENTITY, - guid UUID NOT NULL, - id_type INTEGER 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 - ); - */ - - -- select v_has_filter_product, v_has_filter_permutation; - - IF v_has_filter_category = TRUE AND EXISTS ( - SELECT * - FROM UNNEST(v_ids_category) AS Category_Id - LEFT JOIN Shop_Product_Category C ON Category_Id = C.id_category - WHERE ISNULL(C.id_category) - ) THEN - RAISE EXCEPTION 'Invalid category IDs: %', ( - SELECT COALESCE(STRING_AGG(Category_Id, ', ') ,'NULL') - FROM UNNEST(v_ids_category) AS Category_Id - LEFT JOIN Shop_Product_Category C ON Category_Id = C.id_category - WHERE ISNULL(C.id_category) - ) - USING ERRCODE = '22000' - ; - END IF; - - IF v_has_filter_product = TRUE AND EXISTS ( - SELECT * - FROM UNNEST(v_ids_product) AS Product_Id - LEFT JOIN Shop_Product P ON Product_Id = P.id_product - WHERE ISNULL(P.id_product) - LIMIT 1 - ) THEN - RAISE EXCEPTION 'Invalid product IDs: %', ( - SELECT COALESCE(STRING_AGG(Product_Id, ', ') ,'NULL') - FROM UNNEST(v_ids_product) AS Product_Id - LEFT JOIN Shop_Product P ON Product_Id = P.id_product - WHERE ISNULL(P.id_product) - ) - USING ERRCODE = '22000' - ; - END IF; - - IF v_has_filter_permutation = TRUE AND EXISTS ( - SELECT * - FROM UNNEST(v_ids_permutation) AS Permutation_Id - LEFT JOIN Shop_Product_Permutation PP ON Permutation_Id = PP.id_permutation - WHERE ISNULL(PP.id_permutation) - LIMIT 1 - ) THEN - RAISE EXCEPTION 'Invalid permutation IDs: %', ( - SELECT STRING_AGG(Permutation_Id, ', ') - FROM UNNEST(v_ids_permutation) AS Permutation_Id - LEFT JOIN Shop_Product_Permutation PP ON Permutation_Id = PP.id_permutation - WHERE ISNULL(PP.id_permutation) - ) - USING ERRCODE = '22000' - ; - END IF; - - IF v_has_filter_category = TRUE OR v_has_filter_product = TRUE OR v_has_filter_permutation = TRUE THEN - INSERT INTO tmp_Shop_Product ( - id_category, - id_product, - id_permutation, - active_category, - active_product, - active_permutation, - display_order_category, - display_order_product, - display_order_permutation - -- rank_permutation, - /* - name, - description, - /* - price_GBP_VAT_incl, - price_GBP_VAT_excl, - price_GBP_min, - */ - latency_manufacture, - quantity_min, - quantity_max, - quantity_step, - quantity_stock, - is_subscription, - id_unit_measurement_interval_recurrence, - count_interval_recurrence, - id_stripe_product, - product_has_variations - */ - ) - SELECT - P.id_category, - P.id_product, - -- P.has_variations AS product_has_variations, - PP.id_permutation, - C.active AS active_category, - P.active AS active_product, - PP.active AS active_permutation, - C.display_order AS display_order_category, - P.display_order AS display_order_product, - PP.display_order AS display_order_permutation - -- RANK() OVER (ORDER BY C.display_order, P.display_order, PP.display_order) AS rank_permutation, #PARTITION BY P.id_category -- _in_category - /* - P.name, - PP.description, - /* - PP.price_GBP_VAT_incl, - PP.price_GBP_VAT_excl, - PP.price_GBP_min, - */ - PP.latency_manufacture, - PP.quantity_min, - PP.quantity_max, - PP.quantity_step, - PP.quantity_stock, - PP.is_subscription, - PP.id_unit_measurement_interval_recurrence, - PP.count_interval_recurrence, - PP.id_stripe_product, - P.has_variations - */ - FROM Shop_Product P - INNER JOIN Shop_Product_Permutation PP - ON P.id_product = PP.id_product - INNER JOIN Shop_Product_Category C - ON P.id_category = C.id_category - WHERE - -- permutations - ( - ( - NOT v_has_filter_permutation - OR FIND_IN_SET(PP.id_permutation, v_ids_permutation) > 0 - ) - AND ( - v_get_inactive_permutation - OR PP.active = TRUE - ) - ) - -- categories - AND ( - ( - NOT v_has_filter_category - OR FIND_IN_SET(P.id_category, v_ids_category) > 0 - ) - AND ( - v_get_inactive_category - OR C.active = TRUE - ) - ) - -- products - AND ( - ( - NOT v_has_filter_product - OR FIND_IN_SET(P.id_product, v_ids_product) > 0 - ) - AND ( - v_get_inactive_product - OR P.active = TRUE - ) - ) - ; - END IF; - - -- Get orders - IF v_has_filter_order AND EXISTS ( - SELECT * - FROM UNNEST(v_ids_order) AS Order_Id - LEFT JOIN Shop_Manufacturing_Purchase_Order MPO ON Order_Id = MPO.id_order - WHERE ISNULL(MPO.id_order) - LIMIT 1 - ) THEN - RAISE EXCEPTION 'Invalid order IDs: %', ( - SELECT STRING_AGG(Order_Id, ', ') - FROM UNNEST(v_ids_order) AS Order_Id - LEFT JOIN Shop_Manufacturing_Purchase_Order MPO ON Order_Id = MPO.id_order - WHERE ISNULL(MPO.id_order) - ) - USING ERRCODE = '22000' - ; - END IF; - - INSERT INTO tmp_Shop_Manufacturing_Purchase_Order ( -- _Product_Link - id_order, - -- active, - rank_order - ) - SELECT - MPO.id_order, - -- MPO.active, - RANK() OVER (ORDER BY MPO.id_order ASC) AS rank_order - FROM Shop_Manufacturing_Purchase_Order MPO - -- INNER JOIN Split_Temp TS ON MPO.id_order = TS.substring - INNER JOIN Shop_manufacturing_Purchase_Order_Product_Link MPOPL ON MPO.id_order = MPOPL.id_order - INNER JOIN Shop_Product_Permutation PP ON MPOPL.id_permutation = PP.id_permutation - INNER JOIN Shop_Product P ON PP.id_product = P.id_product - INNER JOIN Shop_Product_Category C ON P.id_category = C.id_category - LEFT JOIN tmp_Shop_Product t_P ON MPOPL.id_permutation = t_P.id_permutation - WHERE - -- order - ( - ( - v_has_filter_order = 0 - OR ( - -- ID - -- FIND_IN_SET(MPO.id_order, v_ids_order) > 0 - MPO.id_order = ANY(v_ids_order) - -- date - AND ( - ( - v_has_filter_date_from = 0 - OR MPO.created_on > v_date_from - ) - AND ( - v_has_filter_date_to = 0 - OR MPO.created_on < v_date_to - ) - ) - ) - ) - -- active - /* - AND ( - v_get_inactive_order - OR MPO.active = TRUE - ) - */ - ) - -- permutations - AND ( - ( - v_has_filter_category = FALSE - AND v_has_filter_product = FALSE - AND v_has_filter_permutation = 0 - ) - OR NOT ISNULL(t_P.id_permutation) -- MPO.id_permutation IN (SELECT DISTINCT id_permutation FROM tmp_Shop_Product) - ) - ; - - IF v_get_first_order_only THEN - DELETE FROM tmp_Shop_Manufacturing_Purchase_Order t_MPO - WHERE t_MPO.rank_order > ( - SELECT MIN(t_MPO.rank_order) - FROM tmp_Shop_Manufacturing_Purchase_Order t_MPO - ) - ; - END IF; - - -- Permissions - -- v_id_user := (SELECT id_user FROM Shop_User WHERE name = CURRENT_USER); - v_ids_permission_manufacturing_purchase_order := (SELECT STRING_AGG(id_permission, ',') FROM Shop_Permission WHERE code IN ('STORE_manufacturing', 'STORE_manufacturing_PURCHASE_ORDER')); - -- v_ids_permutation_permission := (SELECT STRING_AGG(id_permutation, ',') FROM tmp_Shop_Product WHERE NOT ISNULL(id_permutation)); - v_ids_product_permission := (SELECT STRING_AGG(P.id_product, ',') FROM (SELECT DISTINCT id_product FROM tmp_Shop_Product WHERE NOT ISNULL(id_product)) P); - - -- SELECT v_guid, v_id_user, false, v_id_permission_product, v_id_access_level_view, v_ids_permutation_permission; - -- select * from Shop_Calc_User_Temp; - - CALL p_shop_calc_user(v_guid, v_id_user, FALSE, v_ids_permission_manufacturing_purchase_order, v_id_access_level_view, v_ids_product_permission); - - -- select * from Shop_Calc_User_Temp; - - IF NOT EXISTS (SELECT can_view FROM Shop_Calc_User_Temp UE_T WHERE UE_T.GUID = v_guid) THEN - RAISE EXCEPTION 'You do not have view permissions for %', ( - SELECT STRING_AGG(name, ', ') - FROM Shop_Permission - WHERE id_permission = v_ids_permission_manufacturing_purchase_order - ) - USING ERRCODE = '42501' - ; - END IF; - - - UPDATE tmp_Shop_Product t_P - SET t_P.can_view = UE_T.can_view, - t_P.can_edit = UE_T.can_edit, - t_P.can_admin = UE_T.can_admin - FROM tmp_Shop_Product t_P - INNER JOIN Shop_Calc_User_Temp UE_T - ON t_P.id_product = UE_T.id_product -- t_P.id_permutation = UE_T.id_permutation - AND UE_T.GUID = v_guid - ; - - -- CALL p_shop_clear_calc_user(v_guid); - -- DROP TABLE IF EXISTS Shop_Calc_User_Temp; - DELETE FROM Shop_Calc_User_Temp - WHERE GUID = v_guid - ; - - - -- select * from tmp_Shop_Product; - - -- Returns - - -- manufacturing Purchase Order - OPEN result_orders FOR - SELECT -- * - t_MPO.id_order, - MPO.cost_total_local, - MPO.id_currency_cost, - MPO.value_produced_total_local, - t_MPO.active - FROM Shop_Manufacturing_Purchase_Order MPO - INNER JOIN tmp_Shop_Manufacturing_Purchase_Order t_MPO ON MPO.id_order = t_MPO.id_order - ; - RETURN NEXT result_orders; - - -- manufacturing Purchase Order Product Link - OPEN result_order_product_links FOR - SELECT - MPOPL.id_link, - MPOPL.id_order, - MPOPL.id_permutation, - P.name as name_product, - MPOPL.cost_total_local, - MPOPL.id_currency_cost, - MPOPL.value_produced_total_local, - MPOPL.quantity_used, - MPOPL.id_unit_quantity, - MPOPL.quantity_produced, - MPOPL.latency_manufacture, - MPOPL.display_order - FROM Shop_manufacturing_Purchase_Order_Product_Link MPOPL - -- INNER JOIN tmp_Shop_Manufacturing_Purchase_Order_Product_Link t_MPOPL ON MPOPL.id_link = t_MPOPL.id_link - INNER JOIN tmp_Shop_Manufacturing_Purchase_Order t_MPO ON MPOPL.id_order = t_MPO.id_order - INNER JOIN Shop_Product_Permutation PP ON MPOPL.id_permutation = PP.id_permutation - INNER JOIN Shop_Product P ON PP.id_product = P.id_product - INNER JOIN Shop_Product_Category C ON P.id_category = C.id_category - ORDER BY MPOPL.id_order, C.display_order, P.display_order, PP.display_order - ; - RETURN NEXT result_order_product_links; - - -- Errors - /* - SELECT - /* - t_ME.display_order, - t_ME.guid, - t_ME.id_type, - t_ME.msg, - MET.code, - MET.name, - MET.description - */ - * - FROM tmp_Msg_Error t_ME - INNER JOIN Shop_Msg_Error_Type MET - ON t_ME.id_type = MET.id_type - WHERE guid = v_guid - ; - OPEN result_errors FOR - SELECT * - FROM tmp_Msg_Error - ; - -- RETURN NEXT result_errors; - */ - - /* - -- Return arguments for test - SELECT - v_ids_category, - v_get_inactive_category, - v_ids_product, - v_get_inactive_product, - v_get_first_product_only, - v_get_all_product, - v_ids_image, - v_get_inactive_image, - v_get_first_image_only, - v_get_all_image - ; - */ - - -- select 'other outputs'; - -- select * from tmp_Shop_Product; - - -- Clean up - DROP TABLE IF EXISTS tmp_Shop_Manufacturing_Purchase_Order_Product_Link; - DROP TABLE IF EXISTS tmp_Shop_Manufacturing_Purchase_Order; - DROP TABLE IF EXISTS tmp_Shop_Product; - - DELETE FROM Shop_Calc_User_Temp - WHERE GUID = v_guid - ; -END; -$$ LANGUAGE plpgsql; - - -/* - - -DROP FUNCTION IF EXISTS fetch_results; - -CREATE OR REPLACE FUNCTION fetch_results() -RETURNS VOID AS $$ -DECLARE - curs refcursor; - rec record; -BEGIN - FOR curs IN SELECT p_shop_get_many_manufacturing_purchase_order ( - '', -- a_id_user - TRUE, -- a_get_all_order - FALSE, -- a_get_inactive_order - FALSE, -- a_get_first_order_only - '', -- a_ids_order - FALSE, -- a_get_inactive_category - '', -- a_ids_category - FALSE, -- a_get_inactive_product - '', -- a_ids_product - FALSE, -- a_get_inactive_permutation - '', -- a_ids_permutation - NULL, -- a_date_from - NULL -- a_date_to - ) LOOP - RAISE NOTICE 'Fetching from cursor: %', curs; - LOOP - FETCH curs INTO rec; - EXIT WHEN NOT FOUND; - RAISE NOTICE 'Record: %', rec; - END LOOP; - END LOOP; -END; -$$ LANGUAGE plpgsql; - -SELECT fetch_results(); - -*/ - diff --git a/static/PostgreSQL/709_p_shop_get_many_customer.sql b/static/PostgreSQL/709_p_shop_get_many_customer.sql deleted file mode 100644 index d75d1f02..00000000 --- a/static/PostgreSQL/709_p_shop_get_many_customer.sql +++ /dev/null @@ -1,249 +0,0 @@ - - -CREATE OR REPLACE FUNCTION p_shop_get_many_customer ( - IN a_id_user INTEGER, - IN a_get_all_customer BOOLEAN, - IN a_get_inactive_customer BOOLEAN, - IN a_get_first_customer_only BOOLEAN, - IN a_ids_customer INTEGER[] -) -RETURNS SETOF REFCURSOR -AS $$ -DECLARE - v_id_user INTEGER; - v_get_all_customer BOOLEAN; - v_get_inactive_customer BOOLEAN; - v_get_first_customer_only BOOLEAN; - v_ids_customer INTEGER[]; - v_has_filter_customer BOOLEAN; - v_guid UUID; - v_id_permission_customer INTEGER; - v_id_access_level_view INTEGER; - v_id_error_type_bad_data INTEGER; - v_code_error_type_bad_data VARCHAR(50); - result_customers REFCURSOR; - -- result_errors REFCURSOR; -BEGIN - v_id_user := TRIM(COALESCE(a_id_user, '')); - v_get_inactive_customer := COALESCE(a_get_inactive_customer, FALSE); - v_get_first_customer_only := COALESCE(a_get_first_customer_only, FALSE); - v_ids_customer := TRIM(COALESCE(a_ids_customer, '')); - v_get_all_customer := COALESCE(a_get_all_customer, CASE WHEN v_ids_customer = '' THEN TRUE ELSE FALSE END); - - - v_code_error_type_bad_data = 'BAD_DATA'; - v_id_error_type_bad_data := (SELECT id_type FROM Shop_Msg_Error_Type WHERE code = v_code_error_type_bad_data LIMIT 1); - v_guid := gen_random_uuid(); - v_id_access_level_view := (SELECT id_access_level FROM Shop_Access_Level WHERE code = 'VIEW'); - - v_has_filter_customer = CASE WHEN a_ids_customer = '' THEN FALSE ELSE TRUE END; - - -- Temporary tables - DROP TABLE IF EXISTS tmp_Shop_Customer; - - CREATE TABLE tmp_Shop_Customer ( - id_customer INTEGER NOT NULL, - CONSTRAINT FK_tmp_Shop_Customer_id_customer - FOREIGN KEY (id_customer) - REFERENCES Shop_Customer(id_customer), - active BOOLEAN NOT NULL, - rank_customer INTEGER NULL, - can_view BOOLEAN, - can_edit BOOLEAN, - can_admin BIT - ); - - /* - CREATE TABLE IF NOT EXISTS tmp_Msg_Error ( - display_order INTEGER NOT NULL PRIMARY KEY GENERATED ALWAYS AS IDENTITY, - guid UUID NOT NULL, - id_type INTEGER 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 - ); - */ - - -- select v_has_filter_product, v_has_filter_permutation; - - IF v_has_filter_customer = TRUE OR a_get_all_customer = TRUE THEN - IF EXISTS ( - SELECT * - FROM UNNEST(v_ids_customer) AS Customer_Id - LEFT JOIN Shop_Customer C ON Customer_Id = C.id_customer - WHERE ISNULL(C.id_customer) - ) THEN - RAISE EXCEPTION 'Invalid customer IDs: %', ( - SELECT STRING_AGG(Customer_Id, ', ') - FROM UNNEST(v_ids_customer) AS Customer_Id - LEFT JOIN Shop_Customer C ON Customer_Id = C.id_customer - WHERE ISNULL(C.id_customer) - LIMIT 1 - ) - USING ERRCODE = '22000' - ; - ELSE - INSERT INTO tmp_Shop_Customer ( - id_customer, - active, - rank_customer - ) - SELECT - C.id_customer, - C.active, - RANK() OVER (ORDER BY C.id_customer ASC) AS rank_customer - FROM Shop_Customer C - LEFT JOIN Split_Temp S_T ON C.id_customer = S_T.substring - WHERE - ( - a_get_all_customer = 1 - OR NOT ISNULL(S_T.substring) - ) - AND ( - a_get_inactive_customer = 1 - OR C.active = TRUE - ) - ; - END IF; - - IF a_get_first_customer_only = TRUE THEN - DELETE FROM tmp_Shop_Customer t_C - WHERE t_C.rank_customer > ( - SELECT MIN(t_C.rank_customer) - FROM tmp_Shop_Customer t_C - ) - ; - END IF; - END IF; - - -- Permissions - -- v_id_user := (SELECT id_user FROM Shop_User WHERE name = CURRENT_USER); - v_id_permission_customer := (SELECT id_permission FROM Shop_Permission WHERE code = 'STORE_CUSTOMER' LIMIT 1); - - -- SELECT v_guid, a_id_user, false, v_id_permission_product, v_id_access_level_view, v_ids_permutation_permission; - -- select * from Shop_Calc_User_Temp; - - CALL p_shop_calc_user(v_guid, a_id_user, FALSE, v_id_permission_customer, v_id_access_level_view, ''); - - -- select * from Shop_Calc_User_Temp; - - IF NOT EXISTS (SELECT can_view FROM Shop_Calc_User_Temp UE_T WHERE UE_T.GUID = v_guid) THEN - RAISE EXCEPTION 'You do not have view permissions for %', ( - SELECT COALESCE(STRING_AGG(name, ', '), 'NULL') - FROM Shop_Permission - WHERE id_permission = v_id_permission_customer - ) - USING ERRCODE = '42501' - ; - END IF; - - - -- select * from tmp_Shop_Product; - - -- Returns - -- v_now := CURRENT_TIMESTAMP; - - -- customers - OPEN result_customers FOR - SELECT - t_C.id_customer, - C.name_company, - C.name_contact, - C.department_contact, - C.id_address, - C.phone_number, - C.email, - C.id_currency, - C.active - FROM tmp_Shop_Customer t_C - INNER JOIN Shop_Customer C ON t_C.id_customer = C.id_customer - ; - RETURN NEXT result_customers; - - -- Errors - /* - SELECT - /* - t_ME.display_order, - t_ME.guid, - t_ME.id_type, - t_ME.msg, - MET.code, - MET.name, - MET.description - */ - * - FROM tmp_Msg_Error t_ME - INNER JOIN Shop_Msg_Error_Type MET - ON t_ME.id_type = MET.id_type - WHERE guid = v_guid - ; - OPEN result_errors FOR - SELECT * - FROM tmp_Msg_Error - ; - -- RETURN NEXT result_errors; - */ - - /* - -- Return arguments for test - SELECT - a_ids_category, - a_get_inactive_category, - a_ids_product, - a_get_inactive_product, - a_get_first_product_only, - a_get_all_product, - a_ids_image, - a_get_inactive_image, - a_get_first_image_only, - a_get_all_image - ; - */ - - -- select 'other outputs'; - -- select * from tmp_Shop_Product; - - -- Clean up - DROP TABLE IF EXISTS tmp_Shop_Customer; - - DELETE FROM Shop_Calc_User_Temp - WHERE GUID = v_guid - ; -END; -$$ LANGUAGE plpgsql; - - -/* - -DROP FUNCTION IF EXISTS fetch_results; - -CREATE OR REPLACE FUNCTION fetch_results() -RETURNS VOID AS $$ -DECLARE - curs refcursor; - rec record; -BEGIN - FOR curs IN SELECT p_shop_get_many_customer ( - '', -- a_id_user - 1, -- a_get_all_customer - 0, -- a_get_inactive_customer - 0, -- a_get_first_customer_only - '' -- a_ids_customer - ) LOOP - RAISE NOTICE 'Fetching from cursor: %', curs; - LOOP - FETCH curs INTO rec; - EXIT WHEN NOT FOUND; - RAISE NOTICE 'Record: %', rec; - END LOOP; - END LOOP; -END; -$$ LANGUAGE plpgsql; - -SELECT fetch_results(); - -*/ - diff --git a/static/PostgreSQL/710_p_shop_get_many_customer_sales_order.sql b/static/PostgreSQL/710_p_shop_get_many_customer_sales_order.sql deleted file mode 100644 index e880a2a0..00000000 --- a/static/PostgreSQL/710_p_shop_get_many_customer_sales_order.sql +++ /dev/null @@ -1,718 +0,0 @@ - - -CREATE OR REPLACE FUNCTION p_shop_get_many_customer_sales_order ( - IN a_id_user INTEGER, - IN a_get_all_customer BOOLEAN, - IN a_get_inactive_customer BOOLEAN, - IN a_get_first_customer_only BOOLEAN, - IN a_ids_customer INTEGER[], - IN a_get_all_order BOOLEAN, - IN a_get_inactive_order BOOLEAN, - IN a_get_first_order_only BOOLEAN, - IN a_ids_order INTEGER[], - IN a_get_inactive_category BOOLEAN, - IN a_ids_category INTEGER[], - IN a_get_inactive_product BOOLEAN, - IN a_ids_product INTEGER[], - IN a_get_inactive_permutation BOOLEAN, - IN a_ids_permutation INTEGER[], - IN a_date_from TIMESTAMP, - IN a_date_to TIMESTAMP -) -RETURNS SETOF REFCURSOR -AS $$ -DECLARE - v_id_user INTEGER; - v_get_all_customer BOOLEAN; - v_get_inactive_customer BOOLEAN; - v_get_first_customer_only BOOLEAN; - v_ids_customer INTEGER[]; - v_get_all_order BOOLEAN; - v_get_inactive_order BOOLEAN; - v_get_first_order_only BOOLEAN; - v_ids_order INTEGER[]; - v_get_inactive_category BOOLEAN; - v_ids_category INTEGER[]; - v_get_inactive_product BOOLEAN; - v_ids_product INTEGER[]; - v_get_inactive_permutation BOOLEAN; - v_ids_permutation INTEGER[]; - v_date_from TIMESTAMP; - v_date_to TIMESTAMP; - -- Argument redeclaration - -- Variable declaration - v_has_filter_customer BOOLEAN; - v_has_filter_order BOOLEAN; - v_has_filter_category BOOLEAN; - v_has_filter_product BOOLEAN; - v_has_filter_permutation BOOLEAN; - v_has_filter_date_from BOOLEAN; - v_has_filter_date_to BOOLEAN; - v_guid UUID; - -- v_id_user VARCHAR(100); - -- v_ids_permutation_unavailable VARCHAR(4000); - v_ids_permission_customer_purchase_order VARCHAR(4000); - v_ids_product_permission VARCHAR(4000); - -- v_ids_permutation_permission VARCHAR(4000); - v_id_access_level_view INTEGER; - -- v_now TIMESTAMP; - -- v_id_minimum INTEGER; - v_code_error_data VARCHAR(50); - v_id_type_error_data INTEGER; - result_customers REFCURSOR; - result_orders REFCURSOR; - result_order_product_links REFCURSOR; - -- result_errors REFCURSOR; -BEGIN - v_id_user := TRIM(COALESCE(a_id_user, '')); - v_get_inactive_customer := COALESCE(a_get_inactive_customer, FALSE); - v_get_first_customer_only := COALESCE(a_get_first_customer_only, FALSE); - v_ids_customer := TRIM(COALESCE(a_ids_customer, '')); - v_get_all_customer := COALESCE(a_get_all_customer, CASE WHEN v_ids_customer = '' THEN TRUE ELSE FALSE END); - v_get_inactive_order := COALESCE(a_get_inactive_order, FALSE); - v_get_first_order_only := COALESCE(a_get_first_order_only, FALSE); - v_ids_order := TRIM(COALESCE(a_ids_order, '')); - v_get_all_order := COALESCE(a_get_all_order, CASE WHEN v_ids_order = '' THEN TRUE ELSE FALSE END); - v_get_inactive_category := COALESCE(a_get_inactive_category, FALSE); - v_ids_category := TRIM(COALESCE(a_ids_category, '')); - v_get_inactive_product := COALESCE(a_get_inactive_product, FALSE); - v_ids_product := TRIM(COALESCE(a_ids_product, '')); - v_get_inactive_permutation := COALESCE(a_get_inactive_permutation, FALSE); - v_ids_permutation := TRIM(COALESCE(a_ids_permutation, '')); - v_date_from := a_date_from; - v_date_to := a_date_to; - - v_guid := gen_random_uuid(); - v_id_access_level_view := (SELECT id_access_level FROM Shop_Access_Level WHERE code = 'VIEW' LIMIT 1); - -- v_ids_permission_customer_purchase_order := (SELECT id_permission FROM Shop_Permission WHERE code = 'Shop_Customer_Sales_ORDER' LIMIT 1); - v_code_error_data := 'BAD_DATA'; - v_id_type_error_data := (SELECT id_type FROM Shop_Msg_Error_Type WHERE code = v_code_error_data); - - v_has_filter_category := CASE WHEN a_ids_category = '' THEN FALSE ELSE TRUE END; - v_has_filter_product := CASE WHEN a_ids_product = '' THEN FALSE ELSE TRUE END; - v_has_filter_permutation := CASE WHEN a_ids_permutation = '' THEN FALSE ELSE TRUE END; - v_has_filter_date_from := CASE WHEN ISNULL(a_date_from) THEN FALSE ELSE TRUE END; - v_has_filter_date_to := CASE WHEN ISNULL(a_date_to) THEN FALSE ELSE TRUE END; - - - -- Temporary tables - DROP TABLE IF EXISTS tmp_Shop_Customer_Sales_Order_Product_Link; - DROP TABLE IF EXISTS tmp_Shop_Customer_Sales_Order; - DROP TABLE IF EXISTS tmp_Shop_Customer; - DROP TABLE IF EXISTS tmp_Shop_Product; - - CREATE TABLE tmp_Shop_Customer ( - id_customer INTEGER NOT NULL, - CONSTRAINT FK_tmp_Shop_Customer_id_customer - FOREIGN KEY (id_customer) - REFERENCES Shop_Customer(id_customer), - active BOOLEAN NOT NULL, - rank_customer INTEGER NULL, - can_view BOOLEAN, - can_edit BOOLEAN, - can_admin BIT - ); - - CREATE TABLE tmp_Shop_Customer_Sales_Order ( - id_order INTEGER NOT NULL PRIMARY KEY, - /* - id_customer INTEGER NOT NULL, - CONSTRAINT FK_tmp_Shop_Customer_Sales_Order_id_customer - FOREIGN KEY (id_customer) - REFERENCES Shop_Customer(id_customer), - price_total_local REAL NOT NULL, - id_currency_price INTEGER NOT NULL, - */ - active BOOLEAN NOT NULL, - rank_order INTEGER NOT NULL - ); - - /* - CREATE TABLE tmp_Shop_Customer_Sales_Order_Product_Link ( - id_link INTEGER NOT NULL PRIMARY KEY, - id_order INTEGER NOT NULL, - CONSTRAINT FK_tmp_customer_Purchase_Order_Product_Link_id_order - FOREIGN KEY (id_order) - REFERENCES Shop_Customer_Sales_Order(id_order), - id_permutation INTEGER NOT NULL, - CONSTRAINT FK_tmp_customer_Purchase_Order_Product_Link_id_permutation - FOREIGN KEY (id_permutation) - REFERENCES Shop_Product_Permutation(id_permutation), - price_total_local REAL NOT NULL, - id_currency_price INTEGER NOT NULL, - quantity_ordered REAL NOT NULL, - id_unit_quantity INTEGER NOT NULL, - CONSTRAINT FK_tmp_customer_Purchase_Order_Product_Link_id_unit_quantity - FOREIGN KEY (id_unit_quantity) - REFERENCES Shop_Unit_Measurement(id_unit_measurement), - quantity_received REAL NULL, - latency_delivery_days INTEGER NOT NULL, - display_order INTEGER NOT NULL - ); - */ - - CREATE TABLE tmp_Shop_Product ( - id_category INTEGER NOT NULL, - CONSTRAINT FK_tmp_Shop_Product_id_category - FOREIGN KEY (id_category) - REFERENCES Shop_Product_Category(id_category), - id_product INTEGER NOT NULL, - CONSTRAINT FK_tmp_Shop_Product_id_product - FOREIGN KEY (id_product) - REFERENCES Shop_Product(id_product), - -- product_has_variations BOOLEAN NOT NULL, - id_permutation INTEGER NULL, - CONSTRAINT FK_tmp_Shop_Product_id_permutation - FOREIGN KEY (id_permutation) - REFERENCES Shop_Product_Permutation(id_permutation), - active_category BOOLEAN NOT NULL, - active_product BOOLEAN NOT NULL, - active_permutation BOOLEAN NULL, - display_order_category INTEGER NOT NULL, - display_order_product INTEGER NOT NULL, - display_order_permutation INTEGER NULL, - rank_permutation INTEGER NOT NULL, -- _in_category - -- name VARCHAR(255) NOT NULL, - -- description VARCHAR(4000) NOT NULL, - /* - price_GBP_full REAL NOT NULL, - price_GBP_min REAL NOT NULL, - */ - /* - latency_manufacture INTEGER NOT NULL, - quantity_min REAL NOT NULL, - quantity_max REAL NOT NULL, - quantity_step REAL NOT NULL, - quantity_stock REAL NOT NULL, - is_subscription BOOLEAN NOT NULL, - id_unit_measurement_interval_recurrence INTEGER, - CONSTRAINT FK_tmp_Shop_Product_id_unit_measurement_interval_recurrence - FOREIGN KEY (id_unit_measurement_interval_recurrence) - REFERENCES Shop_Interval_Recurrence(id_interval), - count_interval_recurrence INTEGER, - id_stripe_product VARCHAR(100), - product_has_variations INTEGER NOT NULL, - */ - can_view BOOLEAN, - can_edit BOOLEAN, - can_admin BIT - ); - - /* - CREATE TABLE IF NOT EXISTS tmp_Msg_Error ( - display_order INTEGER NOT NULL PRIMARY KEY GENERATED ALWAYS AS IDENTITY, - guid UUID NOT NULL, - id_type INTEGER 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 - ); - */ - - -- select v_has_filter_product, v_has_filter_permutation; - - IF v_has_filter_customer = TRUE OR a_get_all_customer = TRUE THEN - IF EXISTS ( - SELECT * - FROM UNNEST(v_ids_customer) AS Customer_Id - LEFT JOIN Shop_Customer C ON Customer_Id = C.id_customer - WHERE ISNULL(C.id_customer) - LIMIT 1 - ) THEN - RAISE EXCEPTION 'Invalid customer IDs: %', ( - SELECT STRING_AGG(Customer_Id, ', ') - FROM UNNEST(v_ids_customer) AS Customer_Id - LEFT JOIN Shop_Customer C ON Customer_Id = C.id_customer - WHERE ISNULL(C.id_customer) - ) - USING ERRCODE = '22000' - ; - ELSE - INSERT INTO tmp_Shop_Customer ( - id_customer, - active, - rank_customer - ) - SELECT - C.id_customer, - C.active, - RANK() OVER (ORDER BY id_customer ASC) AS rank_customer - FROM Shop_Customer C - -- LEFT JOIN Split_Temp S_T ON C.id_customer = S_T.substring - WHERE - ( - a_get_all_customer = TRUE - -- OR NOT ISNULL(S_T.substring) - OR C.id_customer = ANY(v_ids_customer) - ) - AND ( - a_get_inactive_customer - OR C.active = TRUE - ) - ; - END IF; - - IF a_get_first_customer_only THEN - DELETE FROM tmp_Shop_Customer t_C - WHERE t_C.rank_customer > ( - SELECT MIN(t_C.rank_customer) - FROM tmp_Shop_Customer t_C - ) - ; - END IF; - END IF; - - IF v_has_filter_category = TRUE AND EXISTS ( - SELECT STRING_AGG(Category_Id, ', ') - FROM UNNEST(v_ids_category) AS Category_Id - LEFT JOIN Shop_Product_Category C ON Category_Id = C.id_customer - WHERE ISNULL(C.id_customer) - LIMIT 1 - ) THEN - RAISE EXCEPTION 'Invalid category IDs: %', ( - SELECT STRING_AGG(Category_Id, ', ') - FROM UNNEST(v_ids_category) AS Category_Id - LEFT JOIN Shop_Product_Category C ON Category_Id = C.id_customer - WHERE ISNULL(C.id_customer) - ) - USING ERRCODE = '22000' - ; - END IF; - - IF v_has_filter_product = TRUE AND EXISTS ( - SELECT * - FROM UNNEST(v_ids_product) AS Product_Id - LEFT JOIN Shop_Product P ON Product_Id = P.id_product - WHERE ISNULL(P.id_product) - LIMIT 1 - ) THEN - RAISE EXCEPTION 'Invalid product IDs: %', ( - SELECT COALESCE(STRING_AGG(Product_Id, ', ') ,'NULL') - FROM UNNEST(v_ids_product) AS Product_Id - LEFT JOIN Shop_Product P ON Product_Id = P.id_product - WHERE ISNULL(P.id_product) - ) - USING ERRCODE = '22000' - ; - END IF; - - IF v_has_filter_permutation = TRUE AND EXISTS ( - SELECT * - FROM UNNEST(v_ids_permutation) AS Permutation_Id - LEFT JOIN Shop_Product_Permutation PP ON Permutation_Id = PP.id_permutation - WHERE ISNULL(PP.id_permutation) - LIMIT 1 - ) THEN - RAISE EXCEPTION 'Invalid permutation IDs: %', ( - SELECT STRING_AGG(Permutation_Id, ', ') - FROM UNNEST(v_ids_permutation) AS Permutation_Id - LEFT JOIN Shop_Product_Permutation PP ON Permutation_Id = PP.id_permutation - WHERE ISNULL(PP.id_permutation) - ) - USING ERRCODE = '22000' - ; - END IF; - - IF v_has_filter_category = TRUE OR v_has_filter_product = TRUE OR v_has_filter_permutation = TRUE THEN - INSERT INTO tmp_Shop_Product ( - id_category, - id_product, - id_permutation, - active_category, - active_product, - active_permutation, - display_order_category, - display_order_product, - display_order_permutation - -- rank_permutation, - /* - name, - description, - /* - price_GBP_VAT_incl, - price_GBP_VAT_excl, - price_GBP_min, - */ - latency_manufacture, - quantity_min, - quantity_max, - quantity_step, - quantity_stock, - is_subscription, - id_unit_measurement_interval_recurrence, - count_interval_recurrence, - id_stripe_product, - product_has_variations - */ - ) - SELECT - P.id_category, - P.id_product, - -- P.has_variations AS product_has_variations, - PP.id_permutation, - C.active AS active_category, - P.active AS active_product, - PP.active AS active_permutation, - C.display_order AS display_order_category, - P.display_order AS display_order_product, - PP.display_order AS display_order_permutation - -- RANK() OVER (ORDER BY C.display_order, P.display_order, PP.display_order) AS rank_permutation, #PARTITION BY P.id_category -- _in_category - /* - P.name, - PP.description, - /* - PP.price_GBP_VAT_incl, - PP.price_GBP_VAT_excl, - PP.price_GBP_min, - */ - PP.latency_manufacture, - PP.quantity_min, - PP.quantity_max, - PP.quantity_step, - PP.quantity_stock, - PP.is_subscription, - PP.id_unit_measurement_interval_recurrence, - PP.count_interval_recurrence, - PP.id_stripe_product, - P.has_variations - */ - FROM Shop_Product P - INNER JOIN Shop_Product_Permutation PP - ON P.id_product = PP.id_product - INNER JOIN Shop_Product_Category C - ON P.id_category = C.id_category - WHERE - -- permutations - ( - ( - NOT v_has_filter_permutation - OR FIND_IN_SET(PP.id_permutation, a_ids_permutation) > 0 - ) - AND ( - a_get_inactive_permutation - OR PP.active = TRUE - ) - ) - -- categories - AND ( - ( - NOT v_has_filter_category - OR FIND_IN_SET(P.id_category, a_ids_category) > 0 - ) - AND ( - a_get_inactive_category - OR C.active = TRUE - ) - ) - -- products - AND ( - ( - NOT v_has_filter_product - OR FIND_IN_SET(P.id_product, a_ids_product) > 0 - ) - AND ( - a_get_inactive_product - OR P.active = TRUE - ) - ) - ; - END IF; - - -- Get orders - IF v_has_filter_order AND EXISTS ( - SELECT * - FROM UNNEST(v_ids_order) AS Order_Id - LEFT JOIN Shop_Customer_Sales_Order CSO ON Order_Id = CSO.id_order - WHERE ISNULL(CSO.id_order) - LIMIT 1 - ) THEN - RAISE EXCEPTION 'Invalid order IDs: %', ( - SELECT STRING_AGG(Order_Id, ', ') - FROM UNNEST(v_ids_order) AS Order_Id - LEFT JOIN Shop_Customer_Sales_Order CSO ON Order_Id = CSO.id_order - WHERE ISNULL(CSO.id_order) - ) - USING ERRCODE = '22000' - ; - END IF; - - INSERT INTO tmp_Shop_Customer_Sales_Order ( -- _Product_Link - id_order, - active, - rank_order - ) - SELECT - CSO.id_order, - CSO.active, - RANK() OVER (ORDER BY CSO.id_order ASC) AS rank_order - FROM Shop_Customer_Sales_Order CSO - -- LEFT JOIN Split_Temp S_T ON CSO.id_order = S_T.substring - INNER JOIN Shop_Customer_Sales_Order_Product_Link CSOPL ON CSO.id_order = CSOPL.id_order - INNER JOIN Shop_Customer S ON CSO.id_customer = S.id_customer - INNER JOIN Shop_Product_Permutation PP ON CSOPL.id_permutation = PP.id_permutation - INNER JOIN Shop_Product P ON PP.id_product = P.id_product - INNER JOIN Shop_Product_Category C ON P.id_category = C.id_category - LEFT JOIN tmp_Shop_Product t_P ON CSOPL.id_permutation = t_P.id_permutation - LEFT JOIN tmp_Shop_Customer t_S ON CSO.id_customer = t_S.id_customer - WHERE - -- customer - /* - ( - a_get_all_customer = 1 - OR NOT ISNULL(t_S.id_customer) -- CSO.id_customer IN (SELECT DISTINCT id_customer FROM tmp_Shop_Customer) - ) - */ - NOT ISNULL(t_S.id_customer) - -- order - AND ( - ( - a_get_all_order = 1 - OR ( - -- ID - -- FIND_IN_SET(CSO.id_order, a_ids_order) > 0 - -- NOT ISNULL(S_T.substring) - CSO.id_order = ANY(v_ids_order) - -- date - AND ( - ( - v_has_filter_date_from = 0 - OR CSO.created_on > a_date_from - ) - AND ( - v_has_filter_date_to = 0 - OR CSO.created_on < a_date_to - ) - ) - ) - ) - -- active - AND ( - a_get_inactive_order - OR CSO.active = TRUE - ) - ) - -- permutations - AND ( - ( - v_has_filter_category = FALSE - AND v_has_filter_product = FALSE - AND v_has_filter_permutation = 0 - ) - OR NOT ISNULL(t_P.id_permutation) -- CSO.id_permutation IN (SELECT DISTINCT id_permutation FROM tmp_Shop_Product) - ) - ; - - IF a_get_first_order_only THEN - DELETE FROM tmp_Shop_Customer_Sales_Order t_CSO - WHERE t_CSO.rank_order > ( - SELECT MIN(t_CSO.rank_order) - FROM tmp_Shop_Customer_Sales_Order t_CSO - ) - ; - END IF; - - -- Permissions - -- v_id_user := (SELECT id_user FROM Shop_User WHERE name = CURRENT_USER); - v_ids_permission_customer_purchase_order := (SELECT STRING_AGG(id_permission, ',') FROM Shop_Permission WHERE code IN ('STORE_customer', 'STORE_customer_PURCHASE_ORDER')); - -- v_ids_permutation_permission := (SELECT STRING_AGG(id_permutation, ',') FROM tmp_Shop_Product WHERE NOT ISNULL(id_permutation)); - v_ids_product_permission := (SELECT STRING_AGG(P.id_product, ',') FROM (SELECT DISTINCT id_product FROM tmp_Shop_Product WHERE NOT ISNULL(id_product)) P); - - -- SELECT v_guid, a_id_user, false, v_id_permission_product, v_id_access_level_view, v_ids_permutation_permission; - -- select * from Shop_Calc_User_Temp; - - CALL p_shop_calc_user(v_guid, a_id_user, FALSE, v_ids_permission_customer_purchase_order, v_id_access_level_view, v_ids_product_permission); - - -- select * from Shop_Calc_User_Temp; - - IF NOT EXISTS (SELECT can_view FROM Shop_Calc_User_Temp UE_T WHERE UE_T.GUID = v_guid) THEN - RAISE EXCEPTION 'You do not have view permissions for %', ( - SELECT COALESCE(STRING_AGG(name, ', '), 'NULL') - FROM Shop_Permission - WHERE id_permission = v_ids_permission_customer_purchase_order - ) - USING ERRCODE = '42501' - ; - END IF; - - - UPDATE tmp_Shop_Product t_P - SET t_P.can_view = UE_T.can_view, - t_P.can_edit = UE_T.can_edit, - t_P.can_admin = UE_T.can_admin - FROM tmp_Shop_Product t_P - INNER JOIN Shop_Calc_User_Temp UE_T - ON t_P.id_product = UE_T.id_product -- t_P.id_permutation = UE_T.id_permutation - AND UE_T.GUID = v_guid - ; - - -- CALL p_shop_clear_calc_user(v_guid); - -- DROP TABLE IF EXISTS Shop_Calc_User_Temp; - DELETE FROM Shop_Calc_User_Temp - WHERE GUID = v_guid - ; - - - -- select * from tmp_Shop_Customer; - -- select * from tmp_Shop_Product; - - -- Returns - -- v_now := CURRENT_TIMESTAMP; - - -- customers - OPEN result_customers FOR - SELECT - t_S.id_customer, - S.name_company, - S.name_contact, - S.department_contact, - S.id_address, - S.phone_number, - S.email, - S.id_currency, - t_S.active - FROM tmp_Shop_Customer t_S - INNER JOIN Shop_Customer S - ON t_S.id_customer = S.id_customer - ; - RETURN NEXT result_customers; - - -- Customer Sales Order - OPEN result_orders FOR - SELECT -- * - t_CSO.id_order, - CSO.id_customer, - CSO.price_total_local, - CSO.id_currency_price, - t_CSO.active - FROM Shop_Customer_Sales_Order CSO - INNER JOIN tmp_Shop_Customer_Sales_Order t_CSO ON CSO.id_order = t_CSO.id_order - ; - RETURN NEXT result_orders; - - -- Customer Sales Order Product Link - OPEN result_order_product_links FOR - SELECT - CSOPL.id_link, - CSOPL.id_order, - CSOPL.id_permutation, - P.name as name_product, - CSOPL.price_total_local, - CSOPL.id_currency_price, - CSOPL.quantity_ordered, - CSOPL.id_unit_quantity, - CSOPL.quantity_delivered, - CSOPL.latency_delivery_days, - CSOPL.display_order - FROM Shop_Customer_Sales_Order_Product_Link CSOPL - -- INNER JOIN tmp_Shop_Customer_Sales_Order_Product_Link t_CSOPL ON CSOPL.id_link = t_CSOPL.id_link - INNER JOIN tmp_Shop_Customer_Sales_Order t_CSO ON CSOPL.id_order = t_CSO.id_order - INNER JOIN Shop_Product_Permutation PP ON CSOPL.id_permutation = PP.id_permutation - INNER JOIN Shop_Product P ON PP.id_product = P.id_product - INNER JOIN Shop_Product_Category C ON P.id_category = C.id_category - ORDER BY CSOPL.id_order, C.display_order, P.display_order, PP.display_order - ; - RETURN NEXT result_order_product_links; - - -- Errors - /* - SELECT - /* - t_ME.display_order, - t_ME.guid, - t_ME.id_type, - t_ME.msg, - MET.code, - MET.name, - MET.description - */ - * - FROM tmp_Msg_Error t_ME - INNER JOIN Shop_Msg_Error_Type MET - ON t_ME.id_type = MET.id_type - WHERE guid = v_guid - ; - OPEN result_errors FOR - SELECT * - FROM tmp_Msg_Error - ; - -- RETURN NEXT result_errors; - */ - - /* - -- Return arguments for test - SELECT - a_ids_category, - a_get_inactive_category, - a_ids_product, - a_get_inactive_product, - a_get_first_product_only, - a_get_all_product, - a_ids_image, - a_get_inactive_image, - a_get_first_image_only, - a_get_all_image - ; - */ - - -- select 'other outputs'; - -- select * from tmp_Shop_Product; - - -- Clean up - DROP TABLE IF EXISTS tmp_Shop_Customer_Sales_Order_Product_Link; - DROP TABLE IF EXISTS tmp_Shop_Customer_Sales_Order; - DROP TABLE IF EXISTS tmp_Shop_Customer; - DROP TABLE IF EXISTS tmp_Shop_Product; - - DELETE FROM Shop_Calc_User_Temp - WHERE GUID = v_guid - ; -END; -$$ LANGUAGE plpgsql; - - -/* - - -DROP FUNCTION IF EXISTS fetch_results; - -CREATE OR REPLACE FUNCTION fetch_results() -RETURNS VOID AS $$ -DECLARE - curs refcursor; - rec record; -BEGIN - FOR curs IN SELECT p_shop_get_many_customer_sales_order ( - '', -- a_id_user - 1, -- a_get_all_customer - 0, -- a_get_inactive_customer - 0, -- a_get_first_customer_only - '', -- a_ids_customer - 1, -- a_get_all_order - 0, -- a_get_inactive_order - 0, -- a_get_first_order_only - '', -- a_ids_order - 0, -- a_get_inactive_category - '', -- a_ids_category - 0, -- a_get_inactive_product - '', -- a_ids_product - 0, -- a_get_inactive_permutation - '', -- a_ids_permutation - NULL, -- a_date_from - NULL -- a_date_to - ) LOOP - RAISE NOTICE 'Fetching from cursor: %', curs; - LOOP - FETCH curs INTO rec; - EXIT WHEN NOT FOUND; - RAISE NOTICE 'Record: %', rec; - END LOOP; - END LOOP; -END; -$$ LANGUAGE plpgsql; - -SELECT fetch_results(); - -*/ - diff --git a/static/PostgreSQL/900_populate.sql b/static/PostgreSQL/900_populate.sql deleted file mode 100644 index 4122763b..00000000 --- a/static/PostgreSQL/900_populate.sql +++ /dev/null @@ -1,656 +0,0 @@ - - -DO $$ -BEGIN - RAISE NOTICE 'PROCEDURE CREATION COMPLETE'; -END $$; - -/* - -CALL p_populate_database () - -*/ - -/* --- Remove previous proc -DROP PROCEDURE IF EXISTS p_populate_database; - - -DELIMITER // -CREATE OR REPLACE PROCEDURE p_populate_database () -BEGIN -*/ - - --- Access Levels -INSERT INTO Shop_Access_Level ( - display_order, code, name, priority -) -VALUES - (1, 'VIEW', 'View', 3), - (2, 'EDIT', 'Edit', 2), - (3, 'ADMIN', 'Admin', 1) -; - --- Error Message Types -INSERT INTO Shop_Msg_Error_Type ( - code, name, description -) -VALUES - ('BAD_DATA', 'Invalid data', 'Rubbish data'), - ('NO_PERMISSION', 'No permission', 'Not authorised'), - ('PRODUCT_AVAILABILITY', 'Product not available', 'Product not available') -; - --- File Types -INSERT INTO File_Type ( - code, name, extension -) -VALUES - ('JPEG', 'Joint Photographic Export Group', 'jpg'), - ('PNG', 'Portable Network Graphic', 'png'), - ('GIF', 'GIF', 'gif'), - ('MPEG-4', 'Multimedia Photographic Export Group 4', 'mp4') -; - --- Generic / shared properties -INSERT INTO Shop_General ( - quantity_max -) -VALUES ( - 10 -); - --- Categories -INSERT INTO Shop_Product_Category ( - display_order, - code, - name, - description -) -VALUES - (1, 'ASS', 'Assistive Devices', 'Braille product line and other assistive devices'), - (99, 'MISC', 'Miscellaneous', 'Not category allocated products'), - (2, 'TECH', 'Technology', 'Technological devices') -; - --- Recurrence Interval -INSERT INTO Shop_Interval_Recurrence ( - code, name, name_plural -) -VALUES - ('WEEK', 'Week', 'Weeks'), - ('MONTH', 'Month', 'Months'), - ('YEAR', 'Year', 'Years') -; - -INSERT INTO Shop_Region ( - display_order, code, name -) -VALUES - (1, 'UK', 'United Kingdom') -; - -/* -INSERT INTO Shop_Region_Branch ( - display_order, id_region_parent, id_region_child -) -VALUES - (1, 1, 2) -; -*/ - --- Currency -INSERT INTO Shop_Currency ( - display_order, code, name, symbol, factor_from_GBP -) -VALUES - (1, 'GBP', 'Great British Pound', '£', 1), - (2, 'EUR', 'Euro', '€', 1.17) -; - --- Taxes and Surcharges -INSERT INTO Shop_Tax_Or_Surcharge ( - display_order, - code, - name, - id_region_buyer, - id_region_seller, - fixed_fee, - multiplier, - apply_fixed_fee_before_multiplier, - quantity_min, - quantity_max -) -VALUES - (1, 'VAT', 'Value Added Tax', 1, 1, 0, 0.2, TRUE, 0, 1) -; - --- Products -INSERT INTO Shop_Product ( - display_order, - id_category, - name, - has_variations, - id_access_level_required -) -VALUES - ( - 1, - 1, - 'Braille Keyboard Translator', - TRUE, - 3 - ), - ( - 2, - 2, - 'Test product 1', - FALSE, - 3 - ), - ( - 3, - 3, - 'Phone', - FALSE, - 1 - ), - ( - 4, - 3, - 'Laptop', - FALSE, - 1 - ), - ( - 5, - 3, - 'Smart Watch', - FALSE, - 1 - ) -; - --- Variation Types -INSERT INTO Shop_Variation_Type ( - display_order, code, name, name_plural -) -VALUES - (1, 'COLOUR', 'Colour', 'Colours') -; - --- Variations -INSERT INTO Shop_Variation ( - display_order, id_type, code, name -) -VALUES - (1, 1, 'RED', 'Red'), - (2, 1, 'BLUE', 'Blue') -; - --- Product Permutations -INSERT INTO Shop_Product_Permutation ( - display_order, - id_product, - description, - cost_local, - id_currency_cost, - profit_local_min, - -- id_currency_profit_min, - latency_manufacture, - quantity_min, - quantity_max, - quantity_step, - quantity_stock, - is_subscription, - id_unit_measurement_interval_recurrence, - count_interval_recurrence, - -- id_access_level_required, - id_stripe_product -) -VALUES - ( - 1, - 1, - 'Good Red', - 5, - 1, - 3, - -- 1, - 14, - 1, - 3, - 1, - 99, - FALSE, - NULL, - NULL, - -- 1, - NULL - ), - ( - 2, - 1, - 'Good Blue', - 6, - 1, - 4, - -- 1, - 14, - 1, - 3, - 1, - 99, - FALSE, - NULL, - NULL, - -- 1, - NULL - ), - ( - 3, - 2, - 'Test product describes good', - 10, - 1, - 5, - -- 1, - 14, - 1, - 2, - 1, - 99, - FALSE, - NULL, - NULL, - -- 1, - NULL - ), - ( - 4, - 3, - 'Phone describes good', - 10, - 1, - 5, - -- 1, - 14, - 1, - 2, - 1, - 99, - FALSE, - NULL, - NULL, - -- 1, - NULL - ), - ( - 5, - 4, - 'Laptop describes good', - 10, - 1, - 5, - -- 1, - 14, - 1, - 2, - 1, - 99, - FALSE, - NULL, - NULL, - -- 1, - NULL - ), - ( - 6, - 5, - 'Smart watch describes good', - 10, - 1, - 5, - -- 1, - 14, - 1, - 2, - 1, - 99, - FALSE, - NULL, - NULL, - -- 1, - NULL - ) -; - --- Product Permutation Variation Links -INSERT INTO Shop_Product_Permutation_Variation_Link ( - display_order, id_permutation, id_variation -) -VALUES - (1, 1, 1), - (2, 2, 2) -; - --- Product Currency Link -INSERT INTO Shop_Product_Currency_Region_Link ( - id_product, id_permutation, id_currency, id_region_purchase, price_local_VAT_incl, price_local_VAT_excl -) -VALUES - (1, 1, 1, 1, 24, 20), - (1, 1, 2, 1, 48, 40), - (1, 2, 1, 1, 96, 80), - (2, 3, 1, 1, 144, 120), - (3, 4, 1, 1, 600, 500), - (4, 5, 1, 1, 1500, 1200), - (5, 6, 1, 1, 180, 150) -; - -INSERT INTO Shop_Image_Type ( - display_order, code, name, name_plural -) -VALUES - (1, 'FULL', 'Full Quality Image', 'Full Quality Images'), - (2, 'LOW', 'Low Quality Image', 'Low Quality Images'), - (3, 'THUMBNAIL', 'Thumbnail Image', 'Thumbnail Images') -; - -INSERT INTO Shop_Image ( - display_order, id_product, id_permutation, id_type_image, id_type_file, url -) -VALUES - (1, 1, 1, 1, 1, '/static/images/prod_PB0NUOSEs06ymG.jpg'), - -- (1, NULL, 1, 1, 1, '/static/images/prod_PB0NUOSEs06ymG.jpg'), - (2, 1, 2, 1, 1, '/static/images/prod_PB0NUOSEs06ymG.jpg'), - -- (1, NULL, 2, 1, 1, '/static/images/prod_PB0NUOSEs06ymG.jpg') - (3, 2, 3, 1, 1, '/static/images/prod_PB0NUOSEs06ymG.jpg'), - (4, 3, 4, 1, 1, '/static/images/prod_.jpg'), - (5, 4, 5, 1, 1, '/static/images/prod_1.jpg'), - (6, 5, 6, 1, 1, '/static/images/prod_2.jpg') -; - -INSERT INTO Shop_Delivery_Option ( - display_order, code, name, latency_delivery_min, latency_delivery_max, quantity_min, quantity_max -) -VALUES - (1, 'COLLECT', 'Collection', 0, 0, 0, 1), - (2, 'SIGNED_1', 'First Class Signed-For', 2, 4, 0, 1) -; - -INSERT INTO Shop_Product_Permutation_Delivery_Option_Link ( - display_order, id_product, id_permutation, id_delivery_option, id_region, id_currency, price_local -) -VALUES - (1, 1, 1, 1, 1, 1, 5), - (2, 1, 2, 1, 1, 1, 9), - (3, 2, NULL, 1, 1, 1, 10), - (4, 3, 4, 1, 1, 1, 10), - (5, 4, 5, 1, 1, 1, 10), - (6, 5, 6, 1, 1, 1, 10) -; - --- Discounts -INSERT INTO Shop_Discount ( - id_product, - id_permutation, - code, - name, - multiplier, - quantity_min, - quantity_max, - date_start, - date_end, - display_order -) -VALUES - (1, 1, 'CRIMBO50', 'Christmas 50% off sale!', 0.5, 3, 9, CURRENT_TIMESTAMP, '2023-12-31 23:59:59', 1), - (1, 2, 'CRIMBO50', 'Christmas 50% off sale!', 0.5, 3, 9, CURRENT_TIMESTAMP, '2023-12-31 23:59:59', 1) -; - --- Discount Delivery Region Links -INSERT INTO Shop_Discount_Region_Currency_Link ( - id_discount, - id_region, - id_currency -) -VALUES - (1, 1, 1), - (2, 1, 1), - (1, 1, 2), - (2, 1, 2) -; - --- Permission Groups -INSERT INTO Shop_Permission_Group ( - display_order, code, name -) -VALUES - (0, 'ADMIN', 'Website Admin'), - (1, 'HOME', 'Home, Contact Us, and other public information'), - (2, 'PRODUCT', 'Store Products'), - (3, 'USER', 'Store User'), - (4, 'SALES_AND_PURCHASING', 'Sales and Purchasing'), - (5, 'MANUFACTURING', 'Manufacturing') -; - --- Permissions -INSERT INTO Shop_Permission ( - display_order, code, name, id_permission_group, id_access_level_required -) -VALUES - (1, 'HOME', 'Home Page', 2, 1), - (2, 'STORE_PRODUCT', 'Store Product Page', 3, 1), - (3, 'STORE_USER', 'Store User Account Page', 4, 2), - (4, 'STORE_ADMIN', 'Store Admin Page', 1, 3), - (5, 'STORE_SUPPLIER', 'Store Supplier Page', 4, 2), - (6, 'STORE_SUPPLIER_PURCHASE_ORDER', 'Store Supplier Purchase Order Page', 4, 2), - (7, 'STORE_MANUFACTURING_PURCHASE_ORDER', 'Store Manufacturing Purchase Order Page', 5, 2), - (8, 'STORE_CUSTOMER', 'Store Customer Page', 4, 2), - (9, 'STORE_CUSTOMER_SALES_ORDER', 'Store Customer Sales Order Page', 4, 2), - (99, 'CONTACT_US', 'Contact Us Page', 2, 1) -; - --- Roles -INSERT INTO Shop_Role ( - display_order, - code, - name -) -VALUES - (1, 'DIRECTOR', 'Director'), - (2, 'USER', 'User') -; - --- Role Permission link -INSERT INTO Shop_Role_Permission_Link ( - id_role, id_permission, id_access_level -) -VALUES - (1, 1, 3), - (1, 2, 3), - (1, 3, 3), - (1, 4, 3), - (1, 5, 3), - (2, 1, 1), - (2, 2, 1), - (2, 3, 1), - (2, 4, 1), - (2, 5, 1) -; - --- Users -INSERT INTO Shop_User ( - id_user_oauth, - name, - email, - -- is_email_verified, - is_super_user -) -VALUES - ('auth0|6582b95c895d09a70ba10fef', 'Teddy', 'edward.middletonsmith@gmail.com', TRUE), - ('parts_guest', 'Guest', '', FALSE) -; - --- User Role link -INSERT INTO Shop_User_Role_Link ( - id_user, id_role -) -VALUES - (1, 1) -; - --- Addresses -INSERT INTO Shop_Address ( - -- id_user, - id_region, name_full, phone_number, postcode, address_line_1, address_line_2, city, county -) -VALUES (1, 'Edward M-S', '07375 571430', 'CV22 6DN', '53 Alfred Green Close', '', 'Rugby', 'Warwickshire') -/* -SELECT U.id_user, 1, U.name, '07375 571430', 'CV22 6DN', '53 Alfred Green Close', '', 'Rugby', 'Warwickshire' - FROM Shop_User U -*/ -; - --- User Basket -INSERT INTO Shop_User_Basket ( - id_user, - id_product, - id_permutation, - quantity -) -VALUES - (1, 1, 1, 69) -; - --- User Order Status -INSERT INTO Shop_User_Order_Status ( - display_order, code, name, name_plural -) -VALUES - (1, 'SUCCESS', 'Success', 'Successes'), - (2, 'FAIL', 'Failure', 'Failures') -; - -/* --- User Order -INSERT INTO Shop_User_Order ( - id_user, value_total, id_order_status, id_checkout_session, id_currency -) -VALUES - (1, 25, 1, 'noods', 1), - (1, 25, 1, 'noods', 1) -; - --- User Order Product Link -INSERT INTO Shop_User_Order_Product_Link ( - id_order, id_product, id_permutation, quantity -) -VALUES - (1, 1, 1, 69), - (1, 2, NULL, 69), - (1, 1, 2, 69) -; -*/ - --- Supplier -INSERT INTO Shop_Supplier ( - name_company, name_contact, department_contact, id_address, phone_number, fax, email, website, id_currency -) -VALUES - ('Precision And Research Technology Systems Limited', 'Teddy Middleton-Smith', 'Executive Management', 1, '07375571430', '', 'teddy@partsltd.co.uk', 'www.partsltd.co.uk', 1) -; - --- Unit of Measurement -INSERT INTO Shop_Unit_Measurement ( - name_singular, name_plural, symbol, is_base_unit -) -VALUES - ('metre', 'metres', 'm', TRUE), - ('kilogram', 'kilograms', 'kg', TRUE), - ('item', 'items', 'x', FALSE) -; - -/* --- Unit of Measurement Conversion -INSERT INTO Shop_Unit_Measurement_Conversion ( - id_unit_derived, id_unit_base, power_unit_base, multiplier_unit_base, increment_unit_base -) -VALUES - -; -*/ - -/* --- Supplier Purchase Order -INSERT INTO Shop_Supplier_Purchase_Order ( - id_supplier, value_total, id_order_status, id_checkout_session, id_currency -) -VALUES -; - --- Supplier Purchase Order Product Link -INSERT INTO Shop_Supplier_Purchase_Order_Product_Link ( - id_order, id_permutation, cost_total_local, id_currency_cost, quantity_ordered, id_unit_quantity, quantity_received, latency_delivery, display_order -) -VALUES -; -*/ - -/* --- Manufacturing Purchase Order -INSERT INTO Shop_Manufacturing_Purchase_Order ( - cost_total_local, id_currency_cost -) -VALUES -; - --- Manufacturing Purchase Order Product Link -INSERT INTO Shop_Manufacturing_Purchase_Order_Product_Link ( - id_order, id_permutation, cost_total_local, id_currency_cost, quantity_used, id_unit_quantity, quantity_produced, latency_manufacturing_days, display_order -) -VALUES -; -*/ - -/* --- Customer -INSERT INTO Shop_Customer ( - name_company, name_contact, department_contact, id_address, phone_number, email, id_currency -) -VALUES - -; -*/ - -/* --- Customer Sales Order -INSERT INTO Shop_Customer_Sales_Order ( - cost_total_local, id_currency_cost -) -VALUES -; - --- Customer Sales Order Product Link -INSERT INTO Shop_Customer_Sales_Order_Product_Link ( - id_order, id_permutation, cost_total_local, id_currency_cost, quantity_ordered, id_unit_quantity, quantity_delivered, latency_delivery_days, display_order -) -VALUES -; -*/ - - -/* - -- Clean up -END // -DELIMITER ;; - - --- Call -CALL p_populate_database(); - --- Remove proc -DROP PROCEDURE IF EXISTS p_populate_database; -*/ \ No newline at end of file diff --git a/static/PostgreSQL/901_view.sql b/static/PostgreSQL/901_view.sql deleted file mode 100644 index 9e139d9a..00000000 --- a/static/PostgreSQL/901_view.sql +++ /dev/null @@ -1,188 +0,0 @@ - - -DO $$ -BEGIN - RAISE NOTICE 'TABLE POPULATION COMPLETE'; -END $$; - --- Product Change Sets -SELECT * FROM Shop_Product_Change_Set; - --- User Change Sets -SELECT * FROM Shop_User_Change_Set; - --- Access Levels -SELECT * FROM Shop_Access_Level; -SELECT * FROM Shop_Access_Level_Audit; - --- Error Message type -SELECT * FROM Shop_Msg_Error_Type; - --- File Types -SELECT * FROM File_Type; -SELECT * FROM File_Type_Audit; - --- Generic / shared properties -SELECT * FROM Shop_General; -SELECT * FROM Shop_General_Audit; - --- Categories -SELECT * FROM Shop_Product_Category; -SELECT * FROM Shop_Product_Category_Audit; - --- Recurrence Interval -SELECT * FROM Shop_Interval_Recurrence; -SELECT * FROM Shop_Interval_Recurrence_Audit; - --- Region -SELECT * FROM Shop_Region; -SELECT * FROM Shop_Region_Audit; - --- Region Branch -SELECT * FROM Shop_Region_Branch; -SELECT * FROM Shop_Region_Branch_Audit; - --- Currency -SELECT * FROM Shop_Currency; -SELECT * FROM Shop_Currency_Audit; - --- Taxes and Surcharges -SELECT * FROM Shop_Tax_Or_Surcharge; -SELECT * FROM Shop_Tax_Or_Surcharge_Audit; - --- Products -SELECT * FROM Shop_Product; -SELECT * FROM Shop_Product_Audit; - --- Variation Types -SELECT * FROM Shop_Variation_Type; -SELECT * FROM Shop_Variation_Type_Audit; - --- Variations -SELECT * FROM Shop_Variation; -SELECT * FROM Shop_Variation_Audit; - --- Permutations -SELECT * FROM Shop_Product_Permutation; -SELECT * FROM Shop_Product_Permutation_Audit; - --- Permutation Variation Links -SELECT * FROM Shop_Product_Permutation_Variation_Link; -SELECT * FROM Shop_Product_Permutation_Variation_Link_Audit; - --- Product Currency Links -SELECT * FROM Shop_Product_Currency_Region_Link; -SELECT * FROM Shop_Product_Currency_Region_Link_Audit; - --- Image Types -SELECT * FROM Shop_Image_Type; -SELECT * FROM Shop_Image_Type_Audit; - --- Images -SELECT * FROM Shop_Image; -SELECT * FROM Shop_Image_Audit; - --- Delivery Option Types -SELECT * FROM Shop_Delivery_Option; -SELECT * FROM Shop_Delivery_Option_Audit; - --- Delivery Options -SELECT * FROM Shop_Product_Permutation_Delivery_Option_Link; -SELECT * FROM Shop_Product_Permutation_Delivery_Option_Link_Audit; - --- Discounts -SELECT * FROM Shop_Discount; -SELECT * FROM Shop_Discount_Audit; - --- Discount Delivery Region Links -SELECT * FROM Shop_Discount_Region_Currency_Link; -SELECT * FROM Shop_Discount_Region_Currency_Link_Audit; - - --- Permission Groups -SELECT * FROM Shop_Permission_Group; -SELECT * FROM Shop_Permission_Group_Audit; - --- Permissions -SELECT * FROM Shop_Permission; -SELECT * FROM Shop_Permission_Audit; - --- Roles -SELECT * FROM Shop_Role; -SELECT * FROM Shop_Role_Audit; - --- Role Permission link -SELECT * FROM Shop_Role_Permission_Link; -SELECT * FROM Shop_Role_Permission_Link_Audit; - --- Users -SELECT * FROM Shop_User; -SELECT * FROM Shop_User_Audit; - --- User Role link -SELECT * FROM Shop_User_Role_Link; -SELECT * FROM Shop_User_Role_Link_Audit; - - --- Addresses -SELECT * FROM Shop_Address; -SELECT * FROM Shop_Address_Audit; - --- Basket -SELECT * FROM Shop_User_Basket; -SELECT * FROM Shop_User_Basket_Audit; - --- Order Statuses -SELECT * FROM Shop_User_Order_Status; -SELECT * FROM Shop_User_Order_Status_Audit; - -/* --- Orders -SELECT * FROM Shop_User_Order; -SELECT * FROM Shop_User_Order_Audit; - --- Order Products -SELECT * FROM Shop_User_Order_Product_Link; -SELECT * FROM Shop_User_Order_Product_Link_Audit; -*/ - --- Supplier -SELECT * FROM Shop_Supplier; -SELECT * FROM Shop_Supplier_Audit; - --- Unit Of Measurement -SELECT * FROM Shop_Unit_Measurement; -SELECT * FROM Shop_Unit_Measurement_Audit; - --- Unit of Measurement Conversion -SELECT * FROM Shop_Unit_Measurement_Conversion; -SELECT * FROM Shop_Unit_Measurement_Conversion_Audit; - --- Supplier Purchase Order -SELECT * FROM Shop_Supplier_Purchase_Order; -SELECT * FROM Shop_Supplier_Purchase_Order_Audit; - --- Supplier Purchase Order Product Link -SELECT * FROM Shop_Supplier_Purchase_Order_Product_Link; -SELECT * FROM Shop_Supplier_Purchase_Order_Product_Link_Audit; - --- Manufacturing Purchase Order -SELECT * FROM Shop_Manufacturing_Purchase_Order; -SELECT * FROM Shop_Manufacturing_Purchase_Order_Audit; - --- Manufacturing Purchase Order Product Link -SELECT * FROM Shop_Manufacturing_Purchase_Order_Product_Link; -SELECT * FROM Shop_Manufacturing_Purchase_Order_Product_Link_Audit; - --- Customers -SELECT * FROM Shop_Customer; -SELECT * FROM Shop_Customer_Audit; - --- Customer Sales Order -SELECT * FROM Shop_Customer_Sales_Order; -SELECT * FROM Shop_Customer_Sales_Order_Audit; - --- Customer Sales Order Product Link -SELECT * FROM Shop_Customer_Sales_Order_Product_Link; -SELECT * FROM Shop_Customer_Sales_Order_Product_Link_Audit; - diff --git a/static/PostgreSQL/910_anal.sql b/static/PostgreSQL/910_anal.sql deleted file mode 100644 index d83f6962..00000000 --- a/static/PostgreSQL/910_anal.sql +++ /dev/null @@ -1,26 +0,0 @@ - - - - -SELECT TABLE_NAME -FROM INFORMATION_SCHEMA.TABLES -WHERE TABLE_NAME LIKE '%SHOP%' - OR TABLE_NAME LIKE '%FILE_TYPE%'; - - -SELECT FOUND_ROWS(); - - - -SELECT - CONSTRAINT_NAME, - CONSTRAINT_TYPE, - TABLE_NAME, - COLUMN_NAME, - REFERENCED_TABLE_NAME, - REFERENCED_COLUMN_NAME -FROM - INFORMATION_SCHEMA.TABLES -WHERE - TABLE_SCHEMA = 'PARTS' - -- AND TABLE_NAME = 'your_table_name'; diff --git a/static/PostgreSQL/920_edit_permissions.sql b/static/PostgreSQL/920_edit_permissions.sql deleted file mode 100644 index 93a911d9..00000000 --- a/static/PostgreSQL/920_edit_permissions.sql +++ /dev/null @@ -1,83 +0,0 @@ -SELECT URL.id_link, - URL.id_user, - U.name AS name, - URL.id_role, - R.name AS role -FROM Shop_User_Role_Link URL -INNER JOIN Shop_User U - ON URL.id_user = U.id_user -INNER JOIN Shop_Role R - ON URL.id_role = R.id_role -; -SELECT * -FROM Shop_Role_Permission_Link -; -SELECT * -FROM Shop_Access_Level -; -SELECT * -FROM Shop_Permission -; -SELECT * -FROM Shop_Access_Level -; - - -select * from shop_user; -select * from shop_user_audit; -select * from Shop_User_Change_Set; -/* -INSERT INTO Shop_User_Change_Set ( comment ) -VALUES ('Demotion'); -*/ -UPDATE Shop_User -SET is_super_user = 0, - id_change_set = (SELECT id_change_set FROM Shop_User_Change_Set LIMIT 1) -WHERE id_user = 1 -; -select * from shop_user; -select * from shop_user_audit; - - -drop procedure if exists p_test; -delimiter // -create procedure p_test () -begin - declare b0 int; - declare b1 int; - SET b0 = FALSE; - SET b1 = TRUE; - select b0, b1; - select cast(b0 as char), cast(b1 as char); - select cast(b0 as char character set utf8), cast(b1 as char character set utf8); - select convert(b0, char), convert(b1, char); - select convert(b0, char character set utf8), convert(b1, char character set utf8); - select convert(convert(b0, signed), char), convert(convert(b1, signed), char); - select convert(convert(b0, signed), char character set utf8), convert(convert(b1, signed), char character set utf8); -end // -delimiter ; -call p_test(); -drop procedure if exists p_test; - -INSERT INTO Shop_User_Audit ( - id_user, - name_field, - value_prev, - value_new, - id_change_set -) -SELECT id_user, name_field, value_prev, value_new, id_change_set -FROM Shop_User_Audit -WHERE id_audit = 1 -UNION -SELECT id_user, name_field, value_prev, value_new, id_change_set -FROM Shop_User_Audit -WHERE id_audit = 1 -; - -select * from shop_user_audit; - - -SELECT * FROM Shop_Access_Level; - -SELECT * FROM Shop_Product; \ No newline at end of file diff --git a/static/PostgreSQL/temp.txt b/static/PostgreSQL/temp.txt deleted file mode 100644 index b87bbca4..00000000 --- a/static/PostgreSQL/temp.txt +++ /dev/null @@ -1,153 +0,0 @@ -001_destroy.sql -100.0_tbl_Shop_Product_Change_Set.sql -100.1_tbl_Shop_User_Change_Set.sql -100.2_tbl_Shop_Access_Level.sql -100.2_tbl_Shop_Sales_And_Purchasing_Change_Set.sql -100.3_tbl_Shop_Access_Level_Audit.sql -100_tbl_Msg_Error_Type.sql -102_tbl_File_Type.sql -103_tbl_File_Type_Audit.sql -104_tbl_Shop_General.sql -105_tbl_Shop_General_Audit.sql -106_tbl_Shop_Product_Category.sql -107_tbl_Shop_Product_Category_Audit.sql -108_tbl_Shop_Interval_Recurrence.sql -109_tbl_Shop_Interval_Recurrence_Audit.sql -110.0_tbl_Shop_Region.sql -110.1_tbl_Shop_Region_Audit.sql -110.2_tbl_Shop_Region_Branch.sql -110.3_tbl_Shop_Region_Branch_Audit.sql -110.4_tbl_Shop_Currency.sql -110.5_tbl_Shop_Currency_Audit.sql -110.6_tbl_Shop_Tax_Or_Surcharge.sql -110.7_tbl_Shop_Tax_Or_Surcharge_Audit.sql -110.8_tbl_Shop_Product.sql -110.9_tbl_Shop_Product_Audit.sql -112_tbl_Shop_Variation_Type.sql -113.0_tbl_Shop_Variation_Type_Audit.sql -114_tbl_Shop_Variation.sql -115_tbl_Shop_Variation_Audit.sql -117.1_tbl_Shop_Product_Permutation.sql -117.2_tbl_Shop_Product_Permutation_Audit.sql -117.3_tbl_Shop_Product_Permutation_Variation_Link.sql -117.4_tbl_Shop_Product_Permutation_Variation_Link_Audit.sql -117.5_tbl_Shop_Product_Currency_Region_Link.sql -117.6_tbl_Shop_Product_Currency_Region_Link_Audit.sql -118_tbl_Shop_Image_Type.sql -119_tbl_Shop_Image_Type_Audit.sql -120_tbl_Shop_Image.sql -121_tbl_Shop_Image_Audit.sql -122_tbl_Shop_Delivery_Option.sql -123_tbl_Shop_Delivery_Option_Audit.sql -124_tbl_Shop_Product_Permutation_Delivery_Option_Link.sql -125_tbl_Shop_Product_Permutation_Delivery_Option_Link_Audit.sql -130.4_tbl_Shop_Discount.sql -131_tbl_Shop_Discount_Audit.sql -132_tbl_Shop_Discount_Region_Currency_Link.sql -133_tbl_Shop_Discount_Region_Currency_Link_Audit.sql -153_tbl_Shop_Permission_Group.sql -154_tbl_Shop_Permission_Group_Audit.sql -155_tbl_Shop_Permission.sql -156_tbl_Shop_Permission_Audit.sql -157_tbl_Shop_Role.sql -158_tbl_Shop_Role_Audit.sql -159_tbl_Shop_Role_Permission_Link.sql -160_tbl_Shop_Role_Permission_Link_Audit.sql -161_tbl_Shop_User.sql -162_tbl_Shop_User_Audit.sql -163_tbl_Shop_User_Role_Link.sql -164_tbl_Shop_User_Role_Link_Audit.sql -165_tbl_Shop_Address.sql -166_tbl_Shop_Address_Audit.sql -167_tbl_Shop_User_Basket.sql -168_tbl_Shop_User_Basket_Audit.sql -169_tbl_Shop_User_Order_Status.sql -170_tbl_Shop_User_Order_Status_Audit.sql -181.0_tbl_Shop_Supplier.sql -181.1_tbl_Shop_Supplier_Audit.sql -181.2_tbl_Shop_Unit_Measurement.sql -181.3_tbl_Shop_Unit_Measurement_Audit.sql -181.4_tbl_Shop_Unit_Measurement_Conversion.sql -181.5_tbl_Shop_Unit_Measurement_Conversion_Audit.sql -181.6_tbl_Shop_Supplier_Purchase_Order.sql -181.7_tbl_Shop_Supplier_Purchase_Order_Audit.sql -181.8_tbl_Shop_Supplier_Purchase_Order_Product_Link.sql -181.9_tbl_Shop_Supplier_Purchase_Order_Product_Link_Audit.sql -182.0_tbl_Shop_Supplier_Purchase_Order_Product_Link_Temp.sql -183_tbl_Shop_Manufacturing_Purchase_Order.sql -184_tbl_Shop_Manufacturing_Purchase_Order_Audit.sql -185_tbl_Shop_Manufacturing_Purchase_Order_Product_Link.sql -186.1_tbl_Shop_Manufacturing_Purchase_Order_Product_Link_Temp.sql -186_tbl_Shop_Manufacturing_Purchase_Order_Product_Link_Audit.sql -187.0_tbl_Shop_Customer.sql -187.1_tbl_Shop_Customer_Audit.sql -187.2_tbl_Shop_Customer_Sales_Order.sql -188_tbl_Shop_Customer_Sales_Order_Audit.sql -189_tbl_Shop_Customer_Sales_Order_Product_Link.sql -190_tbl_Shop_Customer_Sales_Order_Product_Link_Audit.sql -191_tbl_Shop_Customer_Sales_Order_Product_Link_Temp.sql -300.2_tri_Shop_Sales_And_Purchasing_Change_Set.sql -301.1_tri_Shop_User_Change_Set.sql -301.2_tri_Shop_Access_Level.sql -301_tri_Shop_Product_Change_Set.sql -302_tri_File_Type.sql -303_tri_File_Type_Audit.sql -304_tri_Shop_General.sql -306_tri_Shop_Product_Category.sql -308_tri_Shop_Interval_Recurrence.sql -310.0_tri_Shop_Region.sql -310.2_tri_Shop_Region_Branch.sql -310.4_tri_Shop_Currency.sql -310.6_tri_Shop_Tax_Or_Surcharge.sql -310.8_tri_Shop_Product.sql -312_tri_Shop_Variation_Type.sql -314_tri_Shop_Variation.sql -317.1_tri_Shop_Product_Permutation.sql -317.3_tri_Shop_Product_Permutation_Variation_Link.sql -317.5_tri_Shop_Product_Currency_Region_Link.sql -318_tri_Shop_Image_Type.sql -320_tri_Shop_Image.sql -322_tri_Shop_Delivery_Option.sql -324_tri_Shop_Product_Permutation_Delivery_Option_Link.sql -330_tri_Shop_Discount.sql -332_tri_Shop_Discount_Region_Currency_Link.sql -353_tri_Shop_Permission_Group.sql -355_tri_Shop_Permission.sql -357_tri_Shop_Role.sql -359_tri_Shop_Role_Permission_Link.sql -361_tri_Shop_User.sql -363_tri_Shop_User_Role_Link.sql -365_tri_Shop_Address.sql -367_tri_Shop_User_Basket.sql -369_tri_Shop_User_Order_Status.sql -381.0_tri_Shop_Supplier.sql -381.2_tri_Shop_Unit_Measurement.sql -381.4_tri_Shop_Unit_Of_Measurement_Conversion.sql -381.6_tri_Shop_Supplier_Purchase_Order.sql -381.8_tri_Shop_Supplier_Purchase_Order_Product_Link.sql -383_tri_Shop_Manufacturing_Purchase_Order.sql -385_tri_Shop_Manufacturing_Purchase_Order_Product_Link.sql -387.0_tri_Shop_Customer.sql -387.2_tri_Shop_Customer_Sales_Order.sql -389_tri_Shop_Customer_Sales_Order_Product_Link.sql -600_p_shop_calc_user.sql -602_p_save_supplier_purchase_order.sql -602_p_shop_save_supplier.sql -604_p_shop_save_manufacturing_purchase_order.sql -605_p_shop_save_customer.sql -606_p_shop_save_customer_sales_order.sql -610_p_shop_save_user.sql -611_p_shop_save_user_basket.sql -700_p_shop_get_many_product.sql -702.1_p_shop_get_many_currency.sql -702.2_p_shop_get_many_region.sql -703_p_shop_get_many_user_order.sql -704_p_shop_get_many_stripe_product_new.sql -705_p_shop_get_many_stripe_price_new.sql -706_p_shop_get_many_supplier.sql -706_p_shop_get_many_supplier_purchase_order.sql -708_p_shop_get_many_manufacturing_purchase_order.sql -709_p_shop_get_many_customer.sql -710_p_shop_get_many_customer_sales_order.sql -900_populate.sql -901_view.sql diff --git a/static/docs/Kitchen Stock Take.xlsx b/static/docs/Kitchen Stock Take.xlsx deleted file mode 100644 index 970eacf302c9a4900f464351950a1b89b63d6b67..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 12360 zcmeHt1y>!}wlyxnU4uh#2u>hqa1HM6c5rux;O_43?(XjH5Zr_F=-hk1bf^1$f8gCZ zV^p0wRcnr2b>@=2_LLR_1w#db0D=Mn0wM%L##~#~0|o-Z1P1~_0fGWiRZ@q z$~jr;+o;nznwt@1fq{@`0D-*S|KIKZ@Ehof8Mo-7hwVFyzJ-@Blf~Jfmq79Be!*qU zse~NB<|m#a35N5jPshcuc{6L-1nr4s$U!Y2fqI(TQ{*qGy$Q;;mUzEFzBSJl&npkZ z49R|QW1+wM-YYvr1@0p@SC=>qjlPuWOABd`)>l1*<&L>xR7x;YN&#_7Mafs|K?itn z!#vCqi4L4T#H#7c)%#_w_#Z>LL4y1&Un4c-x-qTIck{!)A)I0KYDdD0awjLgt0|9z zQ_Sc<Y*0OIRnj72-Na#CIomil~uDA7XRr zja&~8o@m%eFX)Q{)=27b)0Mj-NuIq(WM6Uw=JimV{ihGvuCthRr^MU=z#0TuFS zb$=RKUgZou93Z^iVk-HDjLJb==TPb&|6pYYNl9iMCumi&*@I+1doz2RC?x7cZr>VC zS=>;NDK@xHEI57fr4n(RRuLN-B^TEp{d1z1N}q)Cn$BGr@GPI~NvVHDJ!{5c^mwwz zd|cjlIPO4p@#CpPv;i9(!^JY!0W-pzdu(}GBX;8ooiyuDL{6G|W*t{wlG{<9U1=m! z24sksknb4Ah5AV|Zah?Km@bA>oqAZIyNd_T2fe@H7p%SIslPjkXkniA!`mAX0tEuX z27&^1G^6{MpEv-lO?3bO(?4?9e|!e`Es?#U{NLVMqDD=6=wW@&{MvjbTdksAq=!Da zQ24dhEkn{*A_qvA=@xQ3JtoDRvQ*^6Ph^uYU40xecx1ocdQWV(MnPVM3)ZxhJXZTo zu4}!p2#-<!Kq&n9rmz$++hdr0p{yW>Y?Fn?l=<{STKV@Fwq%dG*#Zl zPa5dTAmC1EnQGCS-Tk1-U%0Gr6-n~N8o^|r7)Nv%>P@>MW|2l=`sKJjuqzGkYt8&eary|fB@lH=8BaGXd z`R3}z;l40KNs(a?ab=NtTBPQ2#LwkU7QRhnBo?A-mHr{uABe7{w%0vyEHFJ943Bw1 zJq1IqV`GjMm;@?`n9)J&$lyw-G0Q7`2{n^+MxkkYgAtV#^URgoly#R5KJ$%?cWQkD zrx6|st|JRQ=4C6a0DI68nAZtcz}WAYP2jFE&DOfXCO9<~*p-DWGPOg}q{ivHa09mh zMCO~bKe^r!!{FV%kSKj(FUkWq^rqPX${0<%4tgD6KypU&J~4(JhUA72^1|NvUIdM+6-wW_cvvsSdXMkpU z>J0qTN;+oUK8b&_sw}a%`miwPj$@gr3zWcm2i$2tcz3DViFFANFe0*Zm91a>Bbr_> z4UHxgXTTas(oUPMW0?=^2iy0$$Pak9$2*cS;AP28>oLVe$*VF|NOUIB{N^q~$x-Hl zOJ{-N*&qt2|+b$Fq!jggBCL<6;fvaB&rL%oGaZ&4kEK-Gz2#}Nup!2Pa} zuZ$VGWPrJ31bEOl(%jS2O!qL)eh*wZi8O7hs0noYb(`#9iKnGq4Q&{0&w9-20!Z;P zgc_MTqok=NspBfaY|Afb7f66rsBtq3%7pSly<5ztA4dAqXv>pdiM7YY7#D6*DsyL* zA4HzBB5T+z?TPHJpn?F*=h{CePG8>|srq-+1Mst=Jb-B4Pm z?N*kdFjkQ(kW4~N=g(jPZ+0of)3=D{*|buOt4W^(-PD4vOegi*5+w$m;@wLTK;{j2 zj}iKnrio0YSg5(4$opct0$tfB+I58*6G|(z4bA|HLhMuXQ6ebl(S^t7k1H)-rmW1p zsJC4sUppg6r3?H`61yp}`|I-|kZCgW{na|BzBQXlNNS_DuVu=o#44OWObr$v=>}h2 zjCbMogOiCZO*8Z!#qw){nfcjvHX>MZQmS{keUwk6Dd>zLO;Lc5W-dNEo-gQ2%M9^K z8;XjGR1xViHy6j-2GW8Vx({uY<&u|LK+^hw7L_{S=Y+7?d7@Wrg3YJ4ZP|fC=J~2A zNqG0V1Ra^TnSUgSTR65FyDMp)$?gmhej?=S)QQ*c%>&uY>Z zvkUv3u}iXgo?oYeZC6&fX!0EKUiro5poKRZj)+~P`*?F4@jNQ*@XO30c@?;7EFU{D z?2>ZthG$>OPc|vTTO=yh9gA(SU6vg^&bMZFUn~dec~RBe)j4I_FTOOgq9qZiov6Sg zB;pN*b*_)pq0*7@-<7=*9_t@38@*TS(cakI=RGK$)7v(m+pmo8*S1wEzg4utqtgjr zzl#BP$Ak~hg5z4lA|sFK%bCrYn0iOld5wkqlH<$$sx{d5kCoi5Rt;|hBoGi1(I35t zpZVC$&w6|6ycw&$BPkChmjsqRz%-QFc zz1IGI)^M92(ZvawFhnG~BJ(h(cX&jDA>+nX$Ien@+oH?-GMjo~SW?3Cswm&xtk1T? zPq#qPA`=KAq;`N$og-zw^VU)t(ueH6Pm2O`SG7da1+UjpPK9xWcGgvZb8A-){V2g1 zvw=Cor9yoWk`biveRY`}|6_wh%nT?a*;tKQ6wabIo;qY=}yeS)r7#_?2U^Yl9tmbRSsx^DIZrbq47DF9F6%fl&S7)Q2t zcNdPdKj3)7#eLyyhPnk<|85Vyjq9+sE7FfOBXDxZ6=T(`c6k)H)sLEu!?ufKG;bYy z?;HetvLclBbFcRY6U~y|J1h)cAR~hAU^3xS*{Tl4z%7lUhA;e-vi|dUqE=m`u#eh^ zJO{JSmX84HFa#)C5mSwhFQ>4^T*6~u67usdKq{@sJG-pwEsifY-}YafE_yNO(q3WS zPwM9|$j7Y^O2+9o;=jD~zdqkM9JIf_EF);X42H(*KNWktyv)|GKgT#LnfOs?yxbQn zYI@vU(s|sy;A?)W`2m&|w~2y{5+pf5>O7+B$fNr%nL9B!Swx&joCX@#%Oc<~GMIW} z5StOBOv(&}3oSxlt>dxS5PiN{xCGU1~aa?|XF2wLF$#@BB!G z^8{5qAaH3$W1znxOnH7CMIR<;LzFAF7wNfA!~RU@-?L}?_))c=MTXq@bjrz>osKx* z$rW*v&CWVcM6S=Ba-8tX$4|RM;M{w+??;idtt zU97d5t{hjR*!p(U-LG~Ou{=r^WO>kHtBJBILZR|G?*irQLYAYT8y!{#iOS&Sp0*N76?o|>cRj) z=PaNgc#J58&x4#^eI$28o{m(s(YG!Vi{)9)TB6>Vt8`13YkVm+uYJdmEJg`!+Z_~J zYLTs`NY3A)?vi&Dz`t6do}_T(?-|z$9Wf#4=cnyk&6MPt;-B8a{460>5KKRn43#C4X0zlHko#PmpQ9AYdL9iFQ1E}y6u;&G*&Sd03@H9 zJ#5TB|nO9_-{vy@Hv zYF)DLG%}$1#%JZGV3wmNuY$=706#Wtxa|4>8`X~}iKIx)abf_yk~qci8Lh8gmP>O# zUfdvv?5dGgv|8>Zff_MY)2?+wo_#N%--)>cnI}03Lt#N-LiuFT+qrsJpc=dxZER@4 z^rncWC3XR~+QLu5bW%W7-CT0UuGGR{4t_XoDMwqEqG73)sAdq{e~O)BWYn5&Cy^>v zammt8!P~xd{UKDt4Uq)`t$h_!{;;-5)0ow{RtI zQFVWvJK-V~K(ICHHJ^$VUcBPEEzP{fy3PZ(`2ry5h~%Nd1;44lfT#4)o+z2=)~=qi zn01cjUBLDKyik+8y|$0nM8A>2jT_bV27U9-yKMquxmg|IUr7U>QoQARR{8ow)}5L138YCQ=CrE=aE&5NmG zOkZ7H-O|>0wsHs?N&Vnfs}3kaa}4c!FwlH%cqCerrxG2)*`4Ta!}cml?jFXNU+*mJ zLHKG4TG|kt?>3u<$|Wq)|a4eI!k-?vcM)4wo~aV^43;E+5T8xn3R7w~~uvED$l zSGD`B9S5}i{S9DU@V=If2B_gh>XPpza`xCISn(46~%2)mx z9^{t0hp#fP zByJ4tP#lJR(4V*to7}(p?NBVO6yDpmoYS3d@L#p%v%LdF_A`|Ue@l|d?;tX zNQ<+Ri<2BFfsz@f;w$G$Et_On`XKgx8nQ0LZJIjqJk7hjkcTo|oDl>}{ljy^@gN%! ziT64t>>mwo6%$b!>hQ>e+JjgTW|JA33)Q1eqtdhF-3`LRhYYI}$T~VMlTR!ko_nXv z=#U~g$3JR(XZRXt94xrVCOM^s4Pd8arPCZttL8X&o75pa_90js_7}3H%nyM|U>M!A z8}!lc%ZaSV&iC(?p(}7=-i2d!co!#f6exjjp${RORT^(=#7`M5I{hv|Kg>Mk+!wIo~*64v4!E! z>0pTbvc)tHqMOhbzJfasf!`+qPw61_T#?mxg+#r%f&HCnOT{G)BN|b8n&S=jKu)rS zfI+pfkrZ~0wA3|LQL_mpkxxNk;dzlf>e3W;v0v5!RrTpa+V2mLQH{m3-Y*?6x!vm+ zl%k{*nEEQ=k5UGn6VOZLt1su?%)v%^k!Rhhq|>k2Dyi>(9wD=61KFyu+Q^&HPN&{ zDiLtfV`r+yc-npBjQ~~B$-wz5JqxjfKECOTD$}^0)zfqB!6n@-cCZ-HX$lVkKS(^l( zG2rB*v0i5q7l)*mJOpLf*5|Q1YwCUX{z<0c3@{*Fqi==hKg`R^jx>U;0=}I2J*BrP zR)B_~aK>vzV0BS!QcMvbr`a~REOmk;`wVu%D# zoBlzlfy1+bK!q{>eNJj1dwV&0NwmxJ01JV3?~_DN(YHf)HOBUv_1t~zVCM9+?njNm z07!R$IxQ?3Z3nq>VD)KBNVEkTynqJd&caP-w}blpVMmm+)6UZpnGRi^$9wxE6smU^ zw~meQ2PcqN@?2cOA53W`FTtS*=>}CxMEtTN~oNX{I##*D4>VX<;BztW9 zIDW}MTlBJ?&_(h$&*4n9Z5n$)&9r?NGf8Y zA!Tl@9!pnpCZiE22^~8`uFvH3V%j3Xl;*r@JqJxJ%czSf9_}*|g9}WzTr6q@Q`Ypv z9ZHY)7T!&>O5LgW^cH%`p8awysJ895z*@N}d>3+36}|A}KBYDVr5}WNR=n`&>0s;E zDS7GbLpiw>eThQ|kt32x<-_S!6x&;TO=YiS;+#6@_6%wpFqBToIgYN{q;wV6p%sJR z=wZVKsnj+PAJj|ow&j_yPDgU42Cx72A{Cfr>7hzf{(7%a<}z%i$6 zk5q-8)&{&k*zx-MlOZv2s}|loh=Q8E=Rkg`z3T)btZh)4B&}7Uh|6tmh95>Hu^hI> zQileCZ#axt+oh(hvEnk%Ebujxmm95T4PJ1|7`Z<2*52En(5J1r(@t|r&hM%*(@Ec~ zV!rv~MJ!hO`lGJm`ePa1Ynb0_zgjf>oMVzL?KMU^%%UxA`|x8+XMouyd;E`D2>hyJ zpB8}WIpHu@`i~P>F1`D!<$X679|Yyw_m^!xodML3j^f3wxNuy0(dF{D`>>#}V6ym6 ztu^;=ck{!7!JH{vU_)T3`T8k-@5A!PfuBceurzQ{|WIOj=B|zxcHZ=rin_H^7ohQdRMnYSNv(V;x&B)4 zZ6K{qVt}_n{QGoh&Ey6D;pei$&ws-?vl$in-#nu>R=E`5DZ>c!LkpV zS*DJxt=AMbe zlci7dxAgw{_4sMPdsLV>2x1c-RC0crP;I%)IaPR{r}Wibh>zl5vdepr6K&vN35y|* zeLK3)Tt%t7o%U-iP>hMNpZykA0$Wj-2>rGSLF&6UAhNG#e1@=eQUV1vgR*NPEA$Sw zK<+G*!VU=Q_DKD`a;nsIlL7@j2+3wOti6O|cx(x?a6FCK1TWcbmdN&kjILu73Y`y? zfpswma)4&#y<|upa-qMk=nZ{gdJq-&703pIO2A=8w~=<}>SAcDuG9!geE-DaT&I+<5m%nhaqpGIJ)5Z#u$yVidbI z_kncNKYfees}L+OiOARFs_<|SIlVbzlynelhsxN%RK@<2TD6`kLnk}(1~!bee7p&o zz~%|1p(#4WJf-^k$**;ru=t*fd>V@`=R4L1a@OL8MJctNi^->Q%r>6KY61Q`8B74A zPy^YMDbu_+Lx3fEKZ$)NiNBoqcf5GJNi}d$2^TvB;%4(5YWT6e0>x%~d8ol0EaOVm zZ#*!-vZq|WDfN-n>})PHL+TV%!ygNDl{AHm{FNLX|~5- zQQbSb)xSErwYc2f+Fs~;xHK&_vWgYpot~z*O9k|Mc+ga)!{<+L9$kHR_i(G`ru{&5 zcx%b_8UMJn<;jZ8-Mwl3OzQ0Qt-AVq@)}6&7~FrmLh_ct{+HzSv-_74ts0(8kLb5f zb;C{2?(-3GDkDOk1>;22t-#sMegv^ZOWb@vujsWE)OaCQrf^bJE#%^U42w}5U$W>H zUaMqALQ)A4838*JX3@;%^5kggm51}lQTAMgH6of(>5|^%)xvqkz>o@PpD?qMy)ea; zQM9yx#|q~F9otpbB)g$os5-Zfx#OEgjtRD(wkTRWTq7cb4FZ3BE^5V$PI-nEMxa*` z#|VIGafwPI$i*@^dA04vPl1Mrr7G@pg+D0&%WaE!&1N$85m%)z%$eSK;CV+%G1pt}a#kf_!B(1tp>`*xey_D^pJ+z+ zE#)bxTtT}@Bkb7$CgEnTs(YhWB4T<|^8Ra-nVl?}38WEr2 zbel(;7~7Jf?)b$hMgcDy4}u_P{&Ki<6ZnjsBs$yV&5_`ddcJEPGoi|Y#-y_4<_<7z z@jUGIQhKW?tDw}Ugf=`)(2_^ISG^Vx(YEqcLpN8D#!_4|EbU$OBfVZHXa%kDEV~H| zBHK`~7H83|_5hr+yTW#S{mr739udSoYChiu)%@A;VWuNwIEIm>;dA#`3Gcy!_NMD{ z3(kWDa$$ZJ(N}Zf#|Dp|QS;|6WRe%YivW>lvKSGb0KAxGG^QuG&lHiwNt5h{fN5eceFd4>r_MH%uT@o~>eu}heatUS?o zBKM@E_l@)#f+jkmCP;yXB{>ms>6#$h2g{2G@%tG17=}4{aSMM46aMZTQ<7Mf&MFNczbmrQR-sd^r-%4;II4xZpn2xhkVOk z_|4V?W?7CHQPrgjt`T3FpIxTyi(`YJ8b!uj(yrP9cCK1WCO;@C8q04mNz#M#))vgv zb&MYg*!o0Xi9;)xf`fB;c3)jy67Bn2n{N)9fX*pyNE1*9HBy|9x$r|mPPr~LfkH`UKtK<1MDj#+4q}uK5k{KHJc!^NT9Grj|rZqN6qhU7k$H)FIq)|RNM2GweWH> zABLQyr<$lj&VndM3!b3daA3y@TJoD4xz}HK&I7S>xywFN!`ZXDc*rD>rWb#7%pV%w zIdyOC(2vubCU1l{Of_IiocMlRT6>w@4mZI)ke&I8Vrc8kNR$SoFFD2~asQ7(v_20I z|MoWy?!PUPBL10!+Lo68rQjR){=KEhN&uGWVOtRvJm_r!JMJZzAj-WP76;l&KI|tG z*<{moh^h=EeZsd#LW@RQb)B9!f{`=Z+tbkvi+1J=o(O%5A*pmSah|hfOm$-m-4Dx) zhH+qWb#kTE5tX08?1{PE5vk6c&y5I3z_j`M-c&P#P7`ppl+*=gg);2x6gk=Djm4DN zn{(gIA<^#zk~C}<2p5ots$YNx$a;1?&%kL?!=Adfo!3#cDcY{xOl$a-WZYMcjZkbf zp}3@Aw&Xq6oPAsp-*IsV^A)38d&k6@fI_*82XaV%EsJH~68^Yh4HP=|q4SBbvrOqy z6+G|@0}DAIMt}%)Ij_7dKZJUs#%YMj~DF5y^3PHWk<2AvYUu*toA5)54Fvt!Q%=} ziKqhEoH09PKC$r7RzkEF=3s-#cfz|iXeOse9B){2`~uF zTj%GW#nJ!ylmB!42dT8Q*k1wuD&YK&;UCA;H&6PLobz|Xzlz%aY}oZyBmM6Zx8HGo zmpJ`GdV143{3dw%-S~G|#4ls;HZnBO~nza#wKV)=zI@c#E9{c5=Uj`Dl0`wPX7Nwh{FC{=qr0>i_#5effMDM~7;n7Aq50$N Fe*mPl5XArh diff --git a/static/docs/Logo.png b/static/docs/Logo.png deleted file mode 100644 index d49d2284c9587269c404a66582d658e62614e944..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 14273 zcmd73WmuHa7cWXkhZ2K;5&}v$NS8`?4i4SjLw8C^DqYeYQZh71gGdU}-7SKMa`*WE z-*cXGp8MfG_cA8kKh$MQ8ZU73 z30zti{?gUL1a9NxNULSzV1dHJ#ls`a#VgD$NXz|Pn2%4GpO3D35IiZsEdNSM%ggX+ zX(1$2GzIgkeCM5rRVmMr2R=5cuw7Nmo?x96cHPy(mhjaX z;F9!zX&dN#pjf#q<_>&Nn zy7R4aP9GA3zv&qHs46jv*;mrGF`3kX{S! z%t<-!uxH2g%R^CaRnzqw4>aZ`+pN>!7+oySRzAbup1P>SKcJ~^;Q9`xJKf-$3j5tx zlwG14+$%$^NngMZ$O?F7Ix?0A9krN#$xodi-NQBZ2)@?ffgasF?%I=g=c9aLfU0!F z^igYEJ9jxWN~pC%#(fgf)rN@FaXO<=v@58-tGvTQ=}dZ6u@owbFE)Z=Xr>!SB0gR8 z;f3qZYLsVJJSMTgwsxsfd31t;q}~7O9iiwaGiR{9@qcZ!a+zKl7ni~^)Xf1zLpDw? zo%F+vS_+JLH>E4G(nKA}O<(qO9Tp0h3Xa|a=|62dI8 z2esmTZCDy$uHsYk+~RO+FrF~Ng|xPVLugwpAq;G_fa^UrITf%zm}jOya8TpleWQ|x zb4&PN#lggWp%{^jdTLEIOp*w+Jc-m7Nk^=>KvysYY~i2U@hpBvFM{>XU$!>VGfq6) z!wm}j0eP+Qb~ZJX0qlINeZi}q7kP?W2Bd6;TT=9B0eUpRY4mdf8!3y_4v_`_`akTE zNDbNNlei?WwKtkT13yWs@_gO1Ix?0@gJW=oFDYkFWmD@(IfsI88H&D&B}RAI9jMoI zfHBTC41W18TvaqAo3$r=67$_527nK>eb11+GgArIxh8aU{!IFT{p2j+-F+{^fnlT)agV|gjVp;VvPm3MQcujY0uqHuLqOL zPr}B@1r>{1LIi*;?k#*)qy22JN|al->==9TgDu#M+FwV2;R*7$Uz0O*S(Z(Vh{QT# z;;K@x`@74I)^d8wW@uC2C@Rb=3n~cj%dj%A@8Rb8F6<_hH8p3|p{4o>V^$?JfbHox zl6m9TD8|G7epGiY22#bO3Mec*7u)1GJX5z3NowFeFsb&Lz>-H&*82s&JZCU#Un10# zcb$1b!hi*+nzeH0o11i!#^d52+Uif;8v?Fncka2;booBiY)r9dLWc&W4M>~Hj?tif zF-EX)H^_YbZk$%KhBB5%(a?tLV}lS2<}30y+mDw^R~!lSTzMRqgvFe93_%}7Y#gcF>RDaEF9x2Rwnn^D8wBsuKgng$+*6H z61a()$^DfG$VKtFS)5$H7FY+Dp!~ZYKznvRHp;5nIv5P1`S;`&coKyfT$C@gp@0#3 zFzCy5IcrW!J}#hO@Z2m<_CLHmPJCta2Jn=|ppJAmloq_tz#wMuqriVw1C+mE&=UU# za45T>V`=nBOjTeU`CA4BU<{IOV0GUBal$#|>LzJ{d4Kp1Zw-C_M3DKvviBg9n+pYS zVDoPce1NF&gCwT6KpHTUe=}PEqOJdCZg`16Ly?n5pjn61AlB1aDZzsIhM@*PFv@^~ z{dx*?dhj1+&buASpa4XSa`P-|k`fT-`6mMdKs3YbA5kd~Oe7TmW#x|jXsha7U@u?E zjNJQpp$&k3Y5zY?WdWxVbN>XH0>?l}03ug=^Ka%G;0_vk{>{t|9NWJr%yRlqu%6(d zXa5nb3!o2{1vvEqGMl#gH?#l$J+n|?KozH;S@rHTjb0^+&}T+;_v=9q!Z8SvO=7Q) zBl(0U-?KH`q#ye6Vmq%Sp%~77+hl-E;O*hAe&p9E!qz56kCjEBeWKMar5k0K;@`ui zRfyBK*kA$MMITU3wfgx;?NZygc|bilK8+Ot)c!HzT}96p{7Q}Gl*3K>1aL}q*23~J z`a5!syV*dAugOTNQUdNic05bG*2fzIs{Gf==BQ-pk4$M2dCmiqy*M~V?Qmj6oE$zE z7hptI5GFRH{k$5iu^%XIy`Hd7UYW#@wrmoOv+;H`wLBDrmdvLxU->m(RI0@4AaBUr zM?fjTaqk@*Ly6^a)vS>PEqB*xA*->BMgIG@6<*uXiNGCJJcVv8>kj+hCZ@68JT*X_ znqPW0F%ql=#&PuJzyG%jnDhpyq^7=XV7+#e5H6w>oacl6kPR?PnMJe?aWBa^M|*O0 z(CcYsQDXE_pghHD=OR*%pg><_W>HetZz+x0Bo%J||-Hei;~Ud?ebL$BwN)RE9QkFBvS68*M5F29x?y zkKry-EcHx ze51~s0{E7!Q7O=PU(MFVu7s8hHrM4{yk?U&-P2qq)VLHdRv#B`@m4~JIi&-PO{F7I z3a+j^3nbzIJBdk@>uPTVNnsAkFwX$Y{%M)kaWHz@%`k;rT=&eZ-ES6>-}1G9^|Seo z^1)Fq5cYPJ%9n^1phNSYLV#3u4M&e7k1AM3aom6cdCzyCxq{I-qByLLO*PMObX^%h z_>o+pwk+mJH~zA@W+zn)CR*~!QO7-GAERKl*Y9QoRCF`dizOrMa^JFAf}M0@Ch@<= zmIi?Ek0&O4W#s-T_3wn#RbIjD?4v(&QuZMz+W!3$PT zxH(A2ey{TJH|;r;RFokwcdGEsF|+7&^;DEKMr$E!p8GGDSNc&!pKHEkKkQ4|3FUY&vslQN!SAD9v-4r^A>Ep! z8>M|I0cNFiN9>H8-Gi!K;LiB07Bux7e{xpMOg`$aNLBpWWStAgXec^6ijG6m`8LW6 z>?Wwme!(`>Lg8e5_{U@`@-!mZAQ^w30o^oB66uEs_Dbs`&{HCv@p$rsnp=?_Y*UqH(te z4n5%JHhsPwb_P~Vf@xi+*p*aQ%>%(75(t$fX)4lBd}dF>HRA*A8%Fc=;NXYo7eM82nh4z6CK)WVzjPgx zTj}ECj{~9>siv}>DUlCyiBp6q>|rXLJN!bS2K-YWJu$SJ97=n?6;)8=ui!+rOpaG% zI&*U|?BSN$Z%6p>Te2h4vaSzq5RdnwxdFGztqxvI2spi2d&6_}R1R|yub5yHv;&Au4>89vw>aO@=XW5dGd@lAYv-+iQn>3 zOXWSJbDFU(+6yOf{a`GnnxGz{;q*zNg*b<8%#j;lZD!r*Ji0TiVQsz zcy3|7>9BIfsyA0(OpUoFA!^-@lxlG~tR(f5%giysNWo(KWU+0b?8IGs_}}l8ES%4) z$tMG6?=YCQ_J87N5>=500WM2Epdn*HzPtp{I z{D)~0vYkS_>dDgp_|sa=qy>ZeL7-HNe9QU_08ww7(tC5Cka0sTBLX)TI24|bE`4BP zQ7|#nBWT-e{8)wm;w;xQ?uF2kiz=&HJb*r>s3#2!7g@RI@~R)nN#2i7`=#$ijGAl!bu2ctKEq;_nX-n8t@MJL|;!f3@t-qjhnmu#Fn0BCiL)Bo$|D{ zbD8SYXv>NevhFV1G(?YU%VMnA@@VRAleVZha>h?>=y~zIK!hBJPieXj(2)lVss`=VU0}`Sr#jeZ-?Mu4s7-Y{ypBPB3G&yYlQNt2eE5|ZwSU)ms@M*2H z$E|e!G|)*A7Ked|>3``yq7Y+bKN1a639{Ia?m2aB#U^B{o*rFv_>w)f zfXP;z9ciq$G$f$OHqn*=Mz-~BUlC<`&pE8ZNqDw z=_Mk>mYD3uS&yYS(L_z-dz&jFj82u&SUokjHN+N8Tm078QR3R??ilq#Y(uu!m?b?$ zYIV;mN=R{)c9!M!d~1ksT+-K(o140@H#e@|Z&#zHu%1|AU=o_5CIf|nJeIDwgf{Pz zy-W3-38#tPI^;%wPz#Q-AzwZ>hrMw*!aR!JtZ)=EzD`3UBS@;wYgh`QKBh5I759zL z`JBJWBS@fI5=vCdB##KW$r+%h3L!HmxEbm09e7x44US!AxK~eh-vvoOEM#R;AhN=T zK+lsB&?xLEbiM4+$S~xfYOnKD?QKx_4ki@>IQ)cBV-P?~^wv^56aw?pEY7fI?>>^E zSDfvJl5xocn5RFbbr0uWWq6P@NMpTAF0*yI|L9mCL4WBfqwxed8rc$u?y6)CnR&lM zQ=Q`3E-<0-FCQBzd^ib#zifF^D+%H%fv$5V9D~ZPo>eZG1m@^Nf93DZgf`wcLF*|o zIS84c2X0Dtt?MkgHe*Qlpyqj;43lvp0K<|B096DqwGh>MG&-}x!BJ&$D&bmQw=uPw zxHgVw_IQq?odOMTpO&vGFEG1sp15D3)s-*0hl_C0y84h}q1?|lvJ$DyoBf!;)l(~V z86N-|TD&T2uHZ*EkLqCKx~V){ykJ&wJ2+ zfBd}-qc5SKg#6glFbncCO<6zBIbF!W)s+p!F+w{8yZSNlFSTEp%|y%_&r?PdDy(-~ ztJ*q)y^S!7QTQuFNIsf_CI0Ie7gJD}I_{Z>A+uS~7Q!DYc}>73 z@6EM_81m~4#KSgpZbj0EC%$vE8GF1rqkegj%LP|Pgv3cd z%RKkc%L|yVVPUNb$EX*HxI*a(93CxXCD#vz(X9CB?WTtDyK@Q?=mI@h$zVU0{iE8o zud>8Hdl-U)-(@O;2swk4UZzsk2K7Ci0c?01!ETk1UX@>O5q*sFD`!ljQd36u?Q`^$ z#$jZ1aHg!qZ3wP-!g(5?TtNkOvJ;o3FMCuQr`wA>h{X1Y$#mH&{B|=GGj?cKSyI6) zBASHYuQzl&+?8xK!_I|v*}e|_ux2f1p)*nhaYP+gLWH>R&Ec70>$2}!mmgqO(r1hN zo6{L|tMxqXko-MQ)wSoHs!H|N@0WeB$y92=j7HaS8M`|2U}M@WVze5Hfa2Y^| zE=_Y?x9Ue^150@KVBWF^Rk3FH!^&$1mOJ*TIWOuW0JLOCIL<6!d&$qIdam~bm>N2J z(g8joC0_Zdg07QJC>*+MKT}jb;4GHCAI44R&iem zLf<_x=uXS1`hC^&)us#KIVXg%ZCm)sSY8br_RJd=s!kf)x75~_?~-fzrg;lg)V&-w zN!$!aTweeI9`MCfcJ2?`@J<&T!b$IsrqoR@62?=+u60zGFg-klAaWa>FD2d-h z9I7(eVMm5e!FZzCJ2ueOtV4rt!IYZ-*m|eF|DA(u)z&YR6#9W5RVyvb@VcY4(q}+#pV!{x9mfVR;*BwxSqqO%_?I_E?ns+3OU1wy}%(m zs9BHwj@ERcwyL1Y7&tv|IU*4HHMc0Tv$AG9Yxc+WOR;8=v@mqtxImwFr_Ora*IdX$|dNBB^A|_{)TpwhXeO#xh*J(DLLz(p-cwi;_;{SHhW5+;V7{VDsBj9`s;eftgKJ6%ZX6Y{-xJ zf(jBzAITWAATES#W*D1@7Q6?=(2qp*wKjLEjql;mzgTNrr1i+UjS*wJEv-wd5Ny``7o}qy8^5QT0G}J+dfq6G zyNhJ!P5C|Oc-Z{3B??bEKt!lzr!dJzPh{EGCZ#5E;bkke+|vER?HcWmGw2MY2I%UgHx~?VaCKv% z(OHdK5T_U%$s{>6dC1@j{|@ie_qkAS?tmvW^iZsO^2m(nazBKmk>ml8expe%-!R|Q zTM!*ZZxGq`U;-E9N~EkDu_7yI79EzG$8&~l3a@dViCI;qb#o>=3*VQN{wuL2sft$R z>77FV=;EeAuyw%xgX3q}Qp0lnxP^fQ4<9#G%U`^cgaAywDbjF?xzzKUA$-hWm=r1s z-%HXXKdt^Y2SC1Xt-jOkQ*?KL!3gicPQKCmeJ?cP5WAKgurKs^Wq6*72<_yv)E169 z%G$}9JGUyNnuIiPe2wzVT^ao1zc()-Y$<}la9-XVZP4?UsC*p9VMpTXM~Vdf5rD-8 zYXOhFyyzeODjEp9N~?k-4B|<=-$&%c%DSkO4(~7JOp9d${Ph-BV0(&Dpt#1!=Qf^j z&X^#o$j}i-)Z#^(Seb~({XJY5=^)nGxV_TgCoR-C!Z}xpsPr%oror?>j?l&W zcCoVGBKPksA7qeV-%Blb8_nblk1s%P$};|bVl{%jGP{B%Y;}T5NgT&4kTW~D=(aZ~ zJ8)Q<*6;vpX4%xXYVOE;>4&!*^lP-_NZ@%^KSNZ-K+Q~bQcQYQ*z^L6E&I14Z}uSM zfH29-z`qIo=8=k4L&D$pO^aD`DD{>m2*&*Fnsyq=w*lz)$LLW|GW`UvMl*AaR+%r0 z#+%7VPtUb|laX?xS9~+@n1w4zQG*IAPZPv*k}ujg1=@sbYdE@HAdr?8jHb+#r1csq zNTZQ;0SC{*L{nv$gjLA}Kxd^SC=TQ`z$W&eI&{I}$i(x0Vk*f2vWdSBzm5=DyF$FK?9&Ysasy#^Nl}&sLU(=uf9;>-U zusX<77B!O9s%#A^-OwOY(=c^b=joeh^A?@Q^>XWO4x%&aB|5_{L1>THnA;)5i;tuV`v7CiXsbxHfq zMSbhQyx0qKMLoh#zDn3JM$udRJopMALa3*|=y&oF55=w)XYw(xp?_jVL z*;EgCic(jedOdN32lwJ6{i{*$IMS|Bc}qZBSnaiop_)w~O^9z{dE@ zsbeCzCpAH*j^u3dc+7{rPv+R{xFqwrJW|DQ0_GTcXe8MGC|^cw!KlCVm!)kSq-MKr zFafuvvx%)6e4nEv#{N0CQ;g{Jy0_>sX>Cex|6`%Q3PTQ80WDGulHj}@Uf(lANE&e0 z8_?u;yH8{YZPqoCAPFpe166p@+I;9AO6Oz^(^gT)1fW(f&)bM)aZO+)23s~)0U~%z zWz{m-eA&zqeP>+GS`^LFJf4w0OLIjHBiX&;zJJ&opL-+vcLx19?&yH_%%y~(=p*x5 zIBET;>s-#akLdstu?s7ZuVFpUQiOTUZ7ir>!*DejGe5RI7e7(Iy9)F2x5UsP3)8~>DX<%GQ_^1@6{1~JA*`(o=3bNEJX zZI#gk(w5azvN1g&e1}jD9(aJuqFWnk&WWv62O4|xjv`3Z-mx#Aav7w$(U4Y19QrPiIseo%iteaCjGU;Ki>;IiV6 zbz^OpAi$v(>sqctxD&??8fS>FHVrUc<2E^{vq}~Vy@SyAW&W*dyi_#JzDToRqSa1M zj5jI!zd+rnK1}nd+I@ewzmcYD6)ajLWwOjiC((R+sa1t)>C<(Wmdh2W(&QGhUJp3A zeamF^b;XMlulUt?cvaWxu@SdyB-y7qg(u;O!3wE=eP*$5`=%HpSoTDtfyE=W*{Zqg z8eo%vNF8>)<1ZsOKB}t(!bT%#&5dJ^9+Gpl&9|C*4A~V~?Uz>`4If$STz6nOE*@jW z02$6#aW@sRZoe-q^9>~_A_HmZNeHjcWSmmYON1af|o$|g3tC2

Em!oM zbznaf_6&XH)OhHb-N0eyAW!&A%Vn)16$8Hn%F2`b1@U zOhltz*F^DDUayy$5^k8>QO~&!aUL9eO!<9&I{PZ%F{Q~#G`GP%T~0{i=an0ZW8W&l zOAni*g(#g?dUd8qMg#6=>>ifK0ZD3&*;y5D-sUcMC625VEOj%Hf;u>NUcq{)waU5% zHn}~jKH{e;_r-(2Q^k5pLHl2=ZhYk7A&P~pmw2 z>z6=itg6eVLt9_1d5E);w_f!h3xBG$$;59DU3z3Yd>VG*`ZWU>KrzphDRB%%{Ib>F zROWA{UqEF|K_88uKarJ?{pz3q;q~H#*Km9oNHpUgYtx|5WO=uxbd$4RFn+iPy;PO^ z)!3nOwA`&a(Dt`Hui%L`1wN?#k*_#jY6-t-_KoRXYJbSxV(ae$rFCnotf>*C`gv0k zf|lCy7uPYdntYLb>0OwQ5pg5WuxcT~_tauE*hE6;oJ96zIS)A~WOBzz{)(tIBvTEg z*wXTHw0rxyfsPeauF(}Ku|L1Fbkp`4)sCPd*Up@hi$@mF`P0;U&~UbkX486k!4%Y> zB9}31K#RRo9&X(Ss;QVRu&*Cv{V_r;8rB$HDBP+{uK1IY8sQA75F*&O77I&Ou!9m& zA1U^6d-5g6cHiYn!CYV&PF|cRN8MGo6!(sO<1Te%(u*G54SpUqUm7^F4vR+lHP@P- zQMBm~3lyL#Nhq+c2oxHD6AIR;%&{ht|uz; z^R>-!P_gvy>@{IEpIbfnbTaf!j}QX2DgVXnh7&yDGg;QN47rk?T`5AeSJvD$KHjwO zC%6^%F&~z5|B0sRxq9uslaLN*#SOYr$Y~waxZa5V{u!(D7a#4aeU#2GKm2KiO^SvA z%*!jsh2^7XpG66VC$lZEyTHbknLI?nKuN7quWoeLh42IM7xW~94TlCUW69A!+j0!g zh0>17{<9rxGhW)i4|r$pEw@f~&5L~pk(Ey8Q(6v3;rZC1o7_UZ-Y;J4#jA5Xo@JDn zi~S${M(2Bp{~eZBnq8egsPWsJ-%<6;|KWSnG0HJf7|}odMBDy-Yg0_2h9hUXU?twtaD1a*wS% zp<3{rC~|!4tC71O$+h`0y+s0@X%555)pI4(Qu0ueUN04^RRNtp7dcb$ZOqoB&kS6; z9ohAUXR9ycQP*$#Oa64hfBe>yJ<)mxGO(rtjubcLuRC$}2X1bZ{9MB7`Xu<>V77g; zH&#R`dtyGF=_TZQ(N3)xyY(=3C$&P_4~l!is76W$kp4Woxjy~rtMP@)H&Hj$T) zD&BFS2tF|&lCDMz0@V{n``4&qxDPobe57?IAx~T(UpXPM;K+JQMW}F^r~Skjw1f3M z(Z>0B9{JuRhglV2n(K29|D{v`fXOJdPychV^$3_GLzzsfo?Ejb%|i)n4ps+E2T!jR z@j&N9Mt1al6dQSH{X&4i6DKLc4y-V606`gIBibLlAv8t{wAWH{)ccXk8TEKT6e4c( z{)xK5YKPNZDeeK+`zb4ZqC5uQ|Mnlv@O=!Q6`7K=14Sd54Lyl{(3pTbagHoVODZUa z34iQBC(jP#6>NQc7gs#oIfj$lFq}}z;k;tUj-$x^Chax<1u`M>kMF$Vqa57SG)YQO zCx5rGP>QC+GxOg*r`Yj_SZ$3hmO>)#S4p9!9g@PAhK8PusP1ic^uznEx80 zF6YhLy9+1SfV1UWF|;r>wLvyG2HNXS@a#p)GmrJ!{USSw8_Vzms0AD($rm-80U;%O z1Kjsyy~H`ovn%TyZgLxitTH+k@spqY@HQYh9#to__wS1+|1y(S`5$s=Txb^`*R#;l zBJJ2{#Vf{0*(#fQ2yRwD21dAv|OJNk&l9Ny|_W zE97uINcstSfN0o86g_qx0J)LBQcBebFPRyvGWwSfS)APJYxs({7d>D0Ewn7)rO}$r zw;RGq?uv$?PKvChCWx33u}~a^S#y=6D%G#&KGP?ZwQQzEd}+Xs;H^qU$NCjRuA%6(;v1+be%RArr&Yn!{&lqd0T`n^&KDgxTYaZxJvR?m~_ z>V&W!bizyz=3|xb?elZg!{{pFlQV~|T3HC~LtCL`|GP}ALa8;qrcXYtnoC<#!D8HN z8cM$PO|lp8tjfXBSd81Ihgyg|K^z4WE`Ww!H@d4nYL8RUJ1QTSU>cW<8xb0 z`2<+D&l68eQV@Px2h7_)II@-pmO=TND~`kM@b?I)2U~(_o(kTTlU;HhOJw@5w1wus zXeezw zSHRK6sOmWPbCB8)^bA_27OXd@^-(t!bq(0aZX#@V9GATwP*-nun77Xzbq{1pet%*x z#v$8hQy7iGa!F??w??l9&Gh6N&`Q7WnnI|W$UEwL z7I8WYEg6iI4DKBK0NfZ0H?6;FU5Zy%biG{ z{GeRu?0R(n%SFuhoQA9Sk|Tu`^IN5Y1UhwTwmHrT``6WrQySMC-yj`xmYf$qsM}?7 z%*r+m15QD^fzp%WSdKnVy}-Q}o9&OvG9zk=#@;`so^h3?U!r{mKxNEe&!2^2i%Q4O zD>Y}rS5A~dZKdBv*=E08R&EH!fb*0w_9TQPs%EuhEQsv$NQC9GI8jIS> zYd2g}7qU>V!hy@AHGA7z<;Qy;nfb1Oni*Es><#$rEVc&n^FKKz1cmn11*gneoSRik z_ii!M=Kq(bzFIt1fN-**n0ep!>%7fM7`fMfu`zd?SEq)!JG z5bJ19@vT$Pq(ur@^O^J{ACj`dXboKGw97P3f=o3a9LQ=saMdXO98rVk4Xx2VvY3Lz zuf;eZOpvIgLxVb}vR5VV?aGt^c;qd?x);ewns_O@^+9wmnko@_`k*b|NA>&8F1}`Z zuJ=}@{B4l5$s}Z@$AYOi0i)EVE0OVX&BP|8;dXK6aD8O{Z4t5Hr*N#cqAEzDg))SW zX3y56WkhZCjQvI0l#Rca#^aCFk9&ZnLzpBJQ3+QykJk(SBm#Fz#~^>H-V;kA|i_62f>Z6Nfe$yjoo|&3q+`5lB_2p$%n_3d+MnyLJn!f3rMD23;Z`bU<2ABWs zA`}~=%Jnn?-P>7-Hj=iHkgE{zhlXJxDNsF!teL*tCO3GKz0npF*M2& zCGZkKw4D}5-fLNm{awzt2~qIAxFTYV=)@olKDmZ`kfVMB3Ud8ultiU+`4DY6Xjm9t zauCKeWKbJ#0$Ev5VcTL>`*4pfFU9!}QB|oNf=)ruct}@LzQjVdA)jL}T6fLX9d?M4 z6T{4(kK{nVcAAX>uk`6NXt*6IsI9ro+ngoU1%(+twW#Y@riX$TW1>Y&%jaN(eQc}M zgOqg8i3|y{t<9$Q2a`#W%zk>ZC0>H$dHku=`;RUeI$kkxzGDC}NWQN{odh-K6RfO| zRpES$7Kcq*Asa1P-Pt+|4!Zcr5;BEfg0=)=&EG+rhT&kUh$eZcc^%n{q6c0wPd~^a zoz+(0GP zs?Sd6C?E$x*|@lp0eRE^%_YpOVUeP&fHzor(HTWmyw_jdBJbtO4pv6d%SUwdc;fnD^^hp;D9&pk0l6(g>) z4ukiJqvGwxSR*Z-5a-`mP@y3r#@6K_`-(jgJqyTVzhgwjD?Pa4^vQ>eB~}YE8lw{6 zPSZ?8gWit(F!b4x8%o-e#`Q=YJ|zU*tW7rzFDDISlStF#)j#jits!4ysS~x^vc*$r9DG?_0u3=S`GO!+QMIpqQ%Z)I|9L_0&yRwSiBm6BH62 z0(cMwFI%9B7KVfOaiaM?v*nThdr^zwnI-D4UF0iVba)haa&rG(?(&X$-9?f?3Ob6J zl$X)stmTny(kOC6puOq;!2tiKDgJ-|lzsQR^A0Q1N(X~z%&Y{wVTU3wt@5h+g>lIL E1;^LCwg3PC diff --git a/static/docs/PARTS ERP.xlsx b/static/docs/PARTS ERP.xlsx deleted file mode 100644 index e9e9dd97024f383bdc154858af6a736b2d38da82..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 17618 zcmeIa^J6Am(mx#Awr$(CZQD*Jw(U$jv2AB!O+2wPv8^|A@9y{BooC;_;CcFo?sN6& zs_UTY)ak1Fw1PA+2nqlg00aO403m?UdA5ZfAOJu-2mk;w00fY>u)Up&shx|yil>9A zvo4*7tqnl|2oOac0MO_2|9AW^9)Zf_ak&8o1kneHSK&QcskM3m2-dT}VI(R=zTUy4 zp>kvG981fOoQM|$p?p*;_By2LwJ%IplNR-Mw#|XzLmf&mQ2`^ps(RS$^xub1Nqf*S z6P>g)FY-{Z1sE~)^<&Jk0MZ>>29#Jtwgsgsu`E#0`22UXSBBLPH;39_%C$;4M^^i` z-vzfmwF%bI&5kF_f>mD@d0VbE6mL!4 zy9}UU9o2|d#bh__GsurxC^LT9Pq6+%x{Zu8xQT7jo)Z^uB8Nd_OS4rpoFgL7$xapM zTQV}*%F!!-W{l%)SNsEf4@C6w1LYp^sQso_2w}9Bki;kKY-{9*`^)LfzIM?0RqBx+ z(>oXdz{dwLfWm*MWs@oc@$ILq$$V-Z^ru?tJDJ)z)6@Mv|DQVkFV?|->w0CPto#52 zOz4HgYuL!c!g@S{khHs?LXxg)*D>xOIQ>vI_<@O+=+rr(#eTKM{Cxu&A992bYX}C>n1@fYy+#=7!N@HQ<7f@>x}AZ3}zeanf{_-%@Jv5iEZ=r_AYW z2I`2jk@?SR?-3iqyC*DFWeZNrTB95%E+S8T6Pw-}k*pr%H*Z?GuOmuCEJ%+`)8fOV zd3SzVjVxE=*`9;!kOLJXm!pAE_@x`47V3X0$t-1$VFWM$fcK{9x}WSX!l7QGCc&U``yc(Y|K7cyr}OTyEkl@)054+^crMikbl z3H8NveLKI8Gc)?V8?A72V1Q#XCg>tJLLphT+DJCwI%8G|HX${YJ|#QFhNS2N*}n90 zDG{4han$`LPZ5ZHRt%$tZOp9j$|{YjSc1e9m4GMNK6lwTHPfYDRTaJ#ZffKOID*B_ zz2hce))*>i^HnX0cDlYZ;QQ#H;2L;-n*o96ECCls)$h!dSapiP{$k>V^smEg{g1*B zaA}OKaHFD$T@Kj;4XU#r-&Ef*$Nj(u?&%8+^VEh@5CR`0SuSj_8SU-aI!)lkkFi`@ zUZkkA%Vt@mR!Uh8BliVF>ylvRcr6SDP&l z%oK<3w6wIOQO$BT^!Edq-2HC#bUU&L5g46^Ns&Vc8{16{=%s1@Q3zpCY#dGyE-oH7 z%@2n1nqnw_+m;B%Gfn0me@f~TF#lzyqPM!5b%LO+Z%%s$e2PN?7#e;qVPAf|4i%Za zZm8NE{)$4jv+f3VE#5aBa;1D{kQ^2(gD(D1$VDE$3uM)B{Kg%4qc&|QCktVmlz7uA zNYRE=n7rvL$DKr?0TS{{mYb^k6!_HrB=^njEC}^_g+5tQmJPS6!^=6SKl| zD(fXz~Nv?@8i-ub%v6`kw0dwG4;tH9YLPkQuv^Qa5| z&@1x0Q_sr-p5l|EaYBe937ypEd2DrVR@K0`OC7|6$$!U3dRw z=>R`Bo}aq^zx$|El9e80KS z>5SaQmpDR`gTis}NI{AjR#;3Va@#f=%3?Le;L2p>JcB#-xzdj}?)g6lE1y;cHny}7 zWKx>#f3yj&-h<@^dgA}M!Gx6Lf%OFV@oS!t`ms;+9^$(5)lAlN%DS)c8D<}+LK?4} zmDfAeg&=H19N&*J(RsfhqeJy#+ePSQjIw9-nr8g=!fbDJcwzH%rvInNc%Fh~u0Vgj zuBZY4V0=FD&xPLE!qn8onf|W}&q9sLwc{C;;KAr~G0AeY@(q zB}>K_Z;xy$4+_lbof-Z)3_lk%t33yx5g0s$(pc9#?X!6aM#4Zrx{C_9!Q0K8*lN+fcg6QoxR$x%aR|GPkOG;Yj*L zq*9dn)Y4yx$n(APDB0`;?S?NDa(A!vD&jJR-Z1nkOG3$^D!Tj(V)R|}#`ZZQ_bFOm zvgK(r1QJ<)K(7_pTU7KS38h$F?G`F(6B1kBuv&*}Gon1tZ_X1XO)$et-tw!bU?z{p z&(7$s?*k=F5oqI*I>jHqY_uSG4AW45D4@IG9mp$k6u;YWar`Rr5AvKNORZ9$0c!DA z6q2eu*3WB(w$N_jmZo?rOxAH+>_A$p-aa>XBL@$^`|WObphe!@?P2@wqNJwgNgsc1J z%j^B|uqRhvFIT_2+ov7dSNdjsci=|x{-LloY>&V5;N$Jx0{&qWAOAeJhV*@ebmJp6 z^y#hUp{@Oa%bE9zE3W^L3wfF=r@?phEd5{w6<6@^lz5u2squ-zdy4C-vd!lzhXX3N zA@W^Us~#_8S`&R^v5E9V@$swczGjQl{7^odmG}(j%TU7wtu5c@gXcUI`(SJW&dFd_ zUV4?9m2KN#n?#V81}ADKJ?8^AVwd)fJ2^0)>GQ;;1#sk%tNmU_cVVWWYK~ zgXci9!92jIDL7dH%hwY#55-Jn=@nV~%Gdidk%vj=JS zy9}Uupvd6Yv3=7H-bGD@Ag>eqEY+Y^F8E9p8Xyc}CD9Ofu(J(A6Y$SLtF#?N2AnhdnyHrJQhv(WIs2Ibpe8mDcf#COtQ6=5}_5 zJ@BawQkEVz0`$gtscq@A$#;1%rjk|28n9p zlk9wkzI@ILT2N7x=I?t2wJwY&iV6W5D5+#-T`VMMQGHVBRhuB6lb4tC-F>~HdcW(K zC|tKA{Eng(Nbqz;q%tjZFmSmkLgTYjolr(`VK!&bb-z2h+!XaGOHd$n*64M3pr{Z= zOLRuOP*ezm)v|+LmJ&4K>kxH!hd_T-wft43KtG!aH>mw2WsdsIPWGFZr9~ZqEAio0 zZ%5BHPA8;MOZ8#j@2QtX=x{~+-AV#C;z6)t(#K`#`Y&s!&6c&ESX9z0kP z{ouBLPqNzu(ctpBpM;^!^7rG!{=AWS41TQz54nOM%AU3kj zEq?cX?_75};CGWh3wvJkB^^9B8?4#7@g3}EO?uC3PNbYLvV)oEVSI`;i(zzTlLL8B zcTPSQE9R3?!d7=)pC!xRr8=bL85gQ*z5rUMA!dZ0N z-=}qxz%?U;WaUF`DRSBO71i3Z9vcHBkdy{EFy)re*YB!Ed0<||>W)`tKaLIWM5`Ic zEfwN(cuEB9h&W&)XOnhNMr7BD1r5FGv#_4Kc#sdT)M7R9YtBXcmNRdc+w~eUD-<=t zcA6EPuXob59mi!#!o$TMQ;4#fu1>z!y-5`cO_mk-GxkUxTU&4}IHkd7UvosYMK~$b zvTv)6S^r{Pa6-0AQ8g=N0iER7VauSj%UDNAPZF_b+E2wq{(9{6lN9E_ED_3TiMI-I zbTn}%%~CGlZG7O8YySQ7&m{B{d^jj$72TkwsEv3tl%}FRrm zAEQ`-t4g%&`dyV?u9jVctnor`BphR=l&jtbS=5Fy^3PSqWv3>k*qF_@Krx8Rm2>c{ zY+j;`jkrJA!T6L=7zZ1hW@9Sn0$GDP=E_8vFOu`?_8U~kTKS26Q2we$Mx>I*XFMns z59}F0 zkbxe?$vui6-I(1FA!<5C!F*dvbwZ6;YNPZpT&l3(l=P_~iS65c!IJ$} z&T~%XzS)-fs9HQhD?CtM4~N)971v_rw|Zk?r24bqJnl!uXKPLyqIS?z%0Gwqtf1Al zp)C5BN;8F?Vrh9}R=SEOS9qNZHPt&#ri4oKh`v#xdgtBdEap|IOorB?nUZc~?t>HS z_^JvOF0sfQv&v)!UD8;%l&KUub8?xLb53o0IV%`%`Bp{_ zgsNwCB%e@G`K<4b(tcaHQ_@3cfPMgSHr2G2D!3uL61XQ>S9w#(WEB&U`o3qyiv0bu z#LK9rX9_>W1yf}-g_>u3#finLb%d^I#ZLN@Y5;R)Sl?TG;tULG1r~U)@qR95Lj}

cxQ=PoYq9`-&tT2ijcQXah8o~dxRGhrPP(L8z+vTJ zef=lNp(Z9`)wPSd&%zL+W7WJRkZ#2a4H3DSX)C6cTGLvv9%&0EmfA2KP6luAhOW;9 zplO8$ZiIw-a}+93zU$oyUpq?Jg0p(Ai@-Y7if=tM^$*%6PxZ8&W#2nNaFm*YGxCnh z>h2?lS2gPD-h*i;RD2R76H@fD{s*zNo%}CR^JcoAB9mJouh1$6Dh~;~nP+gnK&RHQ z$AvnN_!tk?Q0w+Ynb94$fB;Q>GoijeZ)T_)IV^^OTe-|Dc3tZX>-k-w%HB&XMQ0tV zxmz+_W)E0dQZwM_HlnOzUzNW}x4+hWzTNYAOl3hyda$z})A{3OH{jzhugYJ$CYhLV zxIhLJP`{$1ZXxBy5CBO}8l6W(47x@@%C`AZ#`g}RKu30GG;^h!bU<-#Sm~VibOIO5 zg}MR|YzpeggTs;4gj+JAsw*cMG*;R;Sbif7sqHoEc+48<0O{39U0m6 zE|6&CPR~4l!TWyDH9X87=lqaVk)97tM6xfr1bzO9M>HBeZCQWnB~P|1wJNN%Z4!$q zFR`SJeB|SFu^V^31B{xGP7p7@2YBw4pmZeIL}ktpy^oud2;!^lfM^WbVx*Z3?G5Q= ztOo1TqZz{}%ago?G0&$(^D8(o!RW^AZn3-&<(aJ~?#-=Jb>%wJ8tSv2w~3)|FP$dzHZaBI*HR2 zLc_uB($76vyoq&i2?YA1HinM(dmy=$e&zQ^Omt%a3xa`2GKnhX`d;Sn9li2a5n(Fj z&?P)6$9__n7efSrUkh&zFZMLC@DOy8)_T1n=P;Ih5>p_us!Lx0w7QV?_SrW(J>Ku4 z4nI7vzN6FUd_d#=F#X1)nz}|PmulLE|NcJw@pk9_tLNi=6<+^+G$zgTwZiZHeW7LZ zE!j)MDuhz+{i#A--|z04-tX}pU!SY-0VF4N8yO2ZLT-fAYr@z=z!)lvKO-_rQie!| z77{1GF6=lVl4ffZiy6II-UgWuHQrRG_oc!dZK*+`62*1ml_8RLi}A2>I%Ez2{!WJ! zT3&5*mbXnK#W9Yt+hLNoH)4P52UW)%s z7mp%`QzgzmMr!O=h>8)>Ya3cK(=`dI%iBbTSTSd!BI$z!|3g~NH^R`t1D6*@?O`@0 z3a|57&tOh^;;>h5gl!I2r(#K!Az!L#LJ>x;{V`DfgL|kS4_n}0PhB6BrD)uH_z-yl zK-7y>K*HZmNpZS69h+u zSLro!QScZvJ2c&b47rBi`EHpkj^vUY_@z<)#4@<5OL|kc8 zv!?+NbPLMz2tnV1eQD$r(N`fq3I^SYq6t-cQmMA!<^)W(Hx(z@7E8XW9b>-fmF(i4 zJ#(^T4b)v$SR>YA2!osa=o}vnFg2nL#4f%#T<|?aueU z8ZJ0AD_U(!C9YmUMQXKhB{U_FBaxrqDRLN0jj?1 z%Db~Hb;XtB(m^+|Up9*NbC5z)X9ZuSP+ppV*bjKRq`sWESh7TZQ)VTuhjD>;5C9i`t9Mvu@v-#Z>D1 zVYxa>ElW}RtaF>^ZMP?+3M2F;4b!$4ucoV?8Y0# ztd%d75Kp!+=IonECKd#Q{(2V-p??J!w7PS>NMPEW{_(c zvrN3GLoLdD`iE&UW)WmJZFEu%D(~qu2-*6sT{Ehj2VujWti4DAS()f+%W5;4XFmhI z8pcH%Ks!*U#+I$`%4s`OmT?;FLS(Ifh-&NF%FVl0*_kcEjpwXa22bfVwOpiWU=aR^ZhbnDuDj?wc$U;{(#S;tU4Zfe)JWcO;4s`*h0S}3*!|FV53 zATR1TGt%viF<^u$9M;6FVGJJBtHQeg1%zqSwP#%CcJM z%K;~Lmk+L^SP>UKhAylKqA1=VO!rHr~d7W4fsA7T-sDYZNjs!AhNzVbW% zHNKyO_7|kn_XNhM-ViJ1R}0$)(r>i*8Q;!Q?9v0XwXh{=!w)1@h8VP(rX-+{!nPwN z#!&HiY)qf*ze-r;w3AUZ*_7^s)3x$?>SK&Ly#kB?O1tRZBzA>$5Mm3BH;`X?XOvJ78orV}Z0P*5l!WmMRHm3|gHdrzzRm&oXMgctK21}F_TTX{vt>srNR-yjd z&rB&gxdFXXl$`6U+C2e(Wh8Jj|6ATZyV5Q2flbd}I$vu9;IhAe1pgGa2joWIY5H1M zfkSbP@;t><2!$}y>dV2Zzz(Wz0&qU?>Yl(@e9cmZR5vB$WF5sF98U7b)`2hVJU-F}vm+t5P=2w>J$_3^0FU zJ1rriU8hTSh^-H4F~;SO2E+ncVmbG09tP#dvaLeTs)~Khm8aL~>!vMn(hO@W|3g?l zY+FssxB2V&Bu_Wt>IN2ch5ie9R?dBD zXxF4Nta=xE>4O1WDj}q{1Tx$l}AYvxt4(#DSVd6msd-N>;IOV*T?S!gHqJW7M#Q+^g z)dfFUAcBk}iF~NoKWC#%#Ju0@U!ovUWa+eq^R92wVX}ycsEEjKLz4iyqLz%0fOLAF zPWS-*Z+`ZROe7ygbN~PiP5=Ouf2x~>p_8eJvWt_Yo%vr{*O|5Iw5H}3dZC=+zWiOv zsBMtUG=?{VHI)TPbOlG6Buv)RteV3DU_FKq%VJlcK1oUyk5sjKEa*}3n&j!d36LdX zy*?>RM}zEVFJI+u&wJBz*3v`8+Iq2ScFOnhE_%3}v$n?YaT01Y`UgI}Y?*h{=>=I8 z5=A|fpW^pDQN6{43q*|_!|o)@o+1$Ni_) z>5r#L!<*wQ;kSbiC)IZMqA$4%laEP-Jkn7^td{F074;(pop}6CN~yA1Z4uh)KW$O$ z*V-oFR%Eq)$)=&|iG}-iN_EAS&tJ(S<9w7;tzwF6JHa-hbdJ7zwhKYvsB*Uo z(M$Cn(x%B;AvK+-0p*v~$w6grswglUJ)C5sVhD9jUF;(p7R6JILSd#MO_Ga0 z3FkMZep^kp+c;Pws-9&**mvL0&bgFwX(;WMtc#nKE}+0pON$cCB&aYrWS87IFDMt7 z;3AA$5geoHGh9m|$uptONCSFSndgvE6M`-qOs@dQo z+4$2g2C6_a(-P_;S*EcJ@6Vlt@BPBC5nyJ-==LxG;6o_O;R z*LMg;8M}BF`&f2dwOjLXD3r8TqAvFA?K+Lsq*f|xWcyX`_fb%+F61=MRC--sNLV{BB}MH@VwXbD1YgYA-Hb-Tt`EF%K8hKZdbYli0#m?Cz< z%5A#r1@U_-O9#E{sJFC65Y9y{mFKU zJBhjsUMD6QXuSB#JoIKXf)=mfMRoDlSwxn3n;s#Kh&2q_i;?DoLbPi8GGcCAir($7 zTFr|@VU{|8pahgS;YDS2s-1OH*OjMiOKXk8zI}#-cPC@T?D1QiBewA$f?v%}!1!Z# zvI;uK=S&PC{d>|Qr~=g2*dBi$?0G9?&Vyt|%S5j=|KgW~oalQ&)fByI-kbB-7ta z&o$Hx+S90j)Y)x~U6*ZlWLz!OFtWn~h0oS}{ZglEWz8tLLa@8CkVT}Y1^^|BbW^$_ zEw89ThLY5`r-61@`1Dozi(^cYZzjQ_%~Zl^Ot9`7+DNIgI(AZp_3Q@`#F%(j(-J(M z*EZdpD;^?Nhj0kj5!@N0T8liI#-KPI=Dz2c?A~VN>2eL z0IRbJ|uw1BBw(7EaFufxe7U8oF4jn*$PImlPYuNZO_m zv<_{<1Wm8QayIxur#lPWxoNi|M}gYQhZF1Wlie72K!8-Ntwgq~02!W$%n^jqreRXe zfN$06igj)0%=m)Z@|+A7M?a#Lfb8AlK;Rhf#8~}til~V!rNc>C8?6@y-r;a1hJBgT z8!I*3?@g{crmKY-kj(RbHT-fzqdcemCa7XKV!!#_Hso@*S9oKO)38f9VpEqdyD_C7 zC}EhWhFu?y{swpTO`LGrH$*O_{_^?z6ghVdgpt|`#2r}0N1jcQ6VTwdaDEAcPJnbd zNkSG0d?iVp-ifVuUNk7wW}2mHxx&ccIFSc;t}~WNRJdnvmYT5?=@B+b&#>v~kZH*J zrUrPJJ;i`+jONovpo?*d1xznButYStbsF$Jh!U4ewD3A4D8UvpX71x)YJUOQU$a2p z_@$+S>y3U$kq6AL6gPT<2alJ+jVcA(Kr?emCo0__E*b3z!SlVFse{!uTH6wgB<8MD(-|ljEnzIBR8s_M*8|qaFlyKEttj?Z^yiwX zY|926H;}U;B;xG@H$dUsg}V z>0I6e&qe}wQ^*eh7$LVjT9_IHdHS$})Gsk&B8W*2#gBR!N?2}3WTDmH#;CVu;83?za0;q?pd2m=G>QT;8Lz;*n zn>su@BR9|?JBl=X9VUn#(E_IoKi{i5=~!H3YFJ7tdirg*@LmwQ``Pu|Vd`VL{&-I! z>t+L#H+a4X6nl7nQBx^%k6%2)P=KC^oldO^y!eSpl|W(D1hW(Umj^Q}WYm8{MniZ9E?a{5p8KIQn?GxVZA`dK619 zd`XTBs)7aHE<^gs%Po{eb^W?(YpGJFd)mPPd{A5N77-d&=8j=+)Knnc3TS(`N#d#0 zB|_Wj$qpGr(%^d`$6nE-SW!Gk=e(@fCuQ2g*tA7hxhr7?y(#3l8td~?Y&F8y`4yLC z=tbWN#c%-4q#T7f_2T11Uz&?N6bWagU5tVwNHeyVnZHn&L;_^7!%M|p2Jn|lsB)C- zG5T4U4&V*)beA)TtmV!t2jtvi;y+3dkpxcxn$Ujmqf~{bU|-f}N~+FSWeeel&mAS; zGvYgoWh*a?=<}|+i-dbF>QIQuuU+}zKpjTU^;~}ce9I~HlXCa=+!lWOu^)DI^ge$D z+im1oIgiVDz4i!94435+Q1$F3r#RzJD3h$to@@ZzhC<;()og8)c}Iy^?rc`{0JBxh zWEpQMj=M5?AYjSIQaw>cc}~(=Vn^B^Hv#<;zU0yv1P>n+5N+=b)wPnlwiv6jjh>@$ z6R9FXKO2w1cV}anj8P(q;JKQp64C?Czv8~B8+gS9$E1BVSH+3Z{i^cnuxMC*Ro7|K zq2!mH*8MfK>({>E8(D$9IS#)T)&<8Z&rZI`{$e@kL-G{4W&soC|7ygq+N zoz;>L=Mxqu+N2WN+l~A*e0RH}09p&6PCNOtI{pLEQ~-mbjyv|kAjAA$G#jlVmC*k^-Par%cZ z_DRWue5V!AvyQ96uWF^np`1@v)lfeR zXL;e9Iql$Y_E@i^v1c#=8pGT>>gJXobK2|*Xc+d{vDoxUZ+FkxI;gv$iVPSqw`8_W zfb#Cmin?-~$0}dIraFXWp(tH@%mcQ$XBY;G8fes#M`27@*?v5Gz!b^8kOUFk2@%zN zwTCpS9a%B$lojtBee6`dLyd^mT~FiViAQcb_Lxh$IZ}C5_cY(5lXH)ht9vKuf^}*v zH!4*nOuga?Z8o#jC`VE{xYeqZ2Zg2f2CkY>d}FD^y9>|R;rfcMfI9F7{sN5C>~i`D z;=@|fk1|B&A4WTgX{{C#YyMVs+kKJ*VK#=kq4O1tTtO%AUO9zb+Vr`h9yP*z+4fu} zlY|<#afs8>50fH$<{Vj*QmV-&}VjAT*OkL+WMM_-a-fxj) zpw}pM`;?UkrVbb1kDfcaPY6OHCT}}mfdf6v|TP}ih=FbFL6jUCnAn!)A#^w22V%gS((ffq) z49_7p$kWMSz~CMw9j-q8*SD2!;8|6~yOVQjt1TDkmL~MhJA!iHD#WM7yr@`qt~9Ojv5; zY9zdCj{Tgqoz<-^u?bX>N+v!g_gZl4uPhgaE5qcy4Ji)Q-NG%ueF@Vm#-!0wBeXNL z%70ch8x=~)mf#lNKR?>u6YPeG&uPs(oE8h+L9d@}&7*0)qf``RCXI152xM6ZPa?*9 zB8zPD;uch9pv)s&-8WOq7qM24@b=JH-k#uD;gl2v*k@r{Gt9@{&fCpM&mikK1}R6%&P+B@AyJ zzfop~4hj)p3$2|UD<)@=s4GBkDl}YHudu3Ac-Nw0(6c4~z;+!3{yrs}Sq-@l;1738 zdHuY(8^aLSejlL2+m+BdSFzsKUV)a_?H!-_g#>}=d{tm`G7knt807`2^h6q4`??mX z?r;>awlQ^u@25gY%CS@v#ZgCx3W;wZnCVP0mF}iF zk5E%vv*cdkL2_pc)pFIwUwnOUE#NALWcI4e~HPsnUip0fj##4KU$;kmG-$8~V zOHQyEziR5vVQo^TWy<-<&+^?1T0QH{P|8^So1G?BOh)Ea3!6P#(rxuFg+#Kk|z&V*T`~^*|Ww!Hk&rr-oC2D z0))y?SjrT*S~lGDIb;4sV5Y(h!&wU}TOFK$9y1Ri#qp_o0q&Ae4ad6A*&x8$>}JNBk58g?$wQ*qG;V zlN(I`%?PGE(t3qpq2P>YW@x&j_)|lW$O=$rosE3?JlDMfKI!~$by>^>-7x)+iu2{! zVwf3%0f=sHIa6?KGm7exiRQs587haWZB_fHVV zns2;bOdAZM0*_N7Rg1wqxj%3!?;D0_Mayjpqv!=$@qxbrfvk9l_9H9Cn_4X@P*+R)y=H29(T*6j@H$^$c!seV=X;rcp>}Ti= zP+RYF8z#aM6A2g6Pn(&9$P&zpcec2$*KU55D?+?tgCH8|e41z(9A>ZWPLSEqV@%pi zocEPrQh0Dj5iCH#8`|#u8cUG|qFg&!`|cy{+rURnnvkn^gEGxV5;y(iqXrZj!atlF zy$Ds{2AR_Qg)c!c0>lC6nbM6#;>`jc1hP|9p|@uotra4lPg}qt(&v4Ui>SU zlyg84DC6F$5zhhyv%)JFp!fD^U9nQ6dsTObNVRHIn5rhUNoUa)Z&a?uzK&{M zl-I749>zT)Q-WZpfH&IR_Q-R05vHv6(L}?8-P6~xA5vaSyuN?6AZNOUIjqW#5gha&<~evO=Dcr3~IJL=3*r z`$Mb0vS;Vy#c&zbx*dc9y*u{IT?gKOncfLwLk0PKjDQg&V z!lee|Cd~}#$G!tNGbYFEjR?_B*4`arCxI9 z6=)tsY60NsJqnw#=FM=&#afB}+K)Xo_fmQ0RpYEIyG>l_0WEP6s7p^Z`Shwqn4vSc z@lN%ZFK16($uCU9-CCjIFZx=wV3`tXPt7(Uwm(;l`^<{osWu^v<#a$UrLz4p~mX|r9`yemI zQFxB0sfFh20m3pGv(2seoI7VU?eIv|k(>_?T@ke6#9ik5vnZMo&xWZODb$uPzl09k zv1UujZnVDTg{PZvpOzYb75w0}(umd`^Dkt%fXhi>>}u zi_o}`n+ucAo5Do4I_>;R8{oc=+^rADmZlK9$(VaB24;Ia6PFtXcykxj&j5j_HcYQ0 z_qA8|t1~u#Ze@7^GQ+G8Cp1SIAl%Ks;`sd=r6nF^|LUIogEKqW&*>T@uq#|ps2GCM zy%Vxy z`m&ou1_BQzzhC910BD2A_SMjn0&ZbFyl!Nl5T69@{O~rG00wMKh@Qr-@f#X>xeTG- zgj#{Z36A6nwN#2ZJo+LKh2&vlLe)QqLGpv;YXQ#@m|-;qj-RD^kEOkO4r4vlBH1H| zE?-?xx7%aj#mb;J?vFvcbCu9FIU;~fUDXZ6pJD|Wtv zI@wjje-pQ-Nu080Fw@ctJ}B6y}xYES?MY^!678>Y>E?v8-S_MxC3uXE%Xz%a9UKrV@p z`S^U5n<(%z^%dcrp8v?Lgtgth8AruynT?hMt;RUMEo^CE?f_1Qj)Yhg^?Z8*({12R z^`SpO3U;6L+i5vbTUb%DOI-R}KlQ#Cvh=!)6?F>NN_50)g4s}3bC>9gZLfo2``dER z*)VPE0O!K^$10a>-%ZeSOG?qJBTyQZCX7=h#m|ZTtV#WBS1NpyQ`KM}%g$%-xd8nT9`(s;UUdm>2IhC$7jP)>Ku>hnu6-hiaC>WrcgW7XKTTu6`t* z{dwgzAY*2PABdwr{aNsv&jG#~mI?-5!wQpMQh<>8bR}IgwRLIJE2fk@u}sZ!q=Z1Y)-R<}LOg47!G#PCEQYPXx# zcE0ZB_T@^SMIj+{VZ!1h9TNl_8eI+49ZSzIE_6&J$Wpt;{z5i@-$VF#6mC$kCH4TA zn;|s9GfOihBbq~-`XFn7?aR{_LtAC3F)PM2TVwBiU<39Xb8;n@5rUD%3eC(Zz=k!Y zKUirC&mJ#5+iWp3D#nYirm%LjkHO8A2Q?Jk8tS%EaOhFzXnVWK#kI4kIqequvEbEh zDyer7lV9;lxfygVoOh9|7G^6!r5R0s@o_X8Cv;&2!<8UZNlt+nRm!ok_?%&X`=)Q? zHGt)>Ac+Pu(2Zj~+{C>wr`P+vyOtS4z@sj%)nyM5zoJd@7W~RZW{nx96L_j%7kdil z=1%<}$=74E<1$o!l1UFcu;%nW%t|o}gmk!T+>Kqq9Y^~*dsNl7A8L$#@-t|l{h%QIpA7yJmi{lo-`BLy zERBByssBm%Csg-u(#}u(`yasFKZ*YnG59wr0Du$JU&Q}E_`yH<{0Srbn^O_Y|7*nm z0G0j8<y1&GhF{C zhd=ihe{+cE{&Nie>u%#uhW}}i|7HgOP{RWN@IUPHpXC3!j{ZA2$L9v=|B?T5RaKA% W{S=qqpG1HL`0=^&o(TT__5T6vmV$Bs diff --git a/static/docs/example abstract base class.py b/static/docs/example abstract base class.py deleted file mode 100644 index 0fee61a6..00000000 --- a/static/docs/example abstract base class.py +++ /dev/null @@ -1,88 +0,0 @@ -from abc import abstractmethod -import types - -class AbstractBaseClass: - def __init_subclass__(cls, **kwargs): - super().__init_subclass__(**kwargs) - for name, value in vars(AbstractBaseClass).items(): - if getattr(value, "__isabstractmethod__", False): - if name not in cls.__dict__: - raise TypeError(f"Can't instantiate class {cls.__name__} " - f"without implementation of abstract method {name}") - subclass_value = cls.__dict__[name] - if (isinstance(value, (staticmethod, classmethod)) and - not isinstance(subclass_value, type(value))): - raise TypeError(f"Abstract {type(value).__name__} {name} in {cls.__name__} " - f"must be implemented as a {type(value).__name__}") - - def __new__(cls, *args, **kwargs): - if cls is AbstractBaseClass: - raise TypeError("Can't instantiate abstract class AbstractBaseClass directly") - return super().__new__(cls) - - @abstractmethod - def instance_method(self): - pass - - @classmethod - @abstractmethod - def class_method(cls): - pass - - @staticmethod - @abstractmethod - def static_method(): - pass - -class ConcreteClass(AbstractBaseClass): - def instance_method(self): - return "Implemented instance method" - - @classmethod - def class_method(cls): - return "Implemented class method" - - @staticmethod - def static_method(): - return "Implemented static method" - -class IncompleteClass(AbstractBaseClass): - def instance_method(self): - return "Only implemented instance method" - # class_method and static_method are not implemented - -class IncorrectImplementationClass(AbstractBaseClass): - def instance_method(self): - return "Implemented instance method" - - @classmethod - def class_method(cls): - return "Implemented class method" - - def static_method(self): # This should be a static method, not an instance method - return "Incorrectly implemented static method" - -# Usage -if __name__ == "__main__": - try: - concrete = ConcreteClass() - print(concrete.instance_method()) - print(ConcreteClass.class_method()) - print(ConcreteClass.static_method()) - except TypeError as e: - print(f"Error with ConcreteClass: {e}") - - try: - IncompleteClass() - except TypeError as e: - print(f"Error with IncompleteClass: {e}") - - try: - IncorrectImplementationClass() - except TypeError as e: - print(f"Error with IncorrectImplementationClass: {e}") - - try: - AbstractBaseClass() - except TypeError as e: - print(f"Error with AbstractBaseClass: {e}") diff --git a/static/docs/server.py b/static/docs/server.py deleted file mode 100644 index 8b30117e..00000000 --- a/static/docs/server.py +++ /dev/null @@ -1,124 +0,0 @@ -#! /usr/bin/env python3.6 - -""" -server.py -Stripe Sample. -Python 3.6 or newer required. -""" - -import stripe -import json -import os - -from flask import Flask, render_template, jsonify, request, send_from_directory, redirect -from dotenv import load_dotenv, find_dotenv - -# Setup Stripe python client library. -load_dotenv(find_dotenv()) - -# Ensure environment variables are set. -price = os.getenv('PRICE') -if price is None or price == 'price_12345' or price == '': - print('You must set a Price ID in .env. Please see the README.') - exit(0) - -# For sample support and debugging, not required for production: -stripe.set_app_info( - 'stripe-samples/checkout-one-time-payments', - version='0.0.1', - url='https://github.com/stripe-samples/checkout-one-time-payments') - -stripe.api_version = '2020-08-27' -stripe.api_key = os.getenv('STRIPE_KEY_SECRET') - -static_dir = str(os.path.abspath(os.path.join( - __file__, "..", os.getenv("STATIC_DIR")))) -app = Flask(__name__, static_folder=static_dir, - static_url_path="", template_folder=static_dir) - - -@app.route('/', methods=['GET']) -def get_example(): - return render_template('index.html') - - -@app.route('/config', methods=['GET']) -def get_publishable_key(): - price = stripe.Price.retrieve(os.getenv('PRICE')) - return jsonify({ - 'publicKey': os.getenv('STRIPE_PUBLISHABLE_KEY'), - 'unitAmount': price['unit_amount'], - 'currency': price['currency'] - }) - -# Fetch the Checkout Session to display the JSON result on the success page -@app.route('/checkout-session', methods=['GET']) -def get_checkout_session(): - id = request.args.get('sessionId') - checkout_session = stripe.checkout.Session.retrieve(id) - return jsonify(checkout_session) - - -@app.route('/create-checkout-session', methods=['POST']) -def create_checkout_session(): - quantity = request.form.get('quantity', 1) - domain_url = os.getenv('DOMAIN') - - try: - # Create new Checkout Session for the order - # Other optional params include: - # [billing_address_collection] - to display billing address details on the page - # [customer] - if you have an existing Stripe Customer ID - # [payment_intent_data] - lets capture the payment later - # [customer_email] - lets you prefill the email input in the form - # [automatic_tax] - to automatically calculate sales tax, VAT and GST in the checkout page - # For full details see https://stripe.com/docs/api/checkout/sessions/create - - # ?session_id={CHECKOUT_SESSION_ID} means the redirect will have the session ID set as a query param - checkout_session = stripe.checkout.Session.create( - success_url=domain_url + '/success.html?session_id={CHECKOUT_SESSION_ID}', - cancel_url=domain_url + '/canceled.html', - mode='payment', - # automatic_tax={'enabled': True}, - line_items=[{ - 'price': os.getenv('PRICE'), - 'quantity': quantity, - }] - ) - return redirect(checkout_session.url, code=303) - except Exception as e: - return jsonify(error=str(e)), 403 - - -@app.route('/webhook', methods=['POST']) -def webhook_received(): - # You can use webhooks to receive information about asynchronous payment events. - # For more about our webhook events check out https://stripe.com/docs/webhooks. - webhook_secret = os.getenv('STRIPE_WEBHOOK_SECRET') - request_data = json.loads(request.data) - - if webhook_secret: - # Retrieve the event by verifying the signature using the raw body and secret if webhook signing is configured. - signature = request.headers.get('stripe-signature') - try: - event = stripe.Webhook.construct_event( - payload=request.data, sig_header=signature, secret=webhook_secret) - data = event['data'] - except Exception as e: - return e - # Get the type of webhook event sent - used to check the status of PaymentIntents. - event_type = event['type'] - else: - data = request_data['data'] - event_type = request_data['type'] - data_object = data['object'] - - print('event ' + event_type) - - if event_type == 'checkout.session.completed': - print('🔔 Payment succeeded!') - - return jsonify({Model_View_Base.FLAG_STATUS: Model_View_Base.FLAG_SUCCESS}) - -if __name__ == '__main__': - app.run(port=4242, debug=True) \ No newline at end of file diff --git a/static/docs/template webpage.html b/static/docs/template webpage.html deleted file mode 100644 index 600d3329..00000000 --- a/static/docs/template webpage.html +++ /dev/null @@ -1,63 +0,0 @@ - - - - - - - -

-

My Website

-

Resize the browser window to see the effect.

-
- -
- Link - Link - Link - Link -
- -
-
-
-

TITLE HEADING

-
Title description, Dec 7, 2017
-
Image
-

Some text..

-

Sunt in culpa qui officia deserunt mollit anim id est laborum consectetur adipiscing elit, sed do eiusmod tempor incididunt ut labore et dolore magna aliqua. Ut enim ad minim veniam, quis nostrud exercitation ullamco.

-
-
-

TITLE HEADING

-
Title description, Sep 2, 2017
-
Image
-

Some text..

-

Sunt in culpa qui officia deserunt mollit anim id est laborum consectetur adipiscing elit, sed do eiusmod tempor incididunt ut labore et dolore magna aliqua. Ut enim ad minim veniam, quis nostrud exercitation ullamco.

-
-
-
-
-

About Me

-
Image
-

Some text about me in culpa qui officia deserunt mollit anim..

-
-
-

Popular Post

-

Image

-

Image

-

Image

-
-
-

Follow Me

-

Some text..

-
-
-
- - - - - - - diff --git a/static/docs/test.py b/static/docs/test.py deleted file mode 100644 index 729ffc95..00000000 --- a/static/docs/test.py +++ /dev/null @@ -1 +0,0 @@ -print(not None) \ No newline at end of file diff --git a/static/js/pages/store/product_categories.js b/static/js/pages/store/product_categories.js index fba6d1d4..dd0af4f6 100644 --- a/static/js/pages/store/product_categories.js +++ b/static/js/pages/store/product_categories.js @@ -77,7 +77,6 @@ export default class PageStoreProductCategories extends TableBasePage { jsonCategory[flagCode] = DOM.getElementAttributeValueCurrent(textareaCode); jsonCategory[flagName] = DOM.getElementAttributeValueCurrent(textareaName); jsonCategory[flagDescription] = DOM.getElementAttributeValueCurrent(textareaDescription); - // jsonCategory[flagAccessLevelRequired] = tdAccessLevel.getAttribute(flagAccessLevelRequired); jsonCategory[attrIdAccessLevel] = DOM.getElementAttributeValueCurrent(tdAccessLevel); jsonCategory[flagActive] = buttonActive.classList.contains(flagDelete); jsonCategory[flagDisplayOrder] = DOM.getElementAttributeValueCurrent(sliderDisplayOrder); @@ -98,35 +97,8 @@ export default class PageStoreProductCategories extends TableBasePage { this.hookupFieldsActive(); } - /* - isDirtyRow(row) { - if (row == null) return false; - console.log("Product Category isDirtyRow"); - console.log("row: ", row); - let sliderDisplayOrder = row.querySelector('td.' + flagDisplayOrder); - let inputCode = row.querySelector('td.' + flagCode + ' textarea'); - let inputName = row.querySelector('td.' + flagName + ' textarea'); - let inputDescription = row.querySelector('td.' + flagDescription + ' textarea'); - let tdAccessLevel = row.querySelector('td.' + flagAccessLevel); - let inputActive = row.querySelector('td.' + flagActive + ' input[type="checkbox"]'); - let isDirty = sliderDisplayOrder.classList.contains(flagDirty) || inputCode.classList.contains(flagDirty) || inputName.classList.contains(flagDirty) || - inputDescription.classList.contains(flagDirty) || tdAccessLevel.classList.contains(flagDirty) || inputActive.classList.contains(flagDirty); - DOM.handleDirtyElement(row, isDirty); - return isDirty; - } - */ - leave() { super.leave(); } - - /* - getFiltersDefaults() { - filters = {}; - filters.flagIsNotEmpty = true; - filters.flagActive = true; - return filters; - } - */ } diff --git a/templates/layouts/layout.html b/templates/layouts/layout.html index 57c2647b..9160c44e 100644 --- a/templates/layouts/layout.html +++ b/templates/layouts/layout.html @@ -34,17 +34,6 @@ - - - + {% block page_head %}{% endblock %} @@ -257,12 +215,12 @@

{{ model.NAME_COMPANY }} - {{ model.title }}

-
+
-
+
@@ -283,48 +241,6 @@ Stock Items
{% endif %} - {% else %} {% if model.user.can_admin_store %}
@@ -367,18 +283,6 @@
- - - diff --git a/templates/pages/core/_admin_home.html b/templates/pages/core/_admin_home.html index cd45a418..970c008f 100644 --- a/templates/pages/core/_admin_home.html +++ b/templates/pages/core/_admin_home.html @@ -3,13 +3,8 @@ {% block title %}{{ model.title }}{% endblock %} {% block page_body %} - -

Store

@@ -22,21 +17,12 @@
-
- -
-
- -
-
- -
@@ -48,19 +34,4 @@
- - - - {% endblock %} \ No newline at end of file diff --git a/templates/pages/store/_supplier.html b/templates/pages/store/_supplier.html index 44664372..e6bbd731 100644 --- a/templates/pages/store/_supplier.html +++ b/templates/pages/store/_supplier.html @@ -6,13 +6,9 @@ {% set supplier = model.supplier %} {% set block_id = 'styles' %} {% include 'layouts/_shared_store.html' %} - + -

Supplier

@@ -95,23 +91,4 @@
- - - {% endblock %} \ No newline at end of file