
* 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>
138 lines
3.7 KiB
TypeScript
138 lines
3.7 KiB
TypeScript
import { stringify as stringifyQs } from "qs";
|
|
import urlJoin from "url-join";
|
|
|
|
import {
|
|
ActiveTab,
|
|
BulkAction,
|
|
Dialog,
|
|
Filters,
|
|
FiltersAsDictWithMultipleValues,
|
|
FiltersWithMultipleValues,
|
|
Pagination,
|
|
SingleAction,
|
|
Sort,
|
|
TabActionDialog
|
|
} from "../types";
|
|
|
|
const orderSectionUrl = "/orders";
|
|
|
|
type CreateOrderDialog = "create-order";
|
|
|
|
export const orderListPath = orderSectionUrl;
|
|
export enum OrderListUrlFiltersEnum {
|
|
createdFrom = "createdFrom",
|
|
createdTo = "createdTo",
|
|
customer = "customer",
|
|
payment = "payment",
|
|
query = "query"
|
|
}
|
|
export enum OrderListUrlFiltersWithMultipleValues {
|
|
status = "status"
|
|
}
|
|
|
|
export enum OrderListUrlFiltersDictWithMultipleValues {
|
|
channel = "channel"
|
|
}
|
|
|
|
export type OrderListUrlFilters = Filters<OrderListUrlFiltersEnum> &
|
|
FiltersWithMultipleValues<OrderListUrlFiltersWithMultipleValues> &
|
|
FiltersAsDictWithMultipleValues<OrderListUrlFiltersDictWithMultipleValues>;
|
|
export type OrderListUrlDialog = "cancel" | CreateOrderDialog | TabActionDialog;
|
|
export enum OrderListUrlSortField {
|
|
number = "number",
|
|
customer = "customer",
|
|
date = "date",
|
|
fulfillment = "status",
|
|
payment = "payment",
|
|
total = "total"
|
|
}
|
|
export type OrderListUrlSort = Sort<OrderListUrlSortField>;
|
|
export type OrderListUrlQueryParams = BulkAction &
|
|
Dialog<OrderListUrlDialog> &
|
|
OrderListUrlFilters &
|
|
OrderListUrlSort &
|
|
Pagination &
|
|
ActiveTab;
|
|
export const orderListUrl = (params?: OrderListUrlQueryParams): string => {
|
|
const orderList = orderListPath;
|
|
if (params === undefined) {
|
|
return orderList;
|
|
} else {
|
|
return urlJoin(orderList, "?" + stringifyQs(params));
|
|
}
|
|
};
|
|
|
|
export const orderDraftListPath = urlJoin(orderSectionUrl, "drafts");
|
|
export enum OrderDraftListUrlFiltersEnum {
|
|
createdFrom = "createdFrom",
|
|
createdTo = "createdTo",
|
|
customer = "customer",
|
|
query = "query"
|
|
}
|
|
export type OrderDraftListUrlFilters = Filters<OrderDraftListUrlFiltersEnum>;
|
|
export type OrderDraftListUrlDialog =
|
|
| "remove"
|
|
| CreateOrderDialog
|
|
| TabActionDialog;
|
|
export enum OrderDraftListUrlSortField {
|
|
number = "number",
|
|
customer = "customer",
|
|
date = "date",
|
|
total = "total"
|
|
}
|
|
export type OrderDraftListUrlSort = Sort<OrderDraftListUrlSortField>;
|
|
export type OrderDraftListUrlQueryParams = ActiveTab &
|
|
BulkAction &
|
|
Dialog<OrderDraftListUrlDialog> &
|
|
OrderDraftListUrlFilters &
|
|
OrderDraftListUrlSort &
|
|
Pagination;
|
|
export const orderDraftListUrl = (
|
|
params?: OrderDraftListUrlQueryParams
|
|
): string => {
|
|
const orderDraftList = orderDraftListPath;
|
|
if (params === undefined) {
|
|
return orderDraftList;
|
|
} else {
|
|
return urlJoin(orderDraftList, "?" + stringifyQs(params));
|
|
}
|
|
};
|
|
|
|
export const orderPath = (id: string) => urlJoin(orderSectionUrl, id);
|
|
|
|
export type OrderUrlDialog =
|
|
| "add-order-line"
|
|
| "cancel"
|
|
| "cancel-fulfillment"
|
|
| "capture"
|
|
| "edit-billing-address"
|
|
| "edit-fulfillment"
|
|
| "edit-shipping"
|
|
| "edit-shipping-address"
|
|
| "finalize"
|
|
| "mark-paid"
|
|
| "void"
|
|
| "invoice-send";
|
|
|
|
export type OrderUrlQueryParams = Dialog<OrderUrlDialog> & SingleAction;
|
|
|
|
export const orderUrl = (id: string, params?: OrderUrlQueryParams) =>
|
|
orderPath(encodeURIComponent(id)) + "?" + stringifyQs(params);
|
|
|
|
export const orderFulfillPath = (id: string) =>
|
|
urlJoin(orderPath(id), "fulfill");
|
|
|
|
export const orderReturnPath = (id: string) => urlJoin(orderPath(id), "return");
|
|
|
|
export const orderFulfillUrl = (id: string) =>
|
|
orderFulfillPath(encodeURIComponent(id));
|
|
|
|
export const orderSettingsPath = urlJoin(orderSectionUrl, "settings");
|
|
|
|
export const orderRefundPath = (id: string) => urlJoin(orderPath(id), "refund");
|
|
|
|
export const orderRefundUrl = (id: string) =>
|
|
orderRefundPath(encodeURIComponent(id));
|
|
|
|
export const orderReturnUrl = (id: string) =>
|
|
orderReturnPath(encodeURIComponent(id));
|