Inventory¶
SanMar reports stock per warehouse, and caps what it reports for each warehouse: at 3,000 pieces, according to the Web Services guide. How often you need stock decides where to get it:
Need |
Use |
|---|---|
The whole catalog, up to a few times a day |
|
A live check while taking an order |
|
One style, color and size at one warehouse |
|
SanMar asks that integrations not call its inventory services thousands of times a day.
PromoStandards Inventory¶
get() reports every part of a style, or
a filtered set of them:
for part in sanmar.promostandards.inventory.get("K500", sizes=["L", "XL"], catalog_colors=["Black"]):
print(part.part_id, part.quantity, [(stock.warehouse, stock.quantity) for stock in part.locations])
To check a whole cart in one call, pass up to 200 part ids. SanMar still needs a valid style in the first argument, but does not require the parts to belong to it:
cart = sanmar.promostandards.inventory.get("K500", part_ids=["208284", "118864", "591373"])
Part ids and size or color filters cannot be combined.
SanMar’s inventory service¶
get() reports a style, narrowed by catalog
color, size, or both, as one SkuStock per color and size:
[stock] = sanmar.inventory.get("K500", catalog_color="Black", size="L")
stock.total # across every warehouse
stock.warehouses # one WarehouseStock each
For one warehouse, get_quantity() returns just
the number:
from sanmar_sdk import Warehouse
sanmar.inventory.get_quantity("K500", "Black", "L", Warehouse.DALLAS)
The inventory file¶
sanmar_dip.txt has one row per style, color, size and warehouse, with the current
piece, case and sale prices alongside the quantity. SanMar recommends it over the
services for anything but a live check:
with SanMarFTP(123456, "ftp-password", host_key=KEY) as ftp, ftp.warehouse_inventory() as rows:
for row in rows:
if row.discontinued_code == "S" and row.quantity == 0:
continue
...
SanMar suggests skipping rows it has discontinued (discontinued_code S) that are
out of stock. Discontinued colors stay in the file, at 0, while any size of them still has
12 or more pieces, and returned stock can bring one back, so check again later rather than
dropping it for good.