Skip to content

Instantly share code, notes, and snippets.

@kerdany
Last active December 13, 2024 00:51
Show Gist options
  • Save kerdany/a8c1633749c0138da7f70b45589537cd to your computer and use it in GitHub Desktop.
Save kerdany/a8c1633749c0138da7f70b45589537cd to your computer and use it in GitHub Desktop.
testing_orders

Picking FSN Barcode:

  • Picking: Scan PBarcode (not WMS Barcode)
  • Picking: Invalid FSN Barcode
  • Picking: FSN Barcode belonging to another WMS barcode
  • Picking: FSN Barcode was already scanned same Putaway Job
  • Picking: Same FSN Barcode for an already picked item in another job.
  • Picking: Serial Number should not be required.
  • Picking: Serial Number to be stored in picking job line.
  • Picking: Invalid AWB Number.
  • Picking: Used AWB Number.
  • Picking: If GTIN has any serialized item (any partner), GTIN can't be scanned.
  • Picking: If PSKU has any serialized item, pick non-serialized items first (Unless MP passes flag)

Putaway FSN Barcode:

  • Putaway: Scan PBarcode (not WMS Barcode)
  • Putaway: Putaway of Fulfilled/Scanned/PickedUp/Arrived/Delivered order should fail
  • Putaway: Order Cancelled
  • Putaway: Order Undelivered
  • Putaway: Invalid FSN Barcode
  • Putaway: FSN Barcode belonging to different WMS Barcode
  • Putaway: FSN Barcode was already scanned same Putaway Job
  • Putaway: FSN Barcode wasn't scanned in this order.
  • Putaway: Different FSN Barcode than picked item
  • Putaway: Invalid FSN Barcode (force putaway in non live location)
  1. Platform Admin Role

Ensure you have platform admin role in order to be able to call swagger apis.

# Instance: instant-staging
# https://docs.google.com/spreadsheets/d/1W8nDRPOeytPOtMCFLfNirPYv3JrFoVzJ9uu9aSmeAHM/edit?gid=810681161
SELECT
  u.code email,
  r.resource_type,
  a.resource_ref,
  r.role_type,
  r.permissions
FROM instant_access.user u
  JOIN instant_access.user_access a USING (id_user)
  JOIN instant_access.resource_role r USING (id_resource_role)
WHERE TRUE
  AND r.resource_type = 'platform'
  AND u.code = '[email protected]';
  1. Install SC External App

https://appcenter.ms/orgs/noon/apps/sc-external-app/distribute/releases/586

  1. Install NIM Delivery App

https://appcenter.ms/orgs/noon/apps/nim-delivery/distribute/releases/280

  1. Facility Access
# Instance: idp-staging
SELECT
  f.code AS facility,
  f.id_partner,
  ft.code facility_type,
  c.code access_code,
  ct.code AS consumer_type_code,
  t.code token,
  CONCAT('https://idp-api.sc.noonstg.team/public/facility-qr#', t.code) facility_code,
  t.remaining_scans
FROM idp.facility AS f
  JOIN idp.facility_access_config AS c USING (id_facility)
  JOIN idp.facility_type AS ft USING (id_facility_type)
  LEFT JOIN idp.token AS t ON (t.consumer_id = c.id_facility_access_config)
  LEFT JOIN idp.consumer_type AS ct USING (id_consumer_type)
WHERE TRUE
  AND f.code = 'W00000005A'
  AND ct.code = 'facility_access_config'
  AND t.is_active = 1;
  1. User Access
# Instance: idp-staging
SELECT
  u.username,
  ANY_VALUE(u.user_code) AS user_code,
  ANY_VALUE(it.name) AS tenant,
  ANY_VALUE(it.id_partner) AS id_partner,
  ANY_VALUE(a.is_allow_login) AS is_allow_login,
  ANY_VALUE(a.is_admin) AS is_admin,
  ANY_VALUE(ct.code) AS consumer_type_code,
  ANY_VALUE(up.is_active) AS phone_active,
  ANY_VALUE(p.phone_uid) AS phone_uid,
  ANY_VALUE(t.code) AS token,
  ANY_VALUE(CONCAT('https://idp-api.sc.noonstg.team/public/emp-qr#', t.code)) AS user_code,
  ANY_VALUE(t.remaining_scans) AS remaining_scans,
  MAX(h.created_at) AS last_login,
  GROUP_CONCAT(DISTINCT g.group_name) AS gs
