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) ? (
{shopifyOrder.name}
) : 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 (); } })}
) : null; const tags = (shopifyOrder.tags) ? (
{shopifyOrder.tags.split(',').map(tag => (
))}
) : null; const origin = (shopifyOrder.origin && shopifyOrder.origin === "Shopify") ? ( ) : Test Data; const orderStatus = (shopifyOrder.financial_status) ? (
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} ) } if (this.props.compact) { return ( {compactIdentifiers} {customerInfo} {compactLineItems} ) } else { return ( {identifiers} {created} {shippingInfo} {items} {tags} {origin} {orderStatus} ) } } }