Add mmissing no return button and logic
This commit is contained in:
parent
5dd63128b4
commit
430f80ac58
5 changed files with 49 additions and 18 deletions
|
@ -14,7 +14,8 @@ export enum OrderRefundType {
|
||||||
}
|
}
|
||||||
export enum OrderRefundAmountCalculationMode {
|
export enum OrderRefundAmountCalculationMode {
|
||||||
AUTOMATIC = "automatic",
|
AUTOMATIC = "automatic",
|
||||||
MANUAL = "manual"
|
MANUAL = "manual",
|
||||||
|
NONE = "none"
|
||||||
}
|
}
|
||||||
|
|
||||||
export interface OrderRefundData {
|
export interface OrderRefundData {
|
||||||
|
|
|
@ -82,6 +82,7 @@ interface OrderRefundAmountProps {
|
||||||
isReturn?: boolean;
|
isReturn?: boolean;
|
||||||
errors: OrderErrorFragment[];
|
errors: OrderErrorFragment[];
|
||||||
amountData: OrderRefundAmountValuesProps;
|
amountData: OrderRefundAmountValuesProps;
|
||||||
|
allowNoRefund?: boolean;
|
||||||
onChange: (event: React.ChangeEvent<any>) => void;
|
onChange: (event: React.ChangeEvent<any>) => void;
|
||||||
onRefund: () => void;
|
onRefund: () => void;
|
||||||
}
|
}
|
||||||
|
@ -96,7 +97,8 @@ const OrderRefundAmount: React.FC<OrderRefundAmountProps> = props => {
|
||||||
onRefund,
|
onRefund,
|
||||||
isReturn = false,
|
isReturn = false,
|
||||||
amountData,
|
amountData,
|
||||||
disableSubmitButton
|
disableSubmitButton,
|
||||||
|
allowNoRefund = false
|
||||||
} = props;
|
} = props;
|
||||||
const classes = useStyles(props);
|
const classes = useStyles(props);
|
||||||
const intl = useIntl();
|
const intl = useIntl();
|
||||||
|
@ -144,6 +146,17 @@ const OrderRefundAmount: React.FC<OrderRefundAmountProps> = props => {
|
||||||
onChange={onChange}
|
onChange={onChange}
|
||||||
name="amountCalculationMode"
|
name="amountCalculationMode"
|
||||||
>
|
>
|
||||||
|
{allowNoRefund && (
|
||||||
|
<FormControlLabel
|
||||||
|
disabled={disabled}
|
||||||
|
value={OrderRefundAmountCalculationMode.NONE}
|
||||||
|
control={<Radio color="primary" />}
|
||||||
|
label={intl.formatMessage({
|
||||||
|
defaultMessage: "No refund",
|
||||||
|
description: "label"
|
||||||
|
})}
|
||||||
|
/>
|
||||||
|
)}
|
||||||
<FormControlLabel
|
<FormControlLabel
|
||||||
disabled={disabled}
|
disabled={disabled}
|
||||||
value={OrderRefundAmountCalculationMode.AUTOMATIC}
|
value={OrderRefundAmountCalculationMode.AUTOMATIC}
|
||||||
|
@ -153,6 +166,18 @@ const OrderRefundAmount: React.FC<OrderRefundAmountProps> = props => {
|
||||||
description: "label"
|
description: "label"
|
||||||
})}
|
})}
|
||||||
/>
|
/>
|
||||||
|
{data.amountCalculationMode ===
|
||||||
|
OrderRefundAmountCalculationMode.NONE && (
|
||||||
|
<>
|
||||||
|
<CardSpacer />
|
||||||
|
<OrderRefundAmountValues
|
||||||
|
authorizedAmount={authorizedAmount}
|
||||||
|
previouslyRefunded={previouslyRefunded}
|
||||||
|
maxRefund={maxRefund}
|
||||||
|
shipmentCost={data.refundShipmentCosts && shipmentCost}
|
||||||
|
/>
|
||||||
|
</>
|
||||||
|
)}
|
||||||
{data.amountCalculationMode ===
|
{data.amountCalculationMode ===
|
||||||
OrderRefundAmountCalculationMode.AUTOMATIC && (
|
OrderRefundAmountCalculationMode.AUTOMATIC && (
|
||||||
<>
|
<>
|
||||||
|
|
|
@ -107,6 +107,7 @@ const OrderRefundPage: React.FC<OrderReturnPageProps> = props => {
|
||||||
</div>
|
</div>
|
||||||
<div>
|
<div>
|
||||||
<OrderAmount
|
<OrderAmount
|
||||||
|
allowNoRefund
|
||||||
isReturn
|
isReturn
|
||||||
amountData={getReturnProductsAmountValues(order, data)}
|
amountData={getReturnProductsAmountValues(order, data)}
|
||||||
data={data}
|
data={data}
|
||||||
|
|
|
@ -137,24 +137,24 @@ const getPartialProductsValue = ({
|
||||||
itemsQuantities: FormsetData<LineItemData, number>;
|
itemsQuantities: FormsetData<LineItemData, number>;
|
||||||
orderLines: OrderDetails_order_lines[];
|
orderLines: OrderDetails_order_lines[];
|
||||||
}) =>
|
}) =>
|
||||||
itemsQuantities.reduce((resultAmount, { id, value: quantity }) => {
|
itemsQuantities.reduce(
|
||||||
const {
|
(resultAmount, { id, value: quantity, data: { isRefunded } }) => {
|
||||||
value: isItemToBeReplaced,
|
const { value: isItemToBeReplaced } = itemsToBeReplaced.find(getById(id));
|
||||||
data: { isRefunded }
|
|
||||||
} = itemsToBeReplaced.find(getById(id));
|
|
||||||
|
|
||||||
if (quantity < 1 || isItemToBeReplaced || isRefunded) {
|
if (quantity < 1 || isItemToBeReplaced || isRefunded) {
|
||||||
return resultAmount;
|
return resultAmount;
|
||||||
}
|
}
|
||||||
|
|
||||||
const { selectedQuantity, unitPrice } = getItemPriceAndQuantity({
|
const { selectedQuantity, unitPrice } = getItemPriceAndQuantity({
|
||||||
id,
|
id,
|
||||||
itemsQuantities,
|
itemsQuantities,
|
||||||
orderLines
|
orderLines
|
||||||
});
|
});
|
||||||
|
|
||||||
return resultAmount + unitPrice.gross.amount * selectedQuantity;
|
return resultAmount + unitPrice.gross.amount * selectedQuantity;
|
||||||
}, 0);
|
},
|
||||||
|
0
|
||||||
|
);
|
||||||
|
|
||||||
export function getRefundedLinesPriceSum(
|
export function getRefundedLinesPriceSum(
|
||||||
lines: OrderRefundData_order_lines[],
|
lines: OrderRefundData_order_lines[],
|
||||||
|
|
|
@ -78,7 +78,11 @@ class ReturnFormDataParser {
|
||||||
orderLines: OrderReturnLineInput[],
|
orderLines: OrderReturnLineInput[],
|
||||||
fulfillmentLines: OrderReturnFulfillmentLineInput[]
|
fulfillmentLines: OrderReturnFulfillmentLineInput[]
|
||||||
) => {
|
) => {
|
||||||
if (!this.order.totalCaptured?.amount) {
|
if (
|
||||||
|
!this.order.totalCaptured?.amount ||
|
||||||
|
this.formData.amountCalculationMode ===
|
||||||
|
OrderRefundAmountCalculationMode.NONE
|
||||||
|
) {
|
||||||
return false;
|
return false;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
Loading…
Reference in a new issue