FROM idp.user AS u
  JOIN idp.identity_tenant AS it USING (id_identity_tenant)
  LEFT JOIN idp.user_partner_access AS a ON (a.id_user = u.id_user AND a.id_partner = it.id_partner)
  LEFT JOIN idp.token AS t ON (t.consumer_id = u.id_user)
  LEFT JOIN idp.consumer_type AS ct USING (id_consumer_type)
  LEFT JOIN idp.user_phone AS up ON (up.id_user = u.id_user)
  LEFT JOIN idp.phone_sensitive AS p USING (id_phone_sensitive)
  LEFT JOIN idp.user_group_member AS m ON (m.member_code = u.user_code)
  LEFT JOIN idp.user_group AS g USING (id_user_group)
  LEFT JOIN idp.login_history AS h ON (h.id_user = u.id_user)
WHERE TRUE
  AND username LIKE 'helkerdany%'
  -- AND t.is_active = 1
  -- AND up.is_active = 1
GROUP BY u.username
ORDER BY tenant ASC, u.username ASC;
  1. Login to SC External App
  • Scan to log in: Facility QR Code + User QR Code
  • Continue with phone
  1. Login to NIM Delivery App
  • Continue with phone number
  1. Get items in WMS stock
# Instance: wms-staging
SELECT
  w.code AS warehouse_code,
  z.code AS zone_code,
  a.code AS area_code,
  l.code AS location_code,
  il.lot_key,
  il.barcode AS wms_barcode,
  ip.pbarcode AS pbarcode,
  ip.id_partner AS id_partner,
  s.qty AS quantity
FROM wms.stock AS s
  JOIN wms.location AS l USING (id_location)
  JOIN wms.warehouse AS w USING (id_warehouse)
  JOIN wms.zone AS z USING (id_zone)
  JOIN wms.area AS a USING (id_area)
  JOIN wms.item AS i USING (id_item)
  JOIN wms.item_lot AS il ON (il.id_item_lot = i.id AND i.id_item_kind = 1)
  JOIN wms.item AS ii ON (ii.id_item = il.id_item_inner)
  JOIN wms.item_pbarcode AS ip ON (ip.id_item_pbarcode = ii.id AND ii.id_item_kind = 6)
WHERE TRUE
  AND w.is_darkstore = 1
  AND a.code = 'STOCK'
  AND COALESCE(JSON_VALUE(z.labels, '$.saleable'), '1') = '1'
  AND il.barcode REGEXP '^1[0-9]{8,}LS$'
  AND lot_key = 'serial'
  AND s.qty > 0;
  1. Get catalog skus for id_partner, pbarcode
# Instance: cache-staging
SELECT
  pb.id_partner,
  pb.pbarcode_canonical AS pbarcode,
  pb.psku_code,
  ps.zsku_child,
  ps.nsku_child
FROM psku.pbarcode AS pb
  JOIN psku.psku AS ps USING (psku_code)
WHERE TRUE
  AND pb.pbarcode_canonical IN ('TESTPSKUCODE', '6959144005539');
# Instance: cache-staging
SELECT
  psku_code,
  id_catalog,
  id_partner,
  catalog_sku
FROM psku.psku_catalog_map m
WHERE TRUE
  AND psku_code = 'aa9a2becadde902cd4aac41e8c8a0edz';
  1. Get FSN barcodes from Spanner
# https://console.cloud.google.com/spanner/instances/core01/databases/offer/details/query?project=noon-staging&authuser=1
# Instance: core 01
# Database: offer
SELECT
  id_partner,
  pbarcode_canonical,
  wms_barcode,
  fsn_nr,
  brand_serial_nr
FROM fsn_item
WHERE TRUE
  AND wms_barcode = '1901164821LS';
  1. Product Attributes
