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
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:
- Cancel the GRN normally in AutoCount first.
- Come back here and click Cancel Synced 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.
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
- Create your Purchase Order in AutoCount as usual.
- Open PO → ASN Sync on the left.
- Find your PO. Use Search (DocNo / supplier name / description — any keyword) and press Enter.
- Ctrl + Click to select the PO rows you want to push (up to 10 at a time).
- Click Transfer Selected to ASN at the top.
- The confirmation dialog shows the count — click Yes.
- Results show one row at a time:
- ✓ success — WMS ASN # column populated
- ✗ failure — popup shows the WMS error (INVALID_DATA, ITEM_NOT_EXISTS, etc.)
- Once goods physically arrive, WMS marks receipt, and WMS Sync Hub auto-creates the GRN via webhook.
- The GRN # column shows the new GRN number. Click View to open the original GRN window in AutoCount.
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:
- Find the PO row in this menu.
- Select it (multi-select supported), click Cancel Synced ASN.
- Click Yes in the confirmation.
- 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:
- Ctrl + Click to select all Failed PO rows (max 10).
- Click Retry Failed PO Pushes at the top.
- The confirmation dialog lists the PO numbers — click Yes.
- Status resets from Failed → empty; the AsnCreateWorker will repush on the next poll.
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.
| Webhook | WMS cumulative | Already booked | Delta | GRN created |
|---|---|---|---|---|
| 1 (RECEIVING) | 30 EA | 0 | 30 | GR-A receives 30 EA |
| 2 (RECEIVING) | 90 EA | 30 | 60 | GR-B receives 60 EA |
| 3 (RECEIVED) | 100 EA | 90 | 10 | GR-C receives 10 EA |
| 4 (retransmit / same 100 EA) | 100 EA | 100 | 0 | (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 GRNfor 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.TransferedQtyis advanced by the actual saved EA so the next webhook computes against an updated baseline — no double-booking.