From 44476e03bcf92b85ed460fd233abf0e9535684cd Mon Sep 17 00:00:00 2001 From: M_Kececi Date: Thu, 18 Jun 2026 16:31:30 +0300 Subject: [PATCH] Merge remote-tracking branch 'origin/master' --- svc/routes/product_pricing_save.go | 48 ++++++++++------------------- ui/src/pages/ProductPricing.vue | 30 +++++++++++++----- ui/src/pages/WholesaleCampaigns.vue | 27 ++++++++++++---- 3 files changed, 60 insertions(+), 45 deletions(-) diff --git a/svc/routes/product_pricing_save.go b/svc/routes/product_pricing_save.go index 5d09ed8..947d9ed 100644 --- a/svc/routes/product_pricing_save.go +++ b/svc/routes/product_pricing_save.go @@ -811,43 +811,27 @@ filtered AS ( AND dim1 > 0 AND price > 0 ), -latest AS ( - SELECT DISTINCT ON (s.sdprcgrp_id, s.crn, s.dim1, COALESCE(s.dim3, 0)) - s.sdprcgrp_id, - s.crn, - s.dim1, - s.dim3, - s.prc - FROM sdprc s - WHERE s.mmitem_id = $2 - AND (s.sdprcgrp_id, s.crn, s.dim1, COALESCE(s.dim3, 0)) IN ( - SELECT sdprcgrp_id, currency, dim1, COALESCE(dim3, 0) FROM filtered - ) - ORDER BY s.sdprcgrp_id, s.crn, s.dim1, COALESCE(s.dim3, 0), s.zlins_dttm DESC, s.id DESC -), -to_insert AS ( +grouped AS ( + -- Ensure one row per business key to avoid unique violations under strict constraints (e.g. uq_sdprc_3). SELECT - $2::bigint AS mmitem_id, - f.sdprcgrp_id, - f.currency AS crn, - f.dim1, - f.dim3, - f.price AS prc - FROM filtered f - LEFT JOIN latest l - ON l.sdprcgrp_id = f.sdprcgrp_id - AND l.crn = f.currency - AND l.dim1 = f.dim1 - AND ((l.dim3 IS NULL AND f.dim3 IS NULL) OR l.dim3 = f.dim3) - WHERE l.prc IS NULL OR l.prc IS DISTINCT FROM f.price + sdprcgrp_id, + currency AS crn, + dim1, + dim3, + MAX(price) AS prc + FROM filtered + GROUP BY sdprcgrp_id, currency, dim1, dim3 ), -ins AS ( +upserted AS ( INSERT INTO sdprc (mmitem_id, sdprcgrp_id, crn, dim1, dim3, prc, zlins_dttm) - SELECT mmitem_id, sdprcgrp_id, crn, dim1, dim3, prc, now() - FROM to_insert + SELECT $2::bigint, g.sdprcgrp_id, g.crn, g.dim1, g.dim3, g.prc, now() + FROM grouped g + ON CONFLICT ON CONSTRAINT uq_sdprc_3 + DO UPDATE SET prc = EXCLUDED.prc, zlins_dttm = EXCLUDED.zlins_dttm + WHERE sdprc.prc IS DISTINCT FROM EXCLUDED.prc RETURNING 1 ) -SELECT COUNT(*)::int FROM ins; +SELECT COUNT(*)::int FROM upserted; ` var inserted int if err := pgTx.QueryRowContext(ctx, q, raw, mmItemID).Scan(&inserted); err != nil { diff --git a/ui/src/pages/ProductPricing.vue b/ui/src/pages/ProductPricing.vue index 9eeeff8..5eee50a 100644 --- a/ui/src/pages/ProductPricing.vue +++ b/ui/src/pages/ProductPricing.vue @@ -1,5 +1,9 @@