wms_barcode: 1901164821LS
pbarcode: TESTPSKUCODE
id_partner: 10001
psku_code: aa9a2becadde902cd4aac41e8c8a0edz
zsku: Z63C93DA14DE7572FB04D-1
nsku: N26600906A
  1. Check Pending Orders:
# Instance: homs-staging
SELECT
  c.code AS country_code,
  w.area AS warehouse_area,
  w.code AS warehouse_code,
  w.partner_warehouse_code AS partner_code,
  m.code mp,
  o.order_nr,
  dm.code AS delivery_mode,
  i.item_nr,
  so.code order_status,
  si.code item_status,
  o.is_cancelled
FROM homs.mp_order o
  JOIN homs.status so ON (so.id_status = o.id_status)
  JOIN homs.warehouse w ON (w.code = o.warehouse_code)
  JOIN homs.country c ON (c.id_country = w.id_country)
  JOIN homs.delivery_mode dm USING (id_delivery_mode)
  JOIN homs.mp m USING (id_mp)
  JOIN homs.mp_order_item i USING (id_mp_order)
  JOIN homs.status si ON (si.id_status = i.id_status)
WHERE TRUE
  AND o.warehouse_code = 'W00000002A'
  -- AND dm.code = 'rocket'
  AND dm.code = 'minutes'
  AND so.code IN ('created')
  AND o.is_cancelled = 0
ORDER BY o.created_at DESC;
  1. Create Order

5.1. Rocket

https://mx-instant-api-homs.mx.noonstg.team/swagger#/omsV2/create_oms_order_oms_order_create_post

# X-MP: noon
{
  "order": {
    "customerOrderNr": "HK_TEST_129",
    "countryCode": "ae",
    "mpCode": "noon",
    "misc": {}
  },
  "items": [
    {
      "itemNr": "HK_TEST_129-1",
      "catalogCode": "zsku",
      "catalogSku": "Z63C93DA14DE7572FB04D-1",
      "idPartner": 10001,
      "warehouseCode": "W00000005A",
      "returnWarehouse": "W00000005A",
      "deliveryMode": "rocket",
      "deliveryAddress": "addr::noon_customer::ae::e460a1b0578e2fc5f0ab7709baac1f3f::2",
      "estimatedPickupAt": "2024-10-05T23:20:00.000Z",
      "estimatedDeliveryAt": "2024-10-05T23:30:00.000Z",
      "isSerialNumberRequired": true,
      "misc": {}
    }
  ]
}

5.2. Minutes

https://mx-instant-api-homs.mx.noonstg.team/swagger#/order/create_order_order_create_post

{
  "order": {
    "orderNr": "HK_TEST_125",
    "mpCode": "nooninstant",
    "warehouseCode": "W00000002A",
    "countryCode": "ae",
    "deliveryAddress": "addr::noon_customer::ae::e460a1b0578e2fc5f0ab7709baac1f3f::2",
    "returnWarehouse": "W00000002A",
    "estimatedDeliveryAt": "2024-12-12T10:30:00.000Z",
    "estimatedPickupAt": "2024-12-12T10:20:00.000Z"
  },
  "items": [
    {
      "itemNr": "HK_TEST_125-1",
      "status": "created",
      "idPartner": 1283,
      "catalogCode": "zsku",
      "catalogSku": "ZC4ED36F479BFAF5E1085Z-1"
    }
  ]
}
  1. Cancel Order

6.1. Rocket

https://mx-instant-api-homs.mx.noonstg.team/swagger#/omsV2/cancel_oms_items_oms_item_cancel_post

# X-MP: noon
{
  "items": [
    "HK_TEST_122-1",
    "HK_TEST_122-2"
  ]
}

6.2. Minutes

https://mx-instant-api-homs.mx.noonstg.team/swagger#/order/cancel_order_order_cancel_post

{
  "orderNr": "HK_TEST_125",
  "mpCode": "nooninstant"
}
  1. Staging AWBs: https://docs.google.com/spreadsheets/d/1-rjIr0ONqrRyGBC3TDr0bMhMZht9-1lSniKBf4Z2rUg
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment