Skip to main content

PO → ASN Sync

What this menu does

When you create a Purchase Order in AutoCount for an inbound supplier shipment, this menu tells WMS to prepare to receive (called "ASN" — Advance Shipment Notice).

Once goods physically arrive and WMS marks the receipt, WMS Sync Hub auto-creates the GRN (Goods Received Note) in AutoCount. No re-keying.

⚡ Important first

Cannot cancel ASN once GRN is created

Once WMS reports receipt and WMS Sync Hub creates the GRN, the Cancel Synced ASN button gets blocked — inventory has already posted to AutoCount, and cancelling the ASN now would create a mismatch.

To roll back:

  1. Cancel the GRN normally in AutoCount first.
  2. Come back here and click Cancel Synced ASN.
Deleting a PO auto-cancels the ASN

If you delete the PO directly in AutoCount (or set Cancelled = 'T'), WMS Sync Hub detects this and auto-cancels the ASN on WMS within 10 seconds. No need to manually click Cancel Synced ASN.

However: if the PO already has a GRN, the auto-cancel won't touch WMS (to prevent orphan inventory). In that case cancel the GRN first, then delete the PO.

v1.6.1+: skip local item-exists check

Since v1.6.1, Transfer Selected to ASN no longer pre-checks if items exist on WMS. The customer prefers WMS itself returning the error (more authoritative + real-time).

If a SKU isn't registered on WMS, WMS will reject the entire ASN, and the error message appears in the Sync Log (with full request + response payload).

How to use

  1. Create your Purchase Order in AutoCount as usual.
  2. Open PO → ASN Sync on the left.
  3. Find your PO. Use Search (DocNo / supplier name / description — any keyword) and press Enter.
  4. Ctrl + Click to select the PO rows you want to push (up to 10 at a time).
  5. Click Transfer Selected to ASN at the top.
  6. The confirmation dialog shows the count — click Yes.
  7. Results show one row at a time:
    • success — WMS ASN # column populated
    • failure — popup shows the WMS error (INVALID_DATA, ITEM_NOT_EXISTS, etc.)
  8. Once goods physically arrive, WMS marks receipt, and WMS Sync Hub auto-creates the GRN via webhook.
  9. The GRN # column shows the new GRN number. Click View to open the original GRN window in AutoCount.
Supports large POs: 1000+ lines

Since v1.6.2, a single PO can have over 1000 line items (previously failed at ~200 lines due to a URI length limit). That cap has been lifted (bypassing FormUrlEncodedContent's internal cap).

Cancelling a synced ASN

If you pushed a PO by mistake or the supplier cancelled the shipment:

  1. Find the PO row in this menu.
  2. Select it (multi-select supported), click Cancel Synced ASN.
  3. Click Yes in the confirmation.
  4. ASN is cancelled on WMS asynchronously (worker handles it within 10 seconds), and the WMS ASN # column clears.

Pre-condition:

  • GRN not yet created (PODTL.TransferedQty = 0)
  • Otherwise the local GRN guard blocks the cancel and shows you which POs are blocked

Retry Failed PO Pushes

If a PO push fails (WMS Stage = 'Failed') — typically due to SKU not on WMS, wrong warehouseCode, or network issues — fix the cause then retry:

  1. Ctrl + Click to select all Failed PO rows (max 10).
  2. Click Retry Failed PO Pushes at the top.
  3. The confirmation dialog lists the PO numbers — click Yes.
  4. Status resets from Failed → empty; the AsnCreateWorker will repush on the next poll.
v1.6.4+: Failed POs no longer auto-retry

Previously, AsnCreateWorker would retry failed POs forever (every 15 seconds). If a PO had a permanent issue (item not on WMS, wrong warehouseCode), it would hammer WMS endlessly.

Now failed POs are parked at WmsStage = 'Failed' and no longer auto-retry. You must check the Sync Log to find the cause, fix it, then explicitly use Retry Failed PO Pushes.

Multiple GRNs per PO (v1.6.5+)

WMS receives goods in batches — e.g. for a 100-EA PO the warehouse might:

  • Receive 30 EA in the morning → fires a webhook (status=RECEIVING)
  • Receive another 60 EA in the afternoon (cumulative 90) → fires a second webhook (status=RECEIVING)
  • Complete the receipt → fires a third webhook (status=RECEIVED)

WMS Sync Hub creates a fresh GRN per webhook, each containing only the delta added since the last one — no double-booking.

WebhookWMS cumulativeAlready bookedDeltaGRN created
1 (RECEIVING)30 EA030GR-A receives 30 EA
2 (RECEIVING)90 EA3060GR-B receives 60 EA
3 (RECEIVED)100 EA9010GR-C receives 10 EA
4 (retransmit / same 100 EA)100 EA1000(skipped, nothing new)

Total received = 30 + 60 + 10 = 100 EA, perfectly aligned with WMS.

How the plugin shows multiple GRNs

The PO → ASN Sync page is now a master / detail grid:

  • Master row: one row per PO with a GRNs column showing the total count
  • Click ▶ to expand: see every GRN created for that PO
    • GRN # (with View button — opens the original GRN in AutoCount)
    • WMS Status (RECEIVING / RECEIVED / CLOSED — which webhook spawned it)
    • GRN Date
    • Created By
    • Items (number of GRN lines)
    • Webhook At (when the webhook arrived)

GRN unit = PO unit

WMS reports receipts in EA (smallest unit), but the GRN line is automatically converted back to the PO line's UOM (typically CT):

  • WMS receives 24 EA + Rate=12 → GRN writes 2 CT
  • WMS receives 18 EA → GRN writes 1.5 CT (if the item allows decimals)
  • UnitPrice copies straight from PODTL.UnitPrice — unit, price, and qty stay in sync

Retransmit protection (automatic)

If WMS retransmits the same webhook (network blip, retry), the new logic naturally handles it:

  • Same cumulative qty → delta = 0 → skipped, no GRN created
  • The Sync Log records delta = 0 ... nothing new to GRN for the skipped attempt

FAQ

  • Q: Do I still need to manually enter the GRN? No — once WMS reports receipt, WMS Sync Hub auto-creates one. Each receiving batch makes a fresh GRN.
  • Q: What if the supplier only delivers part of the PO? A partial GRN is created with just what arrived. The next delivery makes another GRN — they sum up against the PO's outstanding qty.
  • Q: How do I view all GRNs for a single PO? On the PO → ASN Sync page, click the at the leftmost column to expand the row — every GRN for that PO is listed below.
  • Q: Can I edit the PO after the ASN is synced? Cancel the ASN first (Cancel Synced ASN). If a GRN already exists, cancel it in AutoCount before editing the PO.
  • Q: How do I see the exact WMS error when a PO push fails? Go to Sync Log, filter Type = ASN_CREATE, find your PO number, double-click to open the View Payload dialog — full request + response JSON inside.
  • Q: Do the GRN quantities match what WMS reports? Yes. Each GRN's qty = WMS's cumulative receivedQty minus what's already booked. After every save, PODTL.TransferedQty is advanced by the actual saved EA so the next webhook computes against an updated baseline — no double-booking.