From dec8078fbdd55f6dbfafed5ae15d43b50b4262d6 Mon Sep 17 00:00:00 2001 From: EricaWind Date: Tue, 27 Jun 2017 19:33:45 +0300 Subject: [PATCH] P5-1458. Fix width, height, DPI fields in Society Product Advaced tab. --- migrations/000.042.sql | 335 +++++++++++++++++++++++++++++++++++++++++ 1 file changed, 335 insertions(+) create mode 100644 migrations/000.042.sql diff --git a/migrations/000.042.sql b/migrations/000.042.sql new file mode 100644 index 0000000..a15a3ac --- /dev/null +++ b/migrations/000.042.sql @@ -0,0 +1,335 @@ +-- P5-1458 + +INSERT INTO "product-fields" ("field") +VALUES +('print_file_width'), +('print_file_height'), +('print_file_dpi') +ON CONFLICT DO NOTHING; + +INSERT INTO "product-products_fields" ("productid", "fieldid", "value") +( + SELECT "product-products_fields".productid, ( + SELECT fieldid + FROM "product-fields" + WHERE "field" = 'print_file_width' + ), value + FROM "product-products_fields" + INNER JOIN "product-printproducts" + ON "product-products_fields".productid = "product-printproducts".productid + WHERE fieldid = (SELECT fieldid FROM "product-fields" WHERE "field" = 'width') AND "product-printproducts".groupid = 3 + + UNION + + SELECT "product-products_fields".productid, ( + SELECT fieldid + FROM "product-fields" + WHERE "field" = 'print_file_height' + ), value + FROM "product-products_fields" + INNER JOIN "product-printproducts" + ON "product-products_fields".productid = "product-printproducts".productid + WHERE fieldid = (SELECT fieldid FROM "product-fields" WHERE "field" = 'height') AND "product-printproducts".groupid = 3 + + UNION + + SELECT "product-products_fields".productid, ( + SELECT fieldid + FROM "product-fields" + WHERE "field" = 'print_file_dpi' + ), value + FROM "product-products_fields" + INNER JOIN "product-printproducts" + ON "product-products_fields".productid = "product-printproducts".productid + WHERE fieldid = (SELECT fieldid FROM "product-fields" WHERE "field" = 'image_resolution') AND "product-printproducts".groupid = 3 +) +ON CONFLICT DO NOTHING; + + + +-- Updating a product view + +DO $$ + BEGIN + DROP VIEW public.v_product; + EXCEPTION WHEN others THEN + RAISE NOTICE 'View does not exist'; + END; +$$; + + +CREATE OR REPLACE VIEW public.v_product AS + SELECT main.product_id AS id, + main."artNo", + stock.id AS stock_id, + stock.price AS stock_price, + main.path, + main.visible, + main.browsable, + main.designerid, + main.designercollection_id, + COALESCE(( SELECT designers.pricepremium / 100::numeric + FROM designers + WHERE designers.designerid = main.designerid + LIMIT 1), 0::numeric) AS designer_margin, + main.name, + main.height, + main.print_file_height, + main.original_article_number, + main.width, + main.print_file_width, + main.widths, + main.min_height, + main.min_width, + main.max_height, + main.max_width, + main.photowall_resolution, + main.canvas_resolution, + main.wallpaper_resolution, + main.print_file_dpi, + main.lock_height, + COALESCE(main.additionalprice, 0::double precision) AS additionalprice, + main.ref1, + main.ref2, + main.ref3, + main.copyright, + main.proportions_warning, + main.margin_width_max, + main.margin_width_min, + main.margin_height_max, + main.margin_height_min, + main.width::numeric / + CASE + WHEN main.height = 0 THEN '-1.0'::numeric + ELSE main.height::numeric + END AS width_height_ratio, + main.batch, + main.image_resolution, + main."focusXpoint", + main."focusYpoint", + main."focusXpoint2", + main."focusYpoint2", + main.repeating_pattern + FROM ( SELECT products.productid AS product_id, + products.path, + products.visible, + products.browsable, + products.designerid, + products.designercollectionid AS designercollection_id, + ( SELECT "product-products_fields".value + FROM "product-products_fields" + WHERE "product-products_fields".productid = products.productid AND "product-products_fields".fieldid = (( SELECT "product-fields".fieldid + FROM "product-fields" + WHERE "product-fields".field::text = 'artNo'::text + LIMIT 1))) AS "artNo", + ( SELECT "product-products_fields".value + FROM "product-products_fields" + WHERE "product-products_fields".productid = products.productid AND "product-products_fields".fieldid = (( SELECT "product-fields".fieldid + FROM "product-fields" + WHERE "product-fields".field::text = 'name'::text + LIMIT 1))) AS name, + (( SELECT "product-products_fields".value + FROM "product-products_fields" + WHERE "product-products_fields".productid = products.productid AND "product-products_fields".fieldid = (( SELECT "product-fields".fieldid + FROM "product-fields" + WHERE "product-fields".field::text = 'height'::text + LIMIT 1)) AND "product-products_fields".value::text ~ '^\d+$'::text))::integer AS height, + (( SELECT "product-products_fields".value + FROM "product-products_fields" + WHERE "product-products_fields".productid = products.productid AND "product-products_fields".fieldid = (( SELECT "product-fields".fieldid + FROM "product-fields" + WHERE "product-fields".field::text = 'print_file_height'::text + LIMIT 1)) AND "product-products_fields".value::text ~ '^\d+$'::text))::integer AS print_file_height, + ( SELECT "product-products_fields".value + FROM "product-products_fields" + WHERE "product-products_fields".productid = products.productid AND "product-products_fields".fieldid = (( SELECT "product-fields".fieldid + FROM "product-fields" + WHERE "product-fields".field::text = 'orgArtNo'::text + LIMIT 1))) AS original_article_number, + (( SELECT "product-products_fields".value + FROM "product-products_fields" + WHERE "product-products_fields".productid = products.productid AND "product-products_fields".fieldid = (( SELECT "product-fields".fieldid + FROM "product-fields" + WHERE "product-fields".field::text = 'width'::text + LIMIT 1)) AND "product-products_fields".value::text ~ '^\d+$'::text))::integer AS width, + (( SELECT "product-products_fields".value + FROM "product-products_fields" + WHERE "product-products_fields".productid = products.productid AND "product-products_fields".fieldid = (( SELECT "product-fields".fieldid + FROM "product-fields" + WHERE "product-fields".field::text = 'print_file_width'::text + LIMIT 1)) AND "product-products_fields".value::text ~ '^\d+$'::text))::integer AS print_file_width, + ( SELECT "product-products_fields".value + FROM "product-products_fields" + WHERE "product-products_fields".productid = products.productid AND "product-products_fields".fieldid = (( SELECT "product-fields".fieldid + FROM "product-fields" + WHERE "product-fields".field::text = 'widths'::text + LIMIT 1))) AS widths, + (( SELECT "product-products_fields".value + FROM "product-products_fields" + WHERE "product-products_fields".productid = products.productid AND "product-products_fields".fieldid = (( SELECT "product-fields".fieldid + FROM "product-fields" + WHERE "product-fields".field::text = 'min-height'::text + LIMIT 1)) AND "product-products_fields".value::text ~ '^\d+$'::text))::integer AS min_height, + (( SELECT "product-products_fields".value + FROM "product-products_fields" + WHERE "product-products_fields".productid = products.productid AND "product-products_fields".fieldid = (( SELECT "product-fields".fieldid + FROM "product-fields" + WHERE "product-fields".field::text = 'min-width'::text + LIMIT 1)) AND "product-products_fields".value::text ~ '^\d+$'::text))::integer AS min_width, + (( SELECT "product-products_fields".value + FROM "product-products_fields" + WHERE "product-products_fields".productid = products.productid AND "product-products_fields".fieldid = (( SELECT "product-fields".fieldid + FROM "product-fields" + WHERE "product-fields".field::text = 'max-height'::text + LIMIT 1)) AND "product-products_fields".value::text ~ '^\d+$'::text))::integer AS max_height, + (( SELECT "product-products_fields".value + FROM "product-products_fields" + WHERE "product-products_fields".productid = products.productid AND "product-products_fields".fieldid = (( SELECT "product-fields".fieldid + FROM "product-fields" + WHERE "product-fields".field::text = 'max-width'::text + LIMIT 1)) AND "product-products_fields".value::text ~ '^\d+$'::text))::integer AS max_width, + (( SELECT "product-products_fields".value + FROM "product-products_fields" + WHERE "product-products_fields".productid = products.productid AND "product-products_fields".fieldid = (( SELECT "product-fields".fieldid + FROM "product-fields" + WHERE "product-fields".field::text = 'photowall_resolution'::text + LIMIT 1)) AND "product-products_fields".value::text ~ '^\d+$'::text))::integer AS photowall_resolution, + (( SELECT "product-products_fields".value + FROM "product-products_fields" + WHERE "product-products_fields".productid = products.productid AND "product-products_fields".fieldid = (( SELECT "product-fields".fieldid + FROM "product-fields" + WHERE "product-fields".field::text = 'canvas_resolution'::text + LIMIT 1)) AND "product-products_fields".value::text ~ '^\d+$'::text))::integer AS canvas_resolution, + (( SELECT "product-products_fields".value + FROM "product-products_fields" + WHERE "product-products_fields".productid = products.productid AND "product-products_fields".fieldid = (( SELECT "product-fields".fieldid + FROM "product-fields" + WHERE "product-fields".field::text = 'wallpaper_resolution'::text + LIMIT 1)) AND "product-products_fields".value::text ~ '^\d+$'::text))::integer AS wallpaper_resolution, + ( SELECT "product-products_fields".value + FROM "product-products_fields" + WHERE "product-products_fields".productid = products.productid AND "product-products_fields".fieldid = (( SELECT "product-fields".fieldid + FROM "product-fields" + WHERE "product-fields".field::text = 'lock_height'::text + LIMIT 1))) AS lock_height, + (( SELECT "product-products_fields".value + FROM "product-products_fields" + WHERE "product-products_fields".productid = products.productid AND "product-products_fields".fieldid = (( SELECT "product-fields".fieldid + FROM "product-fields" + WHERE "product-fields".field::text = 'additionalprice'::text + LIMIT 1))))::double precision AS additionalprice, + ( SELECT "product-products_fields".value + FROM "product-products_fields" + WHERE "product-products_fields".productid = products.productid AND "product-products_fields".fieldid = (( SELECT "product-fields".fieldid + FROM "product-fields" + WHERE "product-fields".field::text = 'ref1'::text + LIMIT 1))) AS ref1, + ( SELECT "product-products_fields".value + FROM "product-products_fields" + WHERE "product-products_fields".productid = products.productid AND "product-products_fields".fieldid = (( SELECT "product-fields".fieldid + FROM "product-fields" + WHERE "product-fields".field::text = 'ref2'::text + LIMIT 1))) AS ref2, + ( SELECT "product-products_fields".value + FROM "product-products_fields" + WHERE "product-products_fields".productid = products.productid AND "product-products_fields".fieldid = (( SELECT "product-fields".fieldid + FROM "product-fields" + WHERE "product-fields".field::text = 'ref3'::text + LIMIT 1))) AS ref3, + ( SELECT "product-products_fields".value + FROM "product-products_fields" + WHERE "product-products_fields".productid = products.productid AND "product-products_fields".fieldid = (( SELECT "product-fields".fieldid + FROM "product-fields" + WHERE "product-fields".field::text = 'copyright'::text + LIMIT 1))) AS copyright, + ( SELECT "product-products_fields".value + FROM "product-products_fields" + WHERE "product-products_fields".productid = products.productid AND "product-products_fields".fieldid = (( SELECT "product-fields".fieldid + FROM "product-fields" + WHERE "product-fields".field::text = 'proportions_warning'::text + LIMIT 1))) AS proportions_warning, + ( SELECT "product-products_fields".value + FROM "product-products_fields" + WHERE "product-products_fields".productid = products.productid AND "product-products_fields".fieldid = (( SELECT "product-fields".fieldid + FROM "product-fields" + WHERE "product-fields".field::text = 'margin_width_max'::text + LIMIT 1))) AS margin_width_max, + ( SELECT "product-products_fields".value + FROM "product-products_fields" + WHERE "product-products_fields".productid = products.productid AND "product-products_fields".fieldid = (( SELECT "product-fields".fieldid + FROM "product-fields" + WHERE "product-fields".field::text = 'margin_width_min'::text + LIMIT 1))) AS margin_width_min, + ( SELECT "product-products_fields".value + FROM "product-products_fields" + WHERE "product-products_fields".productid = products.productid AND "product-products_fields".fieldid = (( SELECT "product-fields".fieldid + FROM "product-fields" + WHERE "product-fields".field::text = 'margin_height_max'::text + LIMIT 1))) AS margin_height_max, + ( SELECT "product-products_fields".value + FROM "product-products_fields" + WHERE "product-products_fields".productid = products.productid AND "product-products_fields".fieldid = (( SELECT "product-fields".fieldid + FROM "product-fields" + WHERE "product-fields".field::text = 'margin_height_min'::text + LIMIT 1))) AS margin_height_min, + ( SELECT "product-products_fields".value + FROM "product-products_fields" + WHERE "product-products_fields".productid = products.productid AND "product-products_fields".fieldid = (( SELECT "product-fields".fieldid + FROM "product-fields" + WHERE "product-fields".field::text = 'batch'::text + LIMIT 1))) AS batch, + (( SELECT "product-products_fields".value + FROM "product-products_fields" + WHERE "product-products_fields".productid = products.productid AND "product-products_fields".fieldid = (( SELECT "product-fields".fieldid + FROM "product-fields" + WHERE "product-fields".field::text = 'image_resolution'::text + LIMIT 1)) AND "product-products_fields".value::text ~ '^\d+$'::text))::integer AS image_resolution, + (( SELECT "product-products_fields".value + FROM "product-products_fields" + WHERE "product-products_fields".productid = products.productid AND "product-products_fields".fieldid = (( SELECT "product-fields".fieldid + FROM "product-fields" + WHERE "product-fields".field::text = 'print_file_dpi'::text + LIMIT 1)) AND "product-products_fields".value::text ~ '^\d+$'::text))::integer AS print_file_dpi, + (( SELECT "product-products_fields".value + FROM "product-products_fields" + WHERE "product-products_fields".productid = products.productid AND "product-products_fields".fieldid = (( SELECT "product-fields".fieldid + FROM "product-fields" + WHERE "product-fields".field::text = 'focusXpoint'::text + LIMIT 1))))::double precision AS "focusXpoint", + (( SELECT "product-products_fields".value + FROM "product-products_fields" + WHERE "product-products_fields".productid = products.productid AND "product-products_fields".fieldid = (( SELECT "product-fields".fieldid + FROM "product-fields" + WHERE "product-fields".field::text = 'focusYpoint'::text + LIMIT 1))))::double precision AS "focusYpoint", + (( SELECT "product-products_fields".value + FROM "product-products_fields" + WHERE "product-products_fields".productid = products.productid AND "product-products_fields".fieldid = (( SELECT "product-fields".fieldid + FROM "product-fields" + WHERE "product-fields".field::text = 'focusXpoint2'::text + LIMIT 1))))::double precision AS "focusXpoint2", + (( SELECT "product-products_fields".value + FROM "product-products_fields" + WHERE "product-products_fields".productid = products.productid AND "product-products_fields".fieldid = (( SELECT "product-fields".fieldid + FROM "product-fields" + WHERE "product-fields".field::text = 'focusYpoint2'::text + LIMIT 1))))::double precision AS "focusYpoint2", + ( SELECT "product-products_fields".value + FROM "product-products_fields" + WHERE "product-products_fields".productid = products.productid AND "product-products_fields".fieldid = (( SELECT "product-fields".fieldid + FROM "product-fields" + WHERE "product-fields".field::text = 'repeating_pattern'::text + LIMIT 1))) AS repeating_pattern + FROM "product-products" products) main + LEFT JOIN ( SELECT s.stockid AS id, + s.productid AS product_id, + ( SELECT "product-stockprices".price + FROM "product-stockprices" + WHERE "product-stockprices".priceid = s.priceid + LIMIT 1) AS price + FROM "product-stockproducts" s) stock ON main.product_id = stock.product_id; + +ALTER TABLE public.v_product + OWNER TO photowall; +GRANT ALL ON TABLE public.v_product TO photowall; +GRANT ALL ON TABLE public.v_product TO public; \ No newline at end of file