2019-06-19 14:40:52 +00:00
|
|
|
import { stringify as stringifyQs } from "qs";
|
2019-08-09 10:26:22 +00:00
|
|
|
import urlJoin from "url-join";
|
2019-06-19 14:40:52 +00:00
|
|
|
|
|
|
|
import {
|
|
|
|
ActiveTab,
|
|
|
|
BulkAction,
|
|
|
|
Dialog,
|
|
|
|
Filters,
|
2019-09-05 13:05:12 +00:00
|
|
|
FiltersWithMultipleValues,
|
2019-06-19 14:40:52 +00:00
|
|
|
Pagination,
|
2019-09-10 15:14:11 +00:00
|
|
|
SingleAction,
|
2020-05-14 09:30:32 +00:00
|
|
|
Sort,
|
|
|
|
TabActionDialog
|
2019-06-19 14:40:52 +00:00
|
|
|
} from "../types";
|
|
|
|
|
|
|
|
const orderSectionUrl = "/orders";
|
|
|
|
|
2020-11-23 10:56:08 +00:00
|
|
|
type CreateOrderDialog = "create-order";
|
|
|
|
|
2019-06-19 14:40:52 +00:00
|
|
|
export const orderListPath = orderSectionUrl;
|
|
|
|
export enum OrderListUrlFiltersEnum {
|
2019-12-20 10:44:41 +00:00
|
|
|
createdFrom = "createdFrom",
|
|
|
|
createdTo = "createdTo",
|
2020-02-03 11:40:46 +00:00
|
|
|
customer = "customer",
|
2019-09-16 11:22:15 +00:00
|
|
|
payment = "payment",
|
|
|
|
query = "query"
|
2019-06-19 14:40:52 +00:00
|
|
|
}
|
2019-09-05 13:05:12 +00:00
|
|
|
export enum OrderListUrlFiltersWithMultipleValuesEnum {
|
|
|
|
status = "status"
|
|
|
|
}
|
|
|
|
export type OrderListUrlFilters = Filters<OrderListUrlFiltersEnum> &
|
|
|
|
FiltersWithMultipleValues<OrderListUrlFiltersWithMultipleValuesEnum>;
|
2020-11-23 10:56:08 +00:00
|
|
|
export type OrderListUrlDialog = "cancel" | CreateOrderDialog | TabActionDialog;
|
2019-12-17 17:13:56 +00:00
|
|
|
export enum OrderListUrlSortField {
|
|
|
|
number = "number",
|
|
|
|
customer = "customer",
|
|
|
|
date = "date",
|
|
|
|
fulfillment = "status",
|
|
|
|
payment = "payment",
|
|
|
|
total = "total"
|
|
|
|
}
|
|
|
|
export type OrderListUrlSort = Sort<OrderListUrlSortField>;
|
2019-06-19 14:40:52 +00:00
|
|
|
export type OrderListUrlQueryParams = BulkAction &
|
|
|
|
Dialog<OrderListUrlDialog> &
|
|
|
|
OrderListUrlFilters &
|
2019-12-17 17:13:56 +00:00
|
|
|
OrderListUrlSort &
|
2019-06-19 14:40:52 +00:00
|
|
|
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");
|
2019-09-11 14:28:42 +00:00
|
|
|
export enum OrderDraftListUrlFiltersEnum {
|
2020-01-02 16:55:34 +00:00
|
|
|
createdFrom = "createdFrom",
|
|
|
|
createdTo = "createdTo",
|
|
|
|
customer = "customer",
|
2019-09-11 14:28:42 +00:00
|
|
|
query = "query"
|
|
|
|
}
|
|
|
|
export type OrderDraftListUrlFilters = Filters<OrderDraftListUrlFiltersEnum>;
|
2020-11-23 10:56:08 +00:00
|
|
|
export type OrderDraftListUrlDialog =
|
|
|
|
| "remove"
|
|
|
|
| CreateOrderDialog
|
|
|
|
| TabActionDialog;
|
2019-12-17 17:13:56 +00:00
|
|
|
export enum OrderDraftListUrlSortField {
|
|
|
|
number = "number",
|
|
|
|
customer = "customer",
|
|
|
|
date = "date",
|
|
|
|
total = "total"
|
|
|
|
}
|
|
|
|
export type OrderDraftListUrlSort = Sort<OrderDraftListUrlSortField>;
|
2019-09-11 14:28:42 +00:00
|
|
|
export type OrderDraftListUrlQueryParams = ActiveTab &
|
|
|
|
BulkAction &
|
2019-06-19 14:40:52 +00:00
|
|
|
Dialog<OrderDraftListUrlDialog> &
|
2019-09-11 14:28:42 +00:00
|
|
|
OrderDraftListUrlFilters &
|
2019-12-17 17:13:56 +00:00
|
|
|
OrderDraftListUrlSort &
|
2019-06-19 14:40:52 +00:00
|
|
|
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"
|
|
|
|
| "refund"
|
2020-06-24 15:29:13 +00:00
|
|
|
| "void"
|
|
|
|
| "invoice-send";
|
2019-06-19 14:40:52 +00:00
|
|
|
export type OrderUrlQueryParams = Dialog<OrderUrlDialog> & SingleAction;
|
|
|
|
export const orderUrl = (id: string, params?: OrderUrlQueryParams) =>
|
|
|
|
orderPath(encodeURIComponent(id)) + "?" + stringifyQs(params);
|
2020-04-20 17:18:20 +00:00
|
|
|
|
|
|
|
export const orderFulfillPath = (id: string) =>
|
|
|
|
urlJoin(orderPath(id), "fulfill");
|
|
|
|
export const orderFulfillUrl = (id: string) =>
|
|
|
|
orderFulfillPath(encodeURIComponent(id));
|
2020-11-30 13:19:57 +00:00
|
|
|
|
|
|
|
export const orderSettingsPath = urlJoin(orderSectionUrl, "settings");
|