Fix basket on checkout
This commit is contained in:
@@ -34,6 +34,7 @@ export const BasketProvider: React.FC<{ children: React.ReactNode }> = ({ childr
|
|||||||
};
|
};
|
||||||
|
|
||||||
const clearBasket = () => {
|
const clearBasket = () => {
|
||||||
|
console.log(" BASKET CLEARED BasketProvideur");
|
||||||
setBasket([]);
|
setBasket([]);
|
||||||
};
|
};
|
||||||
|
|
||||||
|
|||||||
@@ -34,12 +34,37 @@ function getDiscountedPrice(item: Item): number {
|
|||||||
return (item.price100 / 100 * (100-item.discount100)/100);
|
return (item.price100 / 100 * (100-item.discount100)/100);
|
||||||
}
|
}
|
||||||
|
|
||||||
|
function generateBasket(t: any, basket: any[]) {
|
||||||
|
return basket.length === 0 ? (
|
||||||
|
<Typography color="error" sx={{ my: 2 }}>
|
||||||
|
{t('basketEmpty')}
|
||||||
|
</Typography>
|
||||||
|
) : (
|
||||||
|
<List>
|
||||||
|
{basket.map((item) => (
|
||||||
|
<ListItem key={item.item.uuid}>
|
||||||
|
<ListItemText
|
||||||
|
primary={`${item.quantity}x ${item.item.name}`}
|
||||||
|
secondary={`Item ID: ${item.item.uuid}`}
|
||||||
|
/>
|
||||||
|
|
||||||
|
<div className="rightBound">
|
||||||
|
{`${(item.quantity * getDiscountedPrice(item.item)).toFixed(2)} €`}<br/>
|
||||||
|
{item.item.discount100 > 0 ? <a className='rightBound red'>{-item.item.discount100}%</a> : ""}
|
||||||
|
</div>
|
||||||
|
</ListItem>
|
||||||
|
))}
|
||||||
|
</List>
|
||||||
|
)
|
||||||
|
}
|
||||||
|
|
||||||
|
|
||||||
export default function Payment() {
|
export default function Payment() {
|
||||||
|
|
||||||
|
|
||||||
const { t } = useTranslation();
|
const { t } = useTranslation();
|
||||||
const navigator = useNavigate();
|
|
||||||
const { basket, clearBasket } = useBasket();
|
const { basket, clearBasket } = useBasket();
|
||||||
|
const navigator = useNavigate();
|
||||||
const [activeStep, setActiveStep] = useState(0);
|
const [activeStep, setActiveStep] = useState(0);
|
||||||
const [shippingDetails, setShippingDetails] = useState<ShippingDetails>({
|
const [shippingDetails, setShippingDetails] = useState<ShippingDetails>({
|
||||||
firstName: '',
|
firstName: '',
|
||||||
@@ -58,7 +83,6 @@ export default function Payment() {
|
|||||||
// Simulate order placement and generate order number
|
// Simulate order placement and generate order number
|
||||||
const generatedOrderNumber = `ORD-${Math.floor(Math.random() * 1000000)}`;
|
const generatedOrderNumber = `ORD-${Math.floor(Math.random() * 1000000)}`;
|
||||||
setOrderNumber(generatedOrderNumber);
|
setOrderNumber(generatedOrderNumber);
|
||||||
clearBasket(); // Clear the basket after placing the order
|
|
||||||
}
|
}
|
||||||
setActiveStep((prevStep) => prevStep + 1);
|
setActiveStep((prevStep) => prevStep + 1);
|
||||||
};
|
};
|
||||||
@@ -75,6 +99,7 @@ export default function Payment() {
|
|||||||
}));
|
}));
|
||||||
};
|
};
|
||||||
const handleClearBasket = () => {
|
const handleClearBasket = () => {
|
||||||
|
console.log(" BASKET CLEARED Payment");
|
||||||
clearBasket();
|
clearBasket();
|
||||||
};
|
};
|
||||||
|
|
||||||
@@ -98,27 +123,7 @@ export default function Payment() {
|
|||||||
<Typography variant="h6" gutterBottom>
|
<Typography variant="h6" gutterBottom>
|
||||||
{t('reviewCart')}
|
{t('reviewCart')}
|
||||||
</Typography>
|
</Typography>
|
||||||
{basket.length === 0 ? (
|
{generateBasket(t, basket)}
|
||||||
<Typography color="error" sx={{ my: 2 }}>
|
|
||||||
{t('basketEmpty')}
|
|
||||||
</Typography>
|
|
||||||
) : (
|
|
||||||
<List>
|
|
||||||
{basket.map((item) => (
|
|
||||||
<ListItem key={item.item.uuid}>
|
|
||||||
<ListItemText
|
|
||||||
primary={`${item.quantity}x ${item.item.name}`}
|
|
||||||
secondary={`Item ID: ${item.item.uuid}`}
|
|
||||||
/>
|
|
||||||
|
|
||||||
<div className="rightBound">
|
|
||||||
{`${(item.quantity * getDiscountedPrice(item.item)).toFixed(2)} €`}<br/>
|
|
||||||
{item.item.discount100 > 0 ? <a className='rightBound red'>{-item.item.discount100}%</a> : ""}
|
|
||||||
</div>
|
|
||||||
</ListItem>
|
|
||||||
))}
|
|
||||||
</List>
|
|
||||||
)}
|
|
||||||
<Divider sx={{ my: 2 }} />
|
<Divider sx={{ my: 2 }} />
|
||||||
<Button variant="outlined" color="error" onClick={handleClearBasket} disabled={basket.length === 0}>
|
<Button variant="outlined" color="error" onClick={handleClearBasket} disabled={basket.length === 0}>
|
||||||
{t('clearCart')}
|
{t('clearCart')}
|
||||||
@@ -237,16 +242,7 @@ export default function Payment() {
|
|||||||
</Typography>
|
</Typography>
|
||||||
<Divider sx={{ my: 2 }} />
|
<Divider sx={{ my: 2 }} />
|
||||||
<Typography variant="h6">{t('orderedItems')}:</Typography>
|
<Typography variant="h6">{t('orderedItems')}:</Typography>
|
||||||
<List>
|
{generateBasket(t, basket)}
|
||||||
{basket.map((item) => (
|
|
||||||
<ListItem key={item.item.uuid}>
|
|
||||||
<ListItemText
|
|
||||||
primary={`${item.item.name} (${item.item.price100 / 100} €)`}
|
|
||||||
secondary={`Item ID: ${item.item.uuid} \n Quantity: ${item.quantity} \n Price: ${(item.item.price100 * item.quantity) / 100} €`}
|
|
||||||
/>
|
|
||||||
</ListItem>
|
|
||||||
))}
|
|
||||||
</List>
|
|
||||||
</Box>
|
</Box>
|
||||||
);
|
);
|
||||||
default:
|
default:
|
||||||
@@ -282,6 +278,7 @@ export default function Payment() {
|
|||||||
variant="contained"
|
variant="contained"
|
||||||
color="primary"
|
color="primary"
|
||||||
onClick={() => {
|
onClick={() => {
|
||||||
|
handleClearBasket();
|
||||||
navigator('/');
|
navigator('/');
|
||||||
}}
|
}}
|
||||||
>
|
>
|
||||||
|
|||||||
Reference in New Issue
Block a user