Transfer-Slips

Method 1: Integrated Method Using Hands-Free RFID Readers (local network CDM required)
Method 2: Non-Integrated Method Hands-Free RFID Readers via Senitron's Transfer-Slip Windows App (local network CDM required)
Method 3: Transfer-Slips using Hands-Free RFID Readers  via Senitron's Web-Based UI (local network CDM required)
Method 4: Transfer-Slip using Senitron's Hand-Held App

Note: The best practice methods are Method(s) 1 , 3, and 4

Method 1: Integrated Method Using Hands-Free RFID Readers (local network CDM required)

Any external software, on the same local network, can utilize the Senitron POS Service API, to read RFID tags, and commit transactions.
For example, External POS apps, may add an RFID scan button to read RFID tag(s)/Label(s) via this Senitron service.

In the case of creating transfer-slip, using this method. The external app (example POS) may incorporate an RFID read button, inside the transfer-slip page of their app. Once this button is pressed, the Senitron service will activate the RFID reader, and the users can quickly scan 100's of items quickly, which will stream back into the external software, populating its screen with item quantities.

The POS Service has a simple HTTP REST API available for communication, based on HTTP verbs, and configuration values passed as part of the URL path.

Available commands:

  • Reader Start | Status | Stop
  • Pull | Clear : current reads
  • Commit transaction

Configuration required data:

  • Store location (optional - depreciated, no longer needed, any value can be used)
  • Client ID (optional - depreciated, no longer needed, any value can be used)
  • Rfid Reader ID (required)
  • Transaction type

Reader Start

METHOD: POST

URL: /api/pull/start/{location}/{deviceId}/{clientId}/{transactionType}

RESPONSE:

200 -> OK

404 -> Error, reason included in the response body

To start a reader, make new HTTP request with “method” POST, you need to keep track of the reader state internally, as the POS Service assumes this will be the case to allow better control of the readers.

Example:

POST: http://localhost:8889/api/pull/start/001/1000/0/0

Note: localhost will usually be replaced with the IP address of a Senitron CDM machine on the same network.
There for the post example will be http://192.168.2.20:8889/api/pull/start/001/1000/0/0

Reader Status

METHOD: GET

URL: /api/status/{location}/{deviceId}

RESPONSE:

200 -> OK, JSON object in the body with the reader status string

400 -> Error, no active session for the reader

404 -> Error, reason included in the response body

To retrieve the current status of a started reader, make new HTTP request with “method” GET, the response body contains a JSON object, you can directly display to present the current reader status.

Example:

GET: http://localhost:8889/api/status/001/1000

RESPONSE:

{ "status": "Waiting for reader 10…" }

OR:

