From 44688578563cf97e9cf6c347b2e04d5d2849f311 Mon Sep 17 00:00:00 2001 From: natalia Date: Thu, 25 Jun 2020 10:18:46 +0300 Subject: [PATCH] Fix updating shipping rates (#565) --- .../ShippingZoneRateDialog.tsx | 7 +++++-- src/shipping/views/ShippingZoneDetails/data.ts | 14 +++++++++++--- 2 files changed, 16 insertions(+), 5 deletions(-) diff --git a/src/shipping/components/ShippingZoneRateDialog/ShippingZoneRateDialog.tsx b/src/shipping/components/ShippingZoneRateDialog/ShippingZoneRateDialog.tsx index c9024c07f..d94b8fab9 100644 --- a/src/shipping/components/ShippingZoneRateDialog/ShippingZoneRateDialog.tsx +++ b/src/shipping/components/ShippingZoneRateDialog/ShippingZoneRateDialog.tsx @@ -37,6 +37,7 @@ export interface FormData { maxValue: string; isFree: boolean; price: string; + type: ShippingMethodTypeEnum; } export interface ShippingZoneRateDialogProps { @@ -104,7 +105,8 @@ const ShippingZoneRateDialog: React.FC = props => { minValue: "", name: "", noLimits: false, - price: "" + price: "", + type: null } : { isFree: maybe(() => rate.price.amount === 0, false), @@ -118,7 +120,8 @@ const ShippingZoneRateDialog: React.FC = props => { : maybe(() => rate.minimumOrderWeight.value.toString(), ""), name: maybe(() => rate.name, ""), noLimits: false, - price: maybe(() => rate.price.amount.toString(), "") + price: maybe(() => rate.price.amount.toString(), ""), + type: variant }; if (action === "edit") { initialForm.noLimits = !initialForm.maxValue && !initialForm.minValue; diff --git a/src/shipping/views/ShippingZoneDetails/data.ts b/src/shipping/views/ShippingZoneDetails/data.ts index 5ad49ce11..b4d714ea6 100644 --- a/src/shipping/views/ShippingZoneDetails/data.ts +++ b/src/shipping/views/ShippingZoneDetails/data.ts @@ -50,14 +50,22 @@ export function getUpdateShippingRateVariables( params: ShippingZoneUrlQueryParams, id: string ): UpdateShippingRateVariables { + const isPriceType = data.type === ShippingMethodTypeEnum.PRICE + const parsedMinValue = parseFloat(data.minValue) + const parsedMaxValue = parseFloat(data.maxValue) + const isPriceSet = !data.noLimits && isPriceType + const isWeightSet = !data.noLimits && !isPriceType return { id: params.id, input: { - maximumOrderPrice: data.noLimits ? null : parseFloat(data.maxValue), - minimumOrderPrice: data.noLimits ? null : parseFloat(data.minValue), + maximumOrderPrice: isPriceSet ? parsedMaxValue : null, + maximumOrderWeight: isWeightSet ? parsedMaxValue : null, + minimumOrderPrice: isPriceSet ? parsedMinValue : null, + minimumOrderWeight: isWeightSet ? parsedMinValue : null, name: data.name, price: data.isFree ? 0 : parseFloat(data.price), - shippingZone: id + shippingZone: id, + type: data.type } }; }