import React from 'react';
import superagent from 'superagent';
import { fromUnixTime, formatDistanceToNow } from "date-fns";
import { formatInTimeZone } from 'date-fns-tz'
import constants, { DEFAULT_TIMEZONE } from '../CloudApi/Constants.js';
import { Icon, Button, Table, Message, Label, Flag, Image } from 'semantic-ui-react'
export default class ShopifyOrderTableRow extends React.Component {
render() {
const shopifyOrder = this.props.orderPair.shopifyOrder;
const createdAtDateTime = Date.parse(shopifyOrder.created_at);
const created = formatInTimeZone(createdAtDateTime, DEFAULT_TIMEZONE, 'PPp');
const customerInfo = (shopifyOrder.customer) ? (
{shopifyOrder.customer.first_name} {shopifyOrder.customer.last_name}
Location: {shopifyOrder.customer_locale}
) : null;
const identifiers = (shopifyOrder.id) ? (
) : null;
const compactIdentifiers = (shopifyOrder.id) ? (
Order Number: #{shopifyOrder.order_number}
Name: {shopifyOrder.name}
) : null;
const verifiedEmail = (shopifyOrder.customer && shopifyOrder.customer.verified_email) ? (
) : null;
const shippingInfo = (shopifyOrder.shipping_address) ? (
{shopifyOrder.shipping_address.name}
{shopifyOrder.shipping_address.city}, {shopifyOrder.shipping_address.province_code} {shopifyOrder.shipping_address.zip}
{shopifyOrder.shipping_address.country}
) : null;
const itemsWithIpd = {};
if (shopifyOrder.line_items) {
for (const item of shopifyOrder.line_items) {
if (item.properties) {
const ipd = item.properties.find(property => property.name === "IPD");
if (ipd) {
itemsWithIpd[item.id] = ipd.value;
}
}
}
}
const refundedLineItemIds = shopifyOrder.refunds.reduce((acc, refund) => {
const ids = refund.refund_line_items.map(item => item.line_item_id);
return [...acc, ...ids];
}, []);
// Unfulfilled line items
const unfulfilledLineItems = shopifyOrder.line_items.filter(
lineItem => lineItem.fulfillment_status !== "fulfilled" && lineItem.fulfillment_status !== "refunded" && !refundedLineItemIds.includes(lineItem.id)
);
const items = (shopifyOrder.line_items) ? (
{shopifyOrder.line_items.map(item => {
if (item.fulfillment_status === "fulfilled") {
return (
{item.quantity}x {itemsWithIpd[item.id] && }
);
} else if (item.fulfillment_status === "refunded" || refundedLineItemIds.includes(item.id)) {
return (
{item.quantity}x {itemsWithIpd[item.id] && }
);
} else {
return (
{item.quantity}x {itemsWithIpd[item.id] && }
);
}
})}
) : null;
const compactLineItems = (shopifyOrder.line_items) ? (
{shopifyOrder.line_items.map(item => {
if (item.fulfillment_status === "fulfilled") {
return ();
} else if (item.fulfillment_status === "refunded" || refundedLineItemIds.includes(item.id)) {
return null;
} else {
return ({item.quantity}x {item.title});
}
})}
) : null;
const tags = (shopifyOrder.tags) ? (
{shopifyOrder.tags.split(',').map(tag => (
{tag}
))}
) : null;
const origin = (shopifyOrder.origin && shopifyOrder.origin === "Shopify") ? (
) : Test Data;
const orderStatus = (shopifyOrder.financial_status) ? (
Fulfillment Status: {shopifyOrder.fulfillment_status}
{
this.props.orderPair.bigOrder &&
}
) : null;
const isBigOrder = this.props.orderPair.bigOrder && true;
if (shopifyOrder.cancelled_at || !["paid", "partially_refunded"].includes(shopifyOrder.financial_status)) {
return (
{identifiers}
Shopify order is cancelled or refunded.
)
}
if (this.props.compact) {
return (
{compactIdentifiers}
{customerInfo}
{compactLineItems}
)
} else {
return (
{identifiers}
{created}
{shippingInfo}
{items}
{tags}
{origin}
{orderStatus}
)
}
}
}