{ "status": “Reader 10 Connected." }

OR:

{ "status": “Error starting reader 10." }

Reader Stop

METHOD: POST

URL: /api/pull/stop/{location}/{deviceId}

RESPONSE:

200 -> OK

400 -> Error, no active session for the reader

404 -> Error, reason included in the response body

To stop a reader, make new HTTP request with “method” POST.

Example:

POST: http://localhost:8889/api/pull/stop/001/1000

Pull Reads

METHOD: GET

URL: /api/pull/{location}/{deviceId}

RESPONSE:

200 -> OK, JSON object in the body with the reader status string

400 -> Error, no active session for the reader

404 -> Error, reason included in the response body

To retrieve the currently read tags, make new HTTP request with “method” GET, if the specified reader is active, the response will contain an array of objects that include: Epc, Upc, Qty.

Example:

GET: http://localhost:8889/api/pull/001/1000

RESPONSE:

[

{"Epc":"000000000000000000000341","Upc":"999999","Qty":1},

{"Epc":"126000000000000000000060","Upc":"999999","Qty":1},

{"Epc":"126000000000000000000471","Upc":"999999","Qty":1}

]

Clear Reads

METHOD: POST

URL: /api/pull/clear/{location}/{deviceId}

RESPONSE:

200 -> OK

400 -> Error, no active session for the reader

404 -> Error, reason included in the response body

To clear the currently read tags, make new HTTP request with “method” POST.

Example:

POST: http://localhost:8889/api/pull/clear/001/1000

Do a GET request to the following url:

http://app.senitron.net/{tenant}/api/v1/locations/destinations.json

Sample output:

[

{

"id": 69,

"name": "Blaine",

"code": "001",

"created_at": "2017-08-19T19:33:13.970-07:00",

"updated_at": "2017-08-19T19:33:13.970-07:00",

"client_id": 35,

"store_no": 1,

"subsidiary_no": 1,

"timezone": "Central Time (US & Canada)",

"steet": "",

"suit": "",

"city": "",

"state": "",

"zip": null,

"country": "",

"email": "",

"phone": null,

"currency": "",

"tenant_code": "abccompany_001",

"live_data_time_limit": 10,

"zone_monitor_zone_1_id": null,

"zone_monitor_zone_2_id": null,

"zone_monitor_zone_3_id": null,

"zone_monitor_tag_limit": 20,

"zone_monitor_zone_4_id": null,

"zone_monitor_zone_5_id": null,

"zone_monitor_zone_6_id": null

}

]

Do a POST request to the following url:

http://app.senitron.net/{tenant}/api/v1/tags/metadata.json

Send a JSON array with item numbers (as strings), to get a JSON array with each tag metadata.

Sample output:

[

{

"id": 3819128,

"number": "46625",

"upc": null,

"alu": null,

"style": "DALBELLO RENTAL",

"description": "VANTAGE RTL MS",

"colour": "1011",

"size": "25.5",

"dcs": null,

"dnc": null,

"total_qty": null,

"accessory": null,

"store_id": null,

"type_id": 0,

"client_id": 62,

"price": null,

"picture": {

"url": null,

"thumb": {

"url": null

}

},

"cloud_picture_url": null,

"extra": null,

"printer_serial_counter": 0,

"modified_at": null,

"unit_of_measure": "LB",

"category_name": [],

"item_categories": []

}

]

Do a POST request to the following url:

http://app.senitron.net/{tenant}/{location_number}/api/v1/transfer-slip.json?key={api_key}

Sample body of transfer slip:

{

"transfer_type": "CheckIn",

"DocumentId": "4",

"reference1": "1",

"reference2": "2",

"reference3": "3",

"reference4": "4",

"reason_info": "Sample transfer",

"transfer_slip_stores": "001",

"transfer_slip_epc_ids": [

"307510BBD3202E4000000057",

"307510BBD3202E4000000056"

]

}

Method 2: Non-Integrated Method Hands-Free RFID Readers via Senitron's Transfer-Slip Windows App (local network CDM required)

The Senitron Transfer-Slip Assistant, Windows App, is an independent software which sits on top of the typical POS UI, and allows the users to click the Sales button, to have the app read items via a fixed-tabletop-RID-reader. The read items, populate on to the Transfer-Slip Assistant app, and at the same time into the POS UI, using Windows Targeting mechanisms.

Once items are transfer-out or transfer-in using the app & tool, both Senitron and POS / External system will decrease/increase their quantities in parallel, keeping the inventories properly in SYNC.

There are Pro's and Con's of using this app. The benefit is that, any company can quickly start using RFID with their POS/external system, with out having to do integrations. The disadvantage is that this method, is more prone to human error, where the personnel, may not have the POS ready to accept the RFID reads, and or the users can circumvent using the Transfer-Slip Assistant, and may transfer items on the POS as a normal barcode system (end-effect is that Senitron will fall out of sync with the POS system's inventory) (Method 1 which is an more in-depth integrated method is always perfected when possible, and would especially be very effective if the POS / external software makers, blocks any methods where the users can try to circumvent POS RFID reading for sales and returns.

Method 3: Transfer-Slips using Hands-Free RFID Readers  via Senitron’s Web-Based UI (local network CDM required)

Method 3: Transfer-Slips using Hands-Free RFID Readers  via Senitron’s Web-Based UI (local network CDM required)

Senitron cloud users may create and receive transfer-slips using the Senitron Cloud dashboard UI, by going to RFID > Transfer-Slip to make a transfer-slip, or by going to Transactions > Transfer-In to transfer in.

Senitron can Sync this data with any external software such as a POS etc. by doing specific API communications.

Once the transfer slip is committed, Senitron can send the following payload to the external POS/ERP system as a POST request.

External system URL: https://externalsystemurl.com/requesttransferslipid=?Key"{api_key}

Payload:

{

“transfer_from”: “001”,

“transfer_to”: “002”,

“transfer_type”: “transfer-out”,

“document_id”: “4”,

“reference1”: “1”,

“reference2”: “2”,

“reference3”: “3”,

“reference4”: “4”,

“reason_info”: “Sample transfer”,

"user": "Senitron Admin",

“transfer_slip_quantities”: [

{ upc: “2100121231231", item_number: “2100121231231", alu: “2100121231231", sku: “2100121231231",  qty: 45 },

{ upc: “2100121231232", item_number: “2100121231232", alu: “2100121231232", sku: “2100121231232",  qty: 99 },

] }

RESPONSE:

As response we expect the external system to return back the reference id to the document, which both system can use for future communciations.

{ "status": "OK", "refference_id": "OO1" }

If a transfer slip is cancelled in senitron we will send a delete request to the external system with the provided external reference_i

External system URL: https://externalsystemurl.com/requesttransferslipid=?Key"{api_key}

Method: DELETE

Payload: { "refference_id": "001" , "user": "Seniton Admin"}

Response: { "status": "OK" }

Method 4: Transfer-Slip using Senitron’s Hand-Held App

Senitron cloud users may create and receive transfer-slips using the Senitron Handheld-RID Scanner by using the transfer-slip modules.

Senitron can Sync this data with any external software such as a POS etc. by doing specific API communications.

Once the transfer slip is committed, Senitron can send the following payload to the external POS/ERP system as a POST request.

External system URL: https://externalsystemurl.com/requesttransferslipid=?Key"{api_key}

Payload:

{

“transfer_from”: “001”,

“transfer_to”: “002”,

“transfer_type”: “transfer-out”,

“document_id”: “4”,

“reference1”: “1”,

“reference2”: “2”,

“reference3”: “3”,

“reference4”: “4”,

“reason_info”: “Sample transfer”,

"user": "Senitron Admin",

“transfer_slip_quantities”: [

{ upc: “2100121231231", item_number: “2100121231231", alu: “2100121231231", sku: “2100121231231",  qty: 45 },

{ upc: “2100121231232", item_number: “2100121231232", alu: “2100121231232", sku: “2100121231232",  qty: 99 },

] }

RESPONSE:

As response we expect the external system to return back the reference id to the document, which both system can use for future communciations.

{ "status": "OK", "refference_id": "OO1" }

If a transfer slip is cancelled in senitron we will send a delete request to the external system with the provided external reference_i

External system URL: https://externalsystemurl.com/requesttransferslipid=?Key"{api_key}

Method: DELETE

Payload: { "refference_id": "001" , "user": "Seniton Admin"}

Response: { "status": "OK" }