Skip to content

Instantly share code, notes, and snippets.

@kerdany
Last active August 31, 2024 09:36
Show Gist options
  • Save kerdany/39d2468b854688b3767c148d6907bfcf to your computer and use it in GitHub Desktop.
Save kerdany/39d2468b854688b3767c148d6907bfcf to your computer and use it in GitHub Desktop.
asn_inbounding_data.md

Data Questions:

  • invoice_qty
  • is_discrepancy_asn, discrepancy_reason
# ASN Sources
SELECT
  CASE
    WHEN pa.asn_nr IS NOT NULL THEN 'partner_asn'
    WHEN po.shipment_nr IS NOT NULL THEN 'retail_order'
    WHEN oi.asn_nr IS NOT NULL THEN 'ops_inbound'
    ELSE NULL
  END AS source_system,
  a.source_type,
  COUNT(a.asn_nr)
FROM `noondwh.scinbound_inbound.asn` a
  JOIN `noondwh.scinbound_inbound.warehouse` w USING (id_warehouse)
  LEFT JOIN `noondwh.scinbound_partner_asn.partner_asn` pa USING (asn_nr)
  LEFT JOIN `noondwh.retail_order.po_shipment` po ON (po.shipment_nr = a.source_nr)
  LEFT JOIN `noondwh.ops_inbound.asn` oi USING (asn_nr)
WHERE TRUE
  AND REGEXP_CONTAINS(w.partner_code, r'^[A-Z]{3}(?:DS|NIM|ID)\d{2,3}$')
    AND DATE(a.created_at) > DATE_SUB(CURRENT_DATE(), INTERVAL 1 YEAR)
GROUP BY source_system, a.source_type
ORDER BY source_system, source_type;
# ASNs
SELECT
  CASE
    WHEN REGEXP_CONTAINS(w.partner_code, r'^[A-Z]{3}NIM\d{2,3}$') THEN 'NIM'
    WHEN REGEXP_CONTAINS(w.partner_code, r'^[A-Z]{3}ID\d{2,3}$') THEN 'ID'
    WHEN REGEXP_CONTAINS(w.partner_code, r'^[A-Z]{3}DS\d{2,3}$') THEN 'DS'
  END AS wh_type,
  w.partner_code,
  a.asn_nr,
  a.source_type AS asn_type,
  a.id_partner_source AS id_partner,
  CASE a.source_type
    WHEN 'FBN' THEN p.legal_name
    WHEN 'ROSHIP' THEN r.vendor_name
    WHEN 'POSHIP' THEN v.name
  END AS seller_vendor_name,
  CASE a.source_type
    WHEN 'ROSHIP' THEN r.vendor_code
    WHEN 'POSHIP' THEN v.vendor_code
  END AS vendor_code,
  a.qty_expected, 
  a.box_qty_expected,
  t.code AS gatin_type,
  a.schedule_date,
  a.schedule_slot,
  --schedule_status,
  --inbound_status,
FROM `noondwh.scinbound_inbound.asn` a
  JOIN `noondwh.scinbound_inbound.warehouse` w USING (id_warehouse)
  JOIN `noondwh.scinbound_inbound.asn_gate_in_type` t USING (id_asn_gate_in_type)
  LEFT JOIN `noondwh.partner.partner` p ON (p.id_partner = a.id_partner_source)
  LEFT JOIN `noondwh.instant_instant_replenishment.ro_asn` ra USING (asn_nr)
  LEFT JOIN `noondwh.instant_instant_replenishment.ro` r USING (id_ro)
  LEFT JOIN `noondwh.retail_order.po_shipment` pos ON (pos.shipment_nr = a.source_nr)
  LEFT JOIN `noondwh.retail_order.po` po USING (id_po)
  LEFT JOIN `noondwh.retail_order.counterparty` cp USING (id_counterparty)
  LEFT JOIN `noondwh.retail_order.vendor` v ON (cp.legacy_type = 'vendor' AND v.vendor_code = cp.legacy_code)
WHERE TRUE
  AND DATE(a.created_at) > DATE_SUB(CURRENT_DATE(), INTERVAL 1 MONTH)
  AND REGEXP_CONTAINS(w.partner_code, r'^[A-Z]{3}(?:DS|ID|NIM)\d{2,3}$')
  -- AND a.box_qty_expected > 1
  -- AND a.is_block_unexpected_sku != 1
  -- AND t.code != 'combined_gatein'
  -- AND a.source_type = 'POSHIP'
-- ORDER BY RAND();
# ASN Details
SELECT
  l.group_key,
  l.qty,
  l.psku_code,
  ps.nsku_child,
  ps.zsku_child,
  pb.partner_barcode,
  pb.pbarcode_code,
  pb.pbarcode_canonical,
  l.item_type,
  pe.brand,
  pe.title,
  pe.title_suffix,
  pe.base_title,
  pft.product_fulltype_code,
  pt.code product_type_code,
  pst.code product_subtype_code,
  f.code family_code,
  if(iet.id_ignore_expiry_tracking IS NOT NULL, 0, 1) AS is_expirable,
  sl.shelf_life,
  inm.country_code,
  inm.min_inbound_shelf_days,
  inm.min_inbound_shelf_perc,
  sc.storage_condition_code
