Add transaction events to order history (#2138)

This commit is contained in:
Dawid 2022-07-08 12:14:42 +02:00 committed by GitHub
parent 2c206e7eb6
commit eff15075d4
No known key found for this signature in database
GPG key ID: 4AEE18F83AFDEB23
5 changed files with 341 additions and 306 deletions

View file

@ -1903,6 +1903,10 @@
"DRMMDs": {
"string": "Attribute Name"
},
"DRwqnt": {
"context": "order history message",
"string": "Transaction capture requested"
},
"DTL7sE": {
"context": "dialog content",
"string": "Are you sure you want to delete {warehouseName}?"
@ -4794,6 +4798,10 @@
"ZIc5lM": {
"string": "Product Name"
},
"ZKuzRy": {
"context": "order history message",
"string": "Transaction void requested"
},
"ZMy18J": {
"string": "You have reached your channel limit, you will be no longer able to add channels to your store. If you would like to up your limit, contact your administration staff about raising your limits."
},
@ -5505,6 +5513,10 @@
"context": "custom app name",
"string": "App Name"
},
"fqJXzO": {
"context": "order history message",
"string": "Transaction refund requested"
},
"ftcHpD": {
"string": "Customer created"
},

View file

@ -9,323 +9,21 @@ import {
TimelineEventProps,
TimelineNote,
} from "@saleor/components/Timeline";
import {
OrderEventFragment,
OrderEventsEmailsEnum,
OrderEventsEnum,
} from "@saleor/graphql";
import { OrderEventFragment } from "@saleor/graphql";
import { SubmitPromise } from "@saleor/hooks/useForm";
import { makeStyles } from "@saleor/macaw-ui";
import React from "react";
import { FormattedMessage, IntlShape, useIntl } from "react-intl";
import { FormattedMessage, useIntl } from "react-intl";
import ExtendedTimelineEvent from "./ExtendedTimelineEvent";
import LinkedTimelineEvent from "./LinkedTimelineEvent";
import { getEventMessage } from "./messages";
import { useStyles } from "./styles";
import { getEventSecondaryTitle, isTimelineEventOfType } from "./utils";
export const getEventMessage = (event: OrderEventFragment, intl: IntlShape) => {
const getUserOrApp = () => {
if (event.user) {
return event.user.email;
}
if (event.app) {
return event.app.name;
}
};
switch (event.type) {
case OrderEventsEnum.CANCELED:
return intl.formatMessage({
id: "zRrcOG",
defaultMessage: "Order was cancelled",
description: "order history message",
});
case OrderEventsEnum.ADDED_PRODUCTS:
return intl.formatMessage({
id: "U1eJIw",
defaultMessage: "Products were added to an order",
description: "order history message",
});
case OrderEventsEnum.DRAFT_CREATED:
return intl.formatMessage({
id: "hWO1SD",
defaultMessage: "Draft order was created",
description: "order history message",
});
case OrderEventsEnum.REMOVED_PRODUCTS:
return intl.formatMessage({
id: "fehqPs",
defaultMessage: "Products were deleted from an order",
description: "order history message",
});
case OrderEventsEnum.EMAIL_SENT:
switch (event.emailType) {
case OrderEventsEmailsEnum.DIGITAL_LINKS:
return intl.formatMessage({
id: "OzHN0Z",
defaultMessage: "Links to the order's digital goods were sent",
description: "order history message",
});
case OrderEventsEmailsEnum.FULFILLMENT_CONFIRMATION:
return intl.formatMessage({
id: "aq5ZiN",
defaultMessage: "Fulfillment confirmation was sent to customer",
description: "order history message",
});
case OrderEventsEmailsEnum.CONFIRMED:
return intl.formatMessage({
id: "cqZ5UH",
defaultMessage: "Order confirmation was sent to customer",
description: "order history message",
});
case OrderEventsEmailsEnum.PAYMENT_CONFIRMATION:
return intl.formatMessage({
id: "4Z6BtA",
defaultMessage: "Payment confirmation was sent to customer",
description: "order history message",
});
case OrderEventsEmailsEnum.SHIPPING_CONFIRMATION:
return intl.formatMessage({
id: "BCPrmK",
defaultMessage: "Shipping details was sent to customer",
description: "order history message",
});
case OrderEventsEmailsEnum.TRACKING_UPDATED:
return intl.formatMessage({
id: "j3yE7I",
defaultMessage: "Shipping tracking number was sent to customer",
description: "order history message",
});
case OrderEventsEmailsEnum.ORDER_CANCEL:
return intl.formatMessage({
id: "06bR4Z",
defaultMessage: "Order cancel information was sent to customer",
description: "order history message",
});
case OrderEventsEmailsEnum.ORDER_CONFIRMATION:
return intl.formatMessage({
id: "oQ27V4",
defaultMessage: "Order placed information was sent to customer",
description: "order history message",
});
case OrderEventsEmailsEnum.ORDER_REFUND:
return intl.formatMessage({
id: "9piUVz",
defaultMessage: "Order refund information was sent to customer",
description: "order history message",
});
}
case OrderEventsEnum.FULFILLMENT_CANCELED:
return intl.formatMessage({
id: "GLy2UR",
defaultMessage: "Fulfillment was cancelled",
description: "order history message",
});
case OrderEventsEnum.INVOICE_REQUESTED:
return intl.formatMessage(
{
id: "chvryR",
defaultMessage: "Invoice was requested by {requestedBy}",
description: "order history message",
},
{
requestedBy: getUserOrApp(),
},
);
case OrderEventsEnum.INVOICE_GENERATED:
return intl.formatMessage(
{
id: "pTpx0p",
defaultMessage:
"Invoice no. {invoiceNumber} was generated by {generatedBy}",
description: "order history message",
},
{
generatedBy: getUserOrApp(),
invoiceNumber: event.invoiceNumber,
},
);
case OrderEventsEnum.INVOICE_UPDATED:
return intl.formatMessage(
{
id: "6RQKxH",
defaultMessage: "Invoice no. {invoiceNumber} was updated",
description: "order history message",
},
{
invoiceNumber: event.invoiceNumber,
},
);
case OrderEventsEnum.INVOICE_SENT:
return intl.formatMessage(
{
id: "qddy2Z",
defaultMessage: "Invoice was sent to customer by {sentBy}",
description: "order history message",
},
{
sentBy: getUserOrApp(),
},
);
case OrderEventsEnum.FULFILLMENT_AWAITS_APPROVAL:
return intl.formatMessage({
id: "PcPMjC",
defaultMessage: "Fulfillment awaits approval",
description: "order history message",
});
case OrderEventsEnum.FULFILLMENT_FULFILLED_ITEMS:
return intl.formatMessage(
{
id: "nHmugP",
defaultMessage: "Fulfilled {quantity} items",
description: "order history message",
},
{
quantity: event.quantity,
},
);
case OrderEventsEnum.FULFILLMENT_REFUNDED:
return intl.formatMessage(
{
id: "D3WUc/",
defaultMessage: "Order was refunded by {refundedBy}",
description: "order history message",
},
{
refundedBy: getUserOrApp(),
},
);
case OrderEventsEnum.FULFILLMENT_RESTOCKED_ITEMS:
return intl.formatMessage(
{
id: "wOeIR4",
defaultMessage: "Restocked {quantity} items",
description: "order history message",
},
{
quantity: event.quantity,
},
);
case OrderEventsEnum.NOTE_ADDED:
return intl.formatMessage({
id: "6WRFp2",
defaultMessage: "Note was added to the order",
description: "order history message",
});
case OrderEventsEnum.ORDER_FULLY_PAID:
return intl.formatMessage({
id: "P/EDn1",
defaultMessage: "Order was fully paid",
description: "order history message",
});
case OrderEventsEnum.ORDER_MARKED_AS_PAID:
return intl.formatMessage({
id: "fkplbE",
defaultMessage: "Order was marked as paid",
description: "order history message",
});
case OrderEventsEnum.OTHER:
return event.message;
case OrderEventsEnum.OVERSOLD_ITEMS:
return intl.formatMessage(
{
id: "Fl3ORD",
defaultMessage: "Oversold {quantity} items",
description: "order history message",
},
{
quantity: event.quantity,
},
);
case OrderEventsEnum.PAYMENT_CAPTURED:
return intl.formatMessage({
id: "2yV+s8",
defaultMessage: "Payment was captured",
description: "order history message",
});
case OrderEventsEnum.PAYMENT_FAILED:
return intl.formatMessage({
id: "TCR639",
defaultMessage: "Payment failed",
description: "order history message",
});
case OrderEventsEnum.PAYMENT_REFUNDED:
return intl.formatMessage({
id: "3fgyFh",
defaultMessage: "Payment was refunded",
description: "order history message",
});
case OrderEventsEnum.PAYMENT_VOIDED:
return intl.formatMessage({
id: "8RnPGF",
defaultMessage: "Payment was voided",
description: "order history message",
});
case OrderEventsEnum.PLACED:
return intl.formatMessage({
id: "GJAX0z",
defaultMessage: "Order was placed",
description: "order history message",
});
case OrderEventsEnum.PLACED_FROM_DRAFT:
return intl.formatMessage({
id: "OKGd/k",
defaultMessage: "Order was created from draft",
description: "order history message",
});
case OrderEventsEnum.TRACKING_UPDATED:
return intl.formatMessage({
id: "e92Uxp",
defaultMessage: "Updated fulfillment group's tracking number",
description: "order history message",
});
case OrderEventsEnum.UPDATED_ADDRESS:
return intl.formatMessage({
id: "RLTaAR",
defaultMessage: "Order address was updated",
description: "order history message",
});
case OrderEventsEnum.PAYMENT_AUTHORIZED:
return intl.formatMessage({
id: "GVM/fi",
defaultMessage: "Payment was authorized",
description: "order history message",
});
case OrderEventsEnum.CONFIRMED:
return intl.formatMessage({
id: "ubasgL",
defaultMessage: "Order was confirmed",
description: "order history message",
});
case OrderEventsEnum.EXTERNAL_SERVICE_NOTIFICATION:
return event.message;
}
};
export interface FormData {
message: string;
}
const useStyles = makeStyles(
theme => ({
eventSubtitle: {
marginTop: theme.spacing(1),
},
header: {
fontWeight: 500,
marginBottom: theme.spacing(1),
},
linesTableCell: {
paddingRight: theme.spacing(3),
},
root: { marginTop: theme.spacing(4) },
user: {
marginBottom: theme.spacing(1),
},
}),
{ name: "OrderHistory" },
);
interface OrderHistoryProps {
history: OrderEventFragment[];
orderCurrency: string;

View file

@ -0,0 +1,303 @@
import {
OrderEventFragment,
OrderEventsEmailsEnum,
OrderEventsEnum,
} from "@saleor/graphql";
import { IntlShape } from "react-intl";
export const getEventMessage = (event: OrderEventFragment, intl: IntlShape) => {
const getUserOrApp = () => {
if (event.user) {
return event.user.email;
}
if (event.app) {
return event.app.name;
}
};
switch (event.type) {
case OrderEventsEnum.CANCELED:
return intl.formatMessage({
id: "zRrcOG",
defaultMessage: "Order was cancelled",
description: "order history message",
});
case OrderEventsEnum.ADDED_PRODUCTS:
return intl.formatMessage({
id: "U1eJIw",
defaultMessage: "Products were added to an order",
description: "order history message",
});
case OrderEventsEnum.DRAFT_CREATED:
return intl.formatMessage({
id: "hWO1SD",
defaultMessage: "Draft order was created",
description: "order history message",
});
case OrderEventsEnum.REMOVED_PRODUCTS:
return intl.formatMessage({
id: "fehqPs",
defaultMessage: "Products were deleted from an order",
description: "order history message",
});
case OrderEventsEnum.EMAIL_SENT:
switch (event.emailType) {
case OrderEventsEmailsEnum.DIGITAL_LINKS:
return intl.formatMessage({
id: "OzHN0Z",
defaultMessage: "Links to the order's digital goods were sent",
description: "order history message",
});
case OrderEventsEmailsEnum.FULFILLMENT_CONFIRMATION:
return intl.formatMessage({
id: "aq5ZiN",
defaultMessage: "Fulfillment confirmation was sent to customer",
description: "order history message",
});
case OrderEventsEmailsEnum.CONFIRMED:
return intl.formatMessage({
id: "cqZ5UH",
defaultMessage: "Order confirmation was sent to customer",
description: "order history message",
});
case OrderEventsEmailsEnum.PAYMENT_CONFIRMATION:
return intl.formatMessage({
id: "4Z6BtA",
defaultMessage: "Payment confirmation was sent to customer",
description: "order history message",
});
case OrderEventsEmailsEnum.SHIPPING_CONFIRMATION:
return intl.formatMessage({
id: "BCPrmK",
defaultMessage: "Shipping details was sent to customer",
description: "order history message",
});
case OrderEventsEmailsEnum.TRACKING_UPDATED:
return intl.formatMessage({
id: "j3yE7I",
defaultMessage: "Shipping tracking number was sent to customer",
description: "order history message",
});
case OrderEventsEmailsEnum.ORDER_CANCEL:
return intl.formatMessage({
id: "06bR4Z",
defaultMessage: "Order cancel information was sent to customer",
description: "order history message",
});
case OrderEventsEmailsEnum.ORDER_CONFIRMATION:
return intl.formatMessage({
id: "oQ27V4",
defaultMessage: "Order placed information was sent to customer",
description: "order history message",
});
case OrderEventsEmailsEnum.ORDER_REFUND:
return intl.formatMessage({
id: "9piUVz",
defaultMessage: "Order refund information was sent to customer",
description: "order history message",
});
}
case OrderEventsEnum.FULFILLMENT_CANCELED:
return intl.formatMessage({
id: "GLy2UR",
defaultMessage: "Fulfillment was cancelled",
description: "order history message",
});
case OrderEventsEnum.INVOICE_REQUESTED:
return intl.formatMessage(
{
id: "chvryR",
defaultMessage: "Invoice was requested by {requestedBy}",
description: "order history message",
},
{
requestedBy: getUserOrApp(),
},
);
case OrderEventsEnum.INVOICE_GENERATED:
return intl.formatMessage(
{
id: "pTpx0p",
defaultMessage:
"Invoice no. {invoiceNumber} was generated by {generatedBy}",
description: "order history message",
},
{
generatedBy: getUserOrApp(),
invoiceNumber: event.invoiceNumber,
},
);
case OrderEventsEnum.INVOICE_UPDATED:
return intl.formatMessage(
{
id: "6RQKxH",
defaultMessage: "Invoice no. {invoiceNumber} was updated",
description: "order history message",
},
{
invoiceNumber: event.invoiceNumber,
},
);
case OrderEventsEnum.INVOICE_SENT:
return intl.formatMessage(
{
id: "qddy2Z",
defaultMessage: "Invoice was sent to customer by {sentBy}",
description: "order history message",
},
{
sentBy: getUserOrApp(),
},
);
case OrderEventsEnum.FULFILLMENT_AWAITS_APPROVAL:
return intl.formatMessage({
id: "PcPMjC",
defaultMessage: "Fulfillment awaits approval",
description: "order history message",
});
case OrderEventsEnum.FULFILLMENT_FULFILLED_ITEMS:
return intl.formatMessage(
{
id: "nHmugP",
defaultMessage: "Fulfilled {quantity} items",
description: "order history message",
},
{
quantity: event.quantity,
},
);
case OrderEventsEnum.FULFILLMENT_REFUNDED:
return intl.formatMessage(
{
id: "D3WUc/",
defaultMessage: "Order was refunded by {refundedBy}",
description: "order history message",
},
{
refundedBy: getUserOrApp(),
},
);
case OrderEventsEnum.FULFILLMENT_RESTOCKED_ITEMS:
return intl.formatMessage(
{
id: "wOeIR4",
defaultMessage: "Restocked {quantity} items",
description: "order history message",
},
{
quantity: event.quantity,
},
);
case OrderEventsEnum.NOTE_ADDED:
return intl.formatMessage({
id: "6WRFp2",
defaultMessage: "Note was added to the order",
description: "order history message",
});
case OrderEventsEnum.ORDER_FULLY_PAID:
return intl.formatMessage({
id: "P/EDn1",
defaultMessage: "Order was fully paid",
description: "order history message",
});
case OrderEventsEnum.ORDER_MARKED_AS_PAID:
return intl.formatMessage({
id: "fkplbE",
defaultMessage: "Order was marked as paid",
description: "order history message",
});
case OrderEventsEnum.OTHER:
return event.message;
case OrderEventsEnum.OVERSOLD_ITEMS:
return intl.formatMessage(
{
id: "Fl3ORD",
defaultMessage: "Oversold {quantity} items",
description: "order history message",
},
{
quantity: event.quantity,
},
);
case OrderEventsEnum.PAYMENT_CAPTURED:
return intl.formatMessage({
id: "2yV+s8",
defaultMessage: "Payment was captured",
description: "order history message",
});
case OrderEventsEnum.PAYMENT_FAILED:
return intl.formatMessage({
id: "TCR639",
defaultMessage: "Payment failed",
description: "order history message",
});
case OrderEventsEnum.PAYMENT_REFUNDED:
return intl.formatMessage({
id: "3fgyFh",
defaultMessage: "Payment was refunded",
description: "order history message",
});
case OrderEventsEnum.PAYMENT_VOIDED:
return intl.formatMessage({
id: "8RnPGF",
defaultMessage: "Payment was voided",
description: "order history message",
});
case OrderEventsEnum.PLACED:
return intl.formatMessage({
id: "GJAX0z",
defaultMessage: "Order was placed",
description: "order history message",
});
case OrderEventsEnum.PLACED_FROM_DRAFT:
return intl.formatMessage({
id: "OKGd/k",
defaultMessage: "Order was created from draft",
description: "order history message",
});
case OrderEventsEnum.TRACKING_UPDATED:
return intl.formatMessage({
id: "e92Uxp",
defaultMessage: "Updated fulfillment group's tracking number",
description: "order history message",
});
case OrderEventsEnum.UPDATED_ADDRESS:
return intl.formatMessage({
id: "RLTaAR",
defaultMessage: "Order address was updated",
description: "order history message",
});
case OrderEventsEnum.PAYMENT_AUTHORIZED:
return intl.formatMessage({
id: "GVM/fi",
defaultMessage: "Payment was authorized",
description: "order history message",
});
case OrderEventsEnum.CONFIRMED:
return intl.formatMessage({
id: "ubasgL",
defaultMessage: "Order was confirmed",
description: "order history message",
});
case OrderEventsEnum.TRANSACTION_REFUND_REQUESTED:
return intl.formatMessage({
id: "fqJXzO",
defaultMessage: "Transaction refund requested",
description: "order history message",
});
case OrderEventsEnum.TRANSACTION_VOID_REQUESTED:
return intl.formatMessage({
id: "ZKuzRy",
defaultMessage: "Transaction void requested",
description: "order history message",
});
case OrderEventsEnum.TRANSACTION_CAPTURE_REQUESTED:
return intl.formatMessage({
id: "DRwqnt",
defaultMessage: "Transaction capture requested",
description: "order history message",
});
case OrderEventsEnum.EXTERNAL_SERVICE_NOTIFICATION:
return event.message;
}
};

View file

@ -0,0 +1,21 @@
import { makeStyles } from "@saleor/macaw-ui";
export const useStyles = makeStyles(
theme => ({
eventSubtitle: {
marginTop: theme.spacing(1),
},
header: {
fontWeight: 500,
marginBottom: theme.spacing(1),
},
linesTableCell: {
paddingRight: theme.spacing(3),
},
root: { marginTop: theme.spacing(4) },
user: {
marginBottom: theme.spacing(1),
},
}),
{ name: "OrderHistory" },
);

View file

@ -48,6 +48,7 @@ const timelineEventTypes = {
rawMessage: [
OrderEventsEnum.OTHER,
OrderEventsEnum.EXTERNAL_SERVICE_NOTIFICATION,
OrderEventsEnum.TRANSACTION_EVENT,
],
secondaryTitle: [OrderEventsEnum.ORDER_MARKED_AS_PAID],
};