From ff7a6ef58123033866505a07078287eef2b14e6d Mon Sep 17 00:00:00 2001 From: dominik-zeglen Date: Mon, 13 Jul 2020 16:44:59 +0200 Subject: [PATCH 1/2] Fix weight based rate update --- .../views/ShippingZoneDetails/data.ts | 54 ++++++++++++------- .../views/ShippingZoneDetails/index.tsx | 10 +++- 2 files changed, 43 insertions(+), 21 deletions(-) diff --git a/src/shipping/views/ShippingZoneDetails/data.ts b/src/shipping/views/ShippingZoneDetails/data.ts index 0aadca15c..48867c1a3 100644 --- a/src/shipping/views/ShippingZoneDetails/data.ts +++ b/src/shipping/views/ShippingZoneDetails/data.ts @@ -2,8 +2,13 @@ import { ShippingZoneUrlQueryParams } from "@saleor/shipping/urls"; import { ShippingMethodTypeEnum } from "@saleor/types/globalTypes"; import { UpdateShippingRateVariables } from "@saleor/shipping/types/UpdateShippingRate"; import { CreateShippingRateVariables } from "@saleor/shipping/types/CreateShippingRate"; +import { ShippingZone_shippingZone_shippingMethods } from "@saleor/shipping/types/ShippingZone"; import { FormData as ShippingZoneRateDialogFormData } from "../../components/ShippingZoneRateDialog"; +function getValue(value: string, hasLimits: boolean): number | null { + return hasLimits ? null : parseFloat(value); +} + export function getCreateShippingRateVariables( data: ShippingZoneRateDialogFormData, params: ShippingZoneUrlQueryParams, @@ -13,28 +18,20 @@ export function getCreateShippingRateVariables( input: { maximumOrderPrice: params.type === ShippingMethodTypeEnum.PRICE - ? data.noLimits - ? null - : parseFloat(data.maxValue) + ? getValue(data.maxValue, data.noLimits) : null, maximumOrderWeight: params.type === ShippingMethodTypeEnum.WEIGHT - ? data.noLimits - ? null - : parseFloat(data.maxValue) + ? getValue(data.maxValue, data.noLimits) : null, minimumOrderPrice: params.type === ShippingMethodTypeEnum.PRICE - ? data.noLimits - ? null - : parseFloat(data.minValue) + ? getValue(data.maxValue, data.noLimits) : null, minimumOrderWeight: params.type === ShippingMethodTypeEnum.WEIGHT - ? data.noLimits - ? null - : parseFloat(data.minValue) + ? getValue(data.minValue, data.noLimits) : null, name: data.name, price: data.isFree ? 0 : parseFloat(data.price), @@ -46,17 +43,36 @@ export function getCreateShippingRateVariables( export function getUpdateShippingRateVariables( data: ShippingZoneRateDialogFormData, - params: ShippingZoneUrlQueryParams, - id: string + shippingRate: ShippingZone_shippingZone_shippingMethods, + shippingZoneId: string ): UpdateShippingRateVariables { - return { - id: params.id, + const base: UpdateShippingRateVariables = { + id: shippingRate.id, input: { - maximumOrderPrice: data.noLimits ? null : parseFloat(data.maxValue), - minimumOrderPrice: data.noLimits ? null : parseFloat(data.minValue), name: data.name, price: data.isFree ? 0 : parseFloat(data.price), - shippingZone: id + shippingZone: shippingZoneId, + type: shippingRate.type + } + }; + + if (shippingRate.type === ShippingMethodTypeEnum.PRICE) { + return { + ...base, + input: { + ...base.input, + maximumOrderPrice: getValue(data.maxValue, data.noLimits), + minimumOrderPrice: getValue(data.minValue, data.noLimits) + } + }; + } + + return { + ...base, + input: { + ...base.input, + maximumOrderWeight: getValue(data.maxValue, data.noLimits), + minimumOrderWeight: getValue(data.minValue, data.noLimits) } }; } diff --git a/src/shipping/views/ShippingZoneDetails/index.tsx b/src/shipping/views/ShippingZoneDetails/index.tsx index 5bb5f6791..b8be6523a 100644 --- a/src/shipping/views/ShippingZoneDetails/index.tsx +++ b/src/shipping/views/ShippingZoneDetails/index.tsx @@ -221,9 +221,15 @@ const ShippingZoneDetails: React.FC = ({ disabled={updateShippingRateOpts.loading} errors={updateShippingRateOpts.data?.shippingPriceUpdate.errors || []} onClose={closeModal} - onSubmit={data => + onSubmit={submitData => updateShippingRate({ - variables: getUpdateShippingRateVariables(data, params, id) + variables: getUpdateShippingRateVariables( + submitData, + data?.shippingZone?.shippingMethods.find( + shippingMethod => shippingMethod.id === params.id + ), + id + ) }) } open={params.action === "edit-rate"} From 6b08630f1e8c9d9e945091ca934e1f12cdc334b4 Mon Sep 17 00:00:00 2001 From: dominik-zeglen Date: Mon, 13 Jul 2020 16:47:19 +0200 Subject: [PATCH 2/2] Update changelog --- CHANGELOG.md | 1 + 1 file changed, 1 insertion(+) diff --git a/CHANGELOG.md b/CHANGELOG.md index 92e6f74e8..779939f93 100644 --- a/CHANGELOG.md +++ b/CHANGELOG.md @@ -5,6 +5,7 @@ All notable, unreleased changes to this project will be documented in this file. ## [Unreleased] - Add weight field and fix warehouse country selection - #597 by @dominik-zeglen +- Fix weight based rate update - #604 by @dominik-zeglen ## 2.10.0