Add mmissing no return button and logic

This commit is contained in:
Magdalena Markusik 2021-01-21 13:56:19 +01:00
parent 5dd63128b4
commit 430f80ac58
5 changed files with 49 additions and 18 deletions

View file

@ -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 {

View file

@ -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 && (
<> <>

View file

@ -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}

View file

@ -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[],

View file

@ -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;
} }