import React, { useRef, useEffect } from 'react'; import superagent from 'superagent'; import { fromUnixTime, formatDistanceToNow } from "date-fns"; import { formatInTimeZone } from 'date-fns-tz'; import * as ApiUtils from '../CloudApi/ApiUtils.js'; import ApiButtonModal from '../CloudApi/ApiButtonModal.jsx'; import constants, { DEFAULT_TIMEZONE } from '../CloudApi/Constants.js'; import { Header, Message, Icon, Button, Table, Label, Modal, Segment, Form } from 'semantic-ui-react' import InventoryItemPickingHint from './InventoryItemPickingHint.jsx'; export default class InventoryItemComponent extends React.Component { constructor(props) { super(props); this.state = { loading: false, deleteInventoryItemModalOpen: false, }; } showDeleteInventoryItemModal() { } onChange(e, { name, value }) { this.setState({ [name]: value }) } openForceDeleteInventoryItemModal(i, e) { this.setState({ deleteInventoryItemModalOpen: true, force: true }); } openDeleteInventoryItemModal(i, e) { this.setState({ deleteInventoryItemModalOpen: true, force: false }); } closeDeleteInventoryItemModal(i, e) { this.setState({ deleteInventoryItemModalOpen: false }); } async onCancelInventoryItem(e) { e.preventDefault(); this.setState({ loading: true }); try { let url = `/api/admin/inventory/item/${this.props.inventoryItem.id}`; let res = await superagent.delete(url); window.location.reload(); } catch (e) { window.alert("Error deleting: " + e.message); console.error(e); } this.setState({ loading: false, deleteInventoryItemModalOpen: false }); } async onAdjustQuantity() { try { let url = `/api/admin/inventory/item/${this.props.inventoryItem.id}`; let res = await superagent.put(url).send({ quantity: this.state.newQuantity }); window.location.reload(); } catch (e) { window.alert("Error adjusting quantity: " + e.message); console.error(e); } } async onDeleteInventoryItem() { this.setState({ loading: true }); try { let url = `/api/admin/inventory/item/${this.props.inventoryItem.id}?force=1`; let res = await superagent.delete(url); window.location.reload(); } catch (e) { window.alert("Error deleting: " + e.message); console.error(e); } this.setState({ loading: false, deleteInventoryItemModalOpen: false }); } render() { if (this.state.loading) { return (
) } let createdAtDateTime = fromUnixTime(this.props.inventoryItem.createdAt / 1000); const createdAt = formatInTimeZone(createdAtDateTime, DEFAULT_TIMEZONE, 'PPPp z'); const fromNow = formatDistanceToNow(createdAtDateTime, { addSuffix: true }); const history = this.props.history && this.props.history.map((historyItem, historyItemIndex) => { let createdAtDateTime = fromUnixTime(historyItem.createdAt / 1000); const createdAt = formatInTimeZone(createdAtDateTime, DEFAULT_TIMEZONE, 'PPPp z'); return ( {createdAt} {historyItem.creatorBigscreenAccountId || '—'} {historyItem.message} {(historyItem.metadata && historyItem.metadata.reason) &&
Reason: {historyItem.metadata.reason}
} {(historyItem.metadata && historyItem.metadata.bigShipmentId) &&
View Shipment
}
) }); const inventoryItemState = Object.entries(this.props.schemas.InventoryItemStatuses).find(entry => entry[1] === this.props.inventoryItem.status)[0]; const stateLabelColor = (this.props.inventoryItem.status === this.props.schemas.InventoryItemStatuses["VerifiedAndReady"]) ? "green" : "grey"; const header = ( Are you sure you want to cancel this inventory item? ); return (
{(this.props.inventoryItem.trackingType && this.props.inventoryItem.trackingType === 'QuantityTracked') && This is a quantity tracked item with {this.props.inventoryItem.quantity} items in stock } Type Serial number {this.props.inventoryItem.serialNumber}  {(this.props.inventoryItem.trackingType && this.props.inventoryItem.trackingType === 'QuantityTracked') && Quantity {this.props.inventoryItem.quantity}
Warning Quantity changes are tracked and will be recorded in the history of this inventory item.
} ID {this.props.inventoryItem.id}  Creator View account Created {createdAt} ({fromNow}) State {(this.props.inventoryItem.trackingType !== 'QuantityTracked') && Location } {this.props.inventoryItem.jobId && Job }
When User Message {history}
Danger Zone
Permanently Delete Are you sure you want to permanently delete this inventory item?
Warning This action can not be undone! Deleting an inventory item after it has shipped may cause problems with the database!!!
) } }