import { PromoStandards } from 'promostandards-sdk-js';
async function placeAndTrackOrder() {
const supplier = new PromoStandards.Client({
id: 'account_id',
password: 'password',
endpoints: [
{
type: 'PurchaseOrder',
version: '1.0.0',
url: 'https://supplier.com/purchaseOrder',
},
{
type: 'OrderStatus',
version: '1.0.0',
url: 'https://supplier.com/orderStatus',
},
{
type: 'OrderShipmentNotification',
version: '1.0.0',
url: 'https://supplier.com/shipmentNotification',
},
{
type: 'Invoice',
version: '1.0.0',
url: 'https://supplier.com/invoice',
},
],
});
const orderNumber = `PO-${Date.now()}`;
try {
// Step 1: Submit purchase order
console.log('Submitting order...');
const orderResponse = await supplier.purchaseOrder.sendPO({
orderType: 'Regular',
orderNumber: orderNumber,
orderDate: new Date().toISOString(),
totalAmount: 1000.00,
rush: false,
currency: 'USD',
termsAndConditions: 'Net 30',
shipments: [
{
allowConsolidation: true,
blindShip: false,
packingListRequired: true,
freightDetails: {
carrier: 'UPS',
service: 'Ground',
},
shipTo: {
shipmentId: 1,
companyName: 'Test Company',
address1: '123 Main St',
city: 'New York',
region: 'NY',
postalCode: '10001',
country: 'US',
email: '[email protected]',
phone: '555-0100',
},
},
],
lineItems: [
{
lineNumber: 1,
description: 'T-Shirt - Large',
lineType: 'New',
quantity: { uom: 'EA', value: 100 },
toleranceDetails: { tolerance: 5 },
allowPartialShipments: true,
unitPrice: 10.00,
lineItemTotal: 1000.00,
productId: 'SHIRT-001',
},
],
});
console.log('Order submitted:', orderNumber);
// Step 2: Wait a moment, then check status
await new Promise((resolve) => setTimeout(resolve, 5000));
console.log('Checking order status...');
const status = await supplier.orderStatus.getOrderStatusDetails({
queryType: 1,
referenceNumber: orderNumber,
statusTimeStamp: new Date(Date.now() - 86400000).toISOString(),
});
if (status?.OrderStatusArray?.[0]) {
console.log('Current status:', status.OrderStatusArray[0].orderStatus);
}
// Step 3: Check for shipment notifications
console.log('Checking shipments...');
const shipments = await supplier.orderShipmentNotification
.getOrderShipmentNotification({
queryType: 1,
referenceNumber: orderNumber,
});
if (shipments?.ShipmentNotificationArray?.length > 0) {
console.log('Shipments found:');
for (const shipment of shipments.ShipmentNotificationArray) {
console.log(` Tracking: ${shipment.trackingNumber}`);
console.log(` Carrier: ${shipment.carrier}`);
}
} else {
console.log('No shipments yet');
}
// Step 4: Check for invoices
console.log('Checking invoices...');
const invoices = await supplier.invoice.getInvoices({
productId: 'SHIRT-001',
queryType: 1,
referenceNumber: orderNumber,
});
if (invoices?.InvoiceArray?.length > 0) {
console.log('Invoices found:');
for (const invoice of invoices.InvoiceArray) {
console.log(` Invoice #${invoice.invoiceNumber}`);
console.log(` Amount: $${invoice.totalAmount}`);
}
} else {
console.log('No invoices yet');
}
} catch (error) {
console.error('Error in order workflow:', error);
}
}
placeAndTrackOrder();