saleor-dashboard/src/orders/index.tsx
mmarkusik f0f9fe9b85
Feature/order reissue (#910)
* wip

* wip

* wip

* wip

* wip

* wip

* wip

* wip

* wip

* wip

* Add change to changelog

* Remove console.log

* Update tests

* Extract messages

* Add utils functions for selecting only ulfulfilled order lines

* Add optional value selection for line item

* Update
tests

* Add optional rendering of unfulfilled items card and refactor a bit

* Update displaying of items card title when refunded card

* UUpdate utils, form data etc. not to include refunded items when calculating replaced items amount

* Uppdate return items card not to display replace buttons for refunded items

* Refactor and small fixes after review

* Update extracted messages

* Fix card title when no fullfilemtn id

* wip

* Initially stitch returns page. Update types, add mutation

* remove unnecessary component display names

* Add loading status from form submission & refactor

* Add errors from response

* Add errors from response and refactor

* Remove comments

* Add optional error adding when no data from return create request

* Update messages

* wip

* Update snapshots

* Remove unnecessary console.log

* Add better typing for getParsedLineData function

* Update & refactor card title to match cards both in return and order details

* Add handling of new statuses to order details cards. Also refactor, and devide order fulfillment card into couple of smaller components

* Update messages

* Update schema to match api

* Update types

* Update status label component to match colors with new designs and order details cards

* RUpdate and refactor order fulfillment card components to be reusable. Also add replaced status handling

* Updayte card title component to handle all cases and statuses

* Update oorder unfulfilled items card and order details page, reduce some of the boilerplate

* Fix card title types and adjust returns card to match

* Update messages

* Update snapshots

* RUpdate order fulfillment card with subtitles and buttons for returned status

* Add onRefund to order fulfillment card

* Fix typo and wrong message in card title

* Add missing condition in return form submission utils to decice if to refund products

* Update fulfillment subtitles row and tests

* Update messages

* Change naming and locations of OrderFulfillment and items card components

* Update messages

* U[pdate names of components again to even better ones

* Update messages

* changelog

* Update schema and types so that order history event also includes user first and last name

* Add extended timeline event and event header components. Move some of the logic to utils and add way to display links in the event header.

* FFix types

* Update messages

* Change naming of isOfType -> isTimelineEventOfType and refactor extended timeline event messages selection to be less complicated

* Add ids and update messages

* Add ids and update messages some more

* Update storybook decorator to work with react router context in components and tests

* Refactor after review

* Update messages

* Add rredirecting to draft order

* Add handling draft creation from replacement

* Add related order to order event fragment and update lots and lots of types

* Update extended timeline event to match related order type on order history event

* Update fixtures

* Refactor ExtendedTimelineEvent

Co-authored-by: Jakub Majorek <majorek.jakub@gmail.com>

* Fix typing

* Update messages

* Fix missing history event for replacement draft created for replaced products

* Update messages

* Handle new statuses for returned and partially returned orders

* Update messages

* update snapshots

* BBump empty line to rebuild ci

* Change status to proper color

* Change replaceable items in return for replace to be auto off instead of on

* Add utils functions and make order details menu not show option to return items when there are returnable items in the order

* Fix replace checkbox showing when previously hidden and clicked set maximal quantities

* Fix return form invalid money values

* Add default values to avoid returning of NaN in utils for return amount and refactor

* Add ggeneral error alerts

* Add eproduct error box component and style. style a lot.

* Fixes

* Fix lint

* Add cannot refund error title + description

* Extract messages

* Refactor after review

* Add better, nicer and fancier imports to product error cell

* Use error color from palette in product error cell

* Fix max refund when 0 for return

* Add ddisable ability to refund products button so it's disabled when 0 products selected

* Add class for order return form data parsing and add condition to not do refund when total captured on order is 0

* Update snapshots

* Add condition for order lines quantity in order products table row

* Fix return amount submit button

* Add change to changelog

Co-authored-by: Jakub Majorek <majorek.jakub@gmail.com>
2021-01-20 17:16:43 +01:00

99 lines
3.1 KiB
TypeScript

import { sectionNames } from "@saleor/intl";
import { asSortParams } from "@saleor/utils/sort";
import { parse as parseQs } from "qs";
import React from "react";
import { useIntl } from "react-intl";
import { Route, RouteComponentProps, Switch } from "react-router-dom";
import { WindowTitle } from "../components/WindowTitle";
import {
orderDraftListPath,
OrderDraftListUrlQueryParams,
OrderDraftListUrlSortField,
orderFulfillPath,
orderListPath,
OrderListUrlQueryParams,
OrderListUrlSortField,
orderPath,
orderRefundPath,
orderReturnPath,
orderSettingsPath,
OrderUrlQueryParams
} from "./urls";
import OrderDetailsComponent from "./views/OrderDetails";
import OrderDraftListComponent from "./views/OrderDraftList";
import OrderFulfillComponent from "./views/OrderFulfill";
import OrderListComponent from "./views/OrderList";
import OrderRefundComponent from "./views/OrderRefund";
import OrderReturnComponent from "./views/OrderReturn";
import OrderSettings from "./views/OrderSettings";
const OrderList: React.FC<RouteComponentProps<any>> = ({ location }) => {
const qs = parseQs(location.search.substr(1));
const params: OrderListUrlQueryParams = asSortParams(
qs,
OrderListUrlSortField,
OrderListUrlSortField.number,
false
);
return <OrderListComponent params={params} />;
};
const OrderDraftList: React.FC<RouteComponentProps<any>> = ({ location }) => {
const qs = parseQs(location.search.substr(1));
const params: OrderDraftListUrlQueryParams = asSortParams(
qs,
OrderDraftListUrlSortField,
OrderDraftListUrlSortField.number,
false
);
return <OrderDraftListComponent params={params} />;
};
const OrderDetails: React.FC<RouteComponentProps<any>> = ({
location,
match
}) => {
const qs = parseQs(location.search.substr(1));
const params: OrderUrlQueryParams = qs;
return (
<OrderDetailsComponent
id={decodeURIComponent(match.params.id)}
params={params}
/>
);
};
const OrderFulfill: React.FC<RouteComponentProps<any>> = ({ match }) => (
<OrderFulfillComponent orderId={decodeURIComponent(match.params.id)} />
);
const OrderRefund: React.FC<RouteComponentProps<any>> = ({ match }) => (
<OrderRefundComponent orderId={decodeURIComponent(match.params.id)} />
);
const OrderReturn: React.FC<RouteComponentProps<any>> = ({ match }) => (
<OrderReturnComponent orderId={decodeURIComponent(match.params.id)} />
);
const Component = () => {
const intl = useIntl();
return (
<>
<WindowTitle title={intl.formatMessage(sectionNames.orders)} />
<Switch>
<Route exact path={orderSettingsPath} component={OrderSettings} />
<Route exact path={orderDraftListPath} component={OrderDraftList} />
<Route exact path={orderListPath} component={OrderList} />
<Route path={orderFulfillPath(":id")} component={OrderFulfill} />
<Route path={orderReturnPath(":id")} component={OrderReturn} />
<Route path={orderRefundPath(":id")} component={OrderRefund} />
<Route path={orderPath(":id")} component={OrderDetails} />
</Switch>
</>
);
};
export default Component;