FROM `noondwh.scinbound_inbound.asn` a
JOIN `noondwh.scinbound_inbound.asn_line` l USING (id_asn)
JOIN `noondwh.psku.psku` ps USING (psku_code)
JOIN `noondwh.psku.pbarcode` pb ON (pb.psku_code = ps.psku_code AND pb.is_active = 1)
JOIN `noondwh.instant_spanner.product` p ON (p.sku = ps.zsku_child)
JOIN `noondwh.instant_spanner.product_en` pe USING (sku)
JOIN `noondwh.wecat_md.product_fulltype` pft ON (pft.id_product_fulltype = p.id_product_fulltype)
JOIN `noondwh.wecat_md.product_type` pt USING (id_product_type)
JOIN `noondwh.wecat_md.product_subtype` pst USING (id_product_subtype)
JOIN `noondwh.wecat_md.family` f USING (id_family)
LEFT JOIN `noondwh.scgoms_product.ignore_expiry_tracking` iet ON (iet.family_code = f.code AND iet.product_type_code = pt.code AND iet.is_active = 1)
LEFT JOIN `noondwh.scgoms_product.shelf_life` sl ON (sl.gtin = pb.pbarcode_canonical AND sl.is_active = 1)
LEFT JOIN `noondwh.scgoms_product.inbound_norms_minutes` inm ON (inm.gtin = pb.pbarcode_canonical AND inm.is_active = 1)
LEFT JOIN `noondwh.scgoms_product.storage_condition` sc ON (sc.product_fulltype_code = pft.product_fulltype_code AND sc.is_active = 1)
WHERE a.asn_nr = 'A01570433PN'
ORDER BY l.psku_code, pb.pbarcode_canonical
# ASNs by warehouse type and source type
SELECT
  CASE
    WHEN REGEXP_CONTAINS(w.partner_code, r'^[A-Z]{3}NIM\d{2,3}$') THEN 'NIM'
    WHEN REGEXP_CONTAINS(w.partner_code, r'^[A-Z]{3}ID\d{2,3}$') THEN 'ID'
    WHEN REGEXP_CONTAINS(w.partner_code, r'^[A-Z]{3}DS\d{2,3}$') THEN 'DS'
  END AS wh_type,
  a.source_type,
  COUNT(DISTINCT a.asn_nr) asn_count
FROM `noondwh.scinbound_inbound.asn` a
JOIN `noondwh.scinbound_inbound.warehouse` w USING (id_warehouse)
WHERE TRUE
AND DATE(a.created_at) > DATE_SUB(CURRENT_DATE(), INTERVAL 1 WEEK)
AND REGEXP_CONTAINS(w.partner_code, r'^[A-Z]{3}(?:DS|ID|NIM)\d{2,3}$')
GROUP BY wh_type, a.source_type
ORDER BY wh_type, asn_count DESC;
# ASN Decline Reasons
SELECT
  r.name_en AS reason,
  COUNT(DISTINCT a.asn_nr) asn_count
FROM `noondwh.scinbound_inbound.asn` a
JOIN `noondwh.scinbound_inbound.warehouse` w USING (id_warehouse)
JOIN `noondwh.scinbound_inbound.reason` r ON (a.id_reason_declined = r.id_reason)
WHERE TRUE
AND DATE(a.created_at) > DATE_SUB(CURRENT_DATE(), INTERVAL 1 YEAR)
AND REGEXP_CONTAINS(w.partner_code, r'^[A-Z]{3}(?:DS|ID|NIM)\d{2,3}$')
GROUP by reason
ORDER BY asn_count DESC;
# ASN Expected Qtys
SELECT
  ANY_VALUE(a.schedule_date) date_scheduled,
  ANY_VALUE(w.partner_code) wh_code,
  a.asn_nr,
  ANY_VALUE(a.qty_expected) asn_qty,
  SUM(al.qty) line_qty,
FROM `noondwh.scinbound_inbound.asn` a
  JOIN `noondwh.scinbound_inbound.warehouse` w USING (id_warehouse)
  JOIN `noondwh.scinbound_inbound.asn_line` al USING (id_asn)
WHERE TRUE
  AND REGEXP_CONTAINS(w.partner_code, r'^[A-Z]{3}(?:DS)\d{2,3}$')
  AND DATE(a.schedule_date) > DATE_SUB(CURRENT_DATE(), INTERVAL 6 MONTH)
GROUP BY a.asn_nr
HAVING TRUE
ORDER BY asn_qty DESC
# ASN Boxes
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment