sanmar_sdk.promostandards¶
SanMar’s PromoStandards web services.
Each is reached through sanmar.promostandards, such as
sanmar.promostandards.inventory. They take the SanMar.com login but not the customer
number, and identify a style as a product and one style, color and size as a part,
whose id is SanMar’s unique key.
Submodules¶
- sanmar_sdk.promostandards.client
- sanmar_sdk.promostandards.inventory
- sanmar_sdk.promostandards.invoices
- sanmar_sdk.promostandards.media_content
- sanmar_sdk.promostandards.order_status
- sanmar_sdk.promostandards.pricing
- sanmar_sdk.promostandards.product_data
- sanmar_sdk.promostandards.purchase_orders
- sanmar_sdk.promostandards.shipment_notification
Classes¶
SanMar's PromoStandards services, which take only the SanMar.com login. |
|
Stock a warehouse expects to receive. |
|
SanMar's PromoStandards Inventory service. |
|
One part's stock at one warehouse. |
|
One part's stock across SanMar's warehouses. |
|
The account and address an invoice is billed or sold to. |
|
An invoice or credit memo. |
|
One line of an invoice. |
|
SanMar's PromoStandards Invoice service. |
|
A tax charged on an invoice. |
|
The image classes SanMar's guide lists. PromoStandards defines more. |
|
A classification of a piece of media, such as |
|
SanMar's PromoStandards Media Content service. |
|
One image or document. |
|
The kinds of media SanMar serves. |
|
Someone at SanMar to ask about an order, such as its account executive. |
|
A contact's name and address. |
|
A hold on an order, such as |
|
Which issues to include in an order status. |
|
Where one purchase order stands, sales order by sales order. |
|
SanMar's PromoStandards Order Status service. |
|
Where one of SanMar's sales orders stands. |
|
Where an order or line stands. |
|
Where one line of a sales order stands. |
|
The prices of one part. |
|
The price per unit from a minimum quantity up. |
|
Which price to ask for. |
|
SanMar's PromoStandards Pricing and Configuration service. |
|
A part's size. |
|
A category a product is listed under. |
|
One of a part's colors. |
|
A part's measurements. |
|
A place SanMar ships from: one of its warehouses. |
|
A selling point from a product's description. |
|
A way a part is packed: how many to a box, and how big and heavy the box is. |
|
A product, or one part of it, in a list of changed, closed-out or sellable items. |
|
A named set of price breaks, such as |
|
A style, and every color and size of it. |
|
SanMar's PromoStandards Product Data service. |
|
One color and size of a style. |
|
One price break. |
|
Another product SanMar relates to this one. |
|
A measurement of a part, such as its chest or inseam. |
|
A purchase order for SanMar's PromoStandards purchase order service. |
|
One part on a PromoStandards purchase order. |
|
SanMar's PromoStandards Purchase Order service. |
|
What shipped against one of SanMar's sales orders. |
|
Where a shipment left from or went to. |
|
Everything that shipped from one warehouse to one address. |
|
What shipped against one purchase order. |
|
SanMar's PromoStandards Order Shipment Notification service. |
|
One box, and its tracking number. |
|
What went into a package. |
Package Contents¶
- class sanmar_sdk.promostandards.PromoStandards(soap: sanmar_sdk._soap.SoapClient, credentials: sanmar_sdk._soap.Credentials)[source]¶
SanMar’s PromoStandards services, which take only the SanMar.com login.
- class sanmar_sdk.promostandards.FutureStock(/, **data: Any)[source]¶
Bases:
sanmar_sdk.base.RecordStock a warehouse expects to receive.
- available_on: datetime.datetime = None[source]¶
- class sanmar_sdk.promostandards.InventoryService(soap: SoapClient, credentials: Credentials)[source]¶
Bases:
sanmar_sdk.promostandards._common.PromoStandardsServiceSanMar’s PromoStandards Inventory service.
- get(product_id: str, *, part_ids: collections.abc.Sequence[str] = (), sizes: collections.abc.Sequence[str] = (), catalog_colors: collections.abc.Sequence[str] = ()) list[PartStock][source]¶
Report stock for a style, or for a set of parts.
With no filter, every part of the style is reported.
sizesandcatalog_colorsnarrow the style down.part_idsasks for up to 200 parts from any styles instead; SanMar still needs a valid style inproduct_id, but does not require the parts to belong to it.- Raises:
TypeError – If a filter is a single string rather than a list of them.
ValueError – If
part_idsis combined withsizesorcatalog_colors, or lists more than 200 parts.
- class sanmar_sdk.promostandards.LocationStock(/, **data: Any)[source]¶
Bases:
sanmar_sdk.base.RecordOne part’s stock at one warehouse.
- warehouse: sanmar_sdk.common.WarehouseNumber = None[source]¶
- future: list[FutureStock] = None[source]¶
- class sanmar_sdk.promostandards.PartStock(/, **data: Any)[source]¶
Bases:
sanmar_sdk.base.RecordOne part’s stock across SanMar’s warehouses.
- catalog_color: str | None = None[source]¶
The catalog (mainframe) color, which web services and orders expect.
- locations: list[LocationStock] = None[source]¶
- last_modified: datetime.datetime | None = None[source]¶
- class sanmar_sdk.promostandards.AccountInfo(/, **data: Any)[source]¶
Bases:
sanmar_sdk.base.RecordThe account and address an invoice is billed or sold to.
- class sanmar_sdk.promostandards.Invoice(/, **data: Any)[source]¶
Bases:
sanmar_sdk.base.RecordAn invoice or credit memo.
- invoice_date: datetime.date = None[source]¶
- payment_due_date: datetime.date = None[source]¶
- sales_amount: decimal.Decimal = None[source]¶
- shipping_amount: decimal.Decimal = None[source]¶
- handling_amount: decimal.Decimal = None[source]¶
- tax_amount: decimal.Decimal = None[source]¶
- invoice_amount: decimal.Decimal = None[source]¶
- advance_payment_amount: decimal.Decimal = None[source]¶
- amount_due: decimal.Decimal = None[source]¶
- bill_to: AccountInfo | None = None[source]¶
- sold_to: AccountInfo | None = None[source]¶
- lines: list[InvoiceLine] = None[source]¶
- class sanmar_sdk.promostandards.InvoiceLine(/, **data: Any)[source]¶
Bases:
sanmar_sdk.base.RecordOne line of an invoice.
- invoice_quantity: decimal.Decimal = None[source]¶
- unit_price: decimal.Decimal = None[source]¶
- extended_price: decimal.Decimal = None[source]¶
- line_number: decimal.Decimal | None = None[source]¶
- po_line_number: decimal.Decimal | None = None[source]¶
- ordered_quantity: decimal.Decimal | None = None[source]¶
- back_ordered_quantity: decimal.Decimal | None = None[source]¶
- discount_amount: decimal.Decimal | None = None[source]¶
- class sanmar_sdk.promostandards.InvoiceService(soap: SoapClient, credentials: Credentials)[source]¶
Bases:
sanmar_sdk.promostandards._common.PromoStandardsServiceSanMar’s PromoStandards Invoice service.
- get(invoice_number: str) Invoice[source]¶
Find one invoice by its number.
- Raises:
NotFoundError – If SanMar has no such invoice.
- by_date(invoice_date: datetime.date) list[Invoice][source]¶
Find every invoice dated a given day.
- available_since(since: datetime.datetime) list[Invoice][source]¶
Find every invoice issued after a point in time.
- class sanmar_sdk.promostandards.Tax(/, **data: Any)[source]¶
Bases:
sanmar_sdk.base.RecordA tax charged on an invoice.
- amount: decimal.Decimal = None[source]¶
- class sanmar_sdk.promostandards.ClassType[source]¶
Bases:
enum.IntEnumThe image classes SanMar’s guide lists. PromoStandards defines more.
- class sanmar_sdk.promostandards.MediaClass(/, **data: Any)[source]¶
Bases:
sanmar_sdk.base.RecordA classification of a piece of media, such as
FrontorSwatch.
- class sanmar_sdk.promostandards.MediaContentService(soap: SoapClient, credentials: Credentials)[source]¶
Bases:
sanmar_sdk.promostandards._common.PromoStandardsServiceSanMar’s PromoStandards Media Content service.
- class sanmar_sdk.promostandards.MediaItem(/, **data: Any)[source]¶
Bases:
sanmar_sdk.base.RecordOne image or document.
- classes: list[MediaClass] = None[source]¶
- file_size: decimal.Decimal | None = None[source]¶
- width: decimal.Decimal | None = None[source]¶
- height: decimal.Decimal | None = None[source]¶
- changed: datetime.datetime | None = None[source]¶
- class sanmar_sdk.promostandards.MediaType[source]¶
Bases:
enum.StrEnumThe kinds of media SanMar serves.
- class sanmar_sdk.promostandards.Contact(/, **data: Any)[source]¶
Bases:
sanmar_sdk.base.RecordSomeone at SanMar to ask about an order, such as its account executive.
- details: ContactDetails = None[source]¶
- class sanmar_sdk.promostandards.ContactDetails(/, **data: Any)[source]¶
Bases:
sanmar_sdk.base.RecordA contact’s name and address.
- class sanmar_sdk.promostandards.Issue(/, **data: Any)[source]¶
Bases:
sanmar_sdk.base.RecordA hold on an order, such as
generalHoldorbackOrderHold.- response_required_by: datetime.datetime | None = None[source]¶
- class sanmar_sdk.promostandards.IssueDetail[source]¶
Bases:
enum.StrEnumWhich issues to include in an order status.
- class sanmar_sdk.promostandards.OrderStatus(/, **data: Any)[source]¶
Bases:
sanmar_sdk.base.RecordWhere one purchase order stands, sales order by sales order.
- sales_orders: list[SalesOrderStatus] = None[source]¶
- class sanmar_sdk.promostandards.OrderStatusService(soap: SoapClient, credentials: Credentials)[source]¶
Bases:
sanmar_sdk.promostandards._common.PromoStandardsServiceSanMar’s PromoStandards Order Status service.
- by_purchase_order(po_number: str, *, issues: IssueDetail = IssueDetail.OPEN, lines: bool = True) list[OrderStatus][source]¶
Report where a purchase order stands.
issuespicks which holds to include, andlineswhether to include each line.
- by_sales_order(sales_order_number: str, *, issues: IssueDetail = IssueDetail.OPEN, lines: bool = True) list[OrderStatus][source]¶
Report where one of SanMar’s sales orders stands.
- updated_since(since: datetime.datetime, *, issues: IssueDetail = IssueDetail.OPEN, lines: bool = True) list[OrderStatus][source]¶
Report every order whose status changed after a point in time, at most 30 days ago.
SanMar suggests narrowing to seven days if the call times out.
- Raises:
ValueError – If
sincehas no time zone, or is more than 30 days ago.
- open_orders(*, issues: IssueDetail = IssueDetail.OPEN, lines: bool = True) list[OrderStatus][source]¶
Report every order that is not yet complete or canceled.
- open_issues(*, issues: IssueDetail = IssueDetail.OPEN, lines: bool = True) list[OrderStatus][source]¶
Report every open order with an open or pending issue.
- class sanmar_sdk.promostandards.SalesOrderStatus(/, **data: Any)[source]¶
Bases:
sanmar_sdk.base.RecordWhere one of SanMar’s sales orders stands.
- status: StatusValue[source]¶
- valid_timestamp: datetime.datetime = None[source]¶
When SanMar last confirmed this status.
- issue_category: str | None = None[source]¶
generalHoldwhen the order is on hold,backOrderHoldwhen it is backordered.
- expected_ship_date: datetime.date | None = None[source]¶
- expected_delivery_date: datetime.date | None = None[source]¶
- lines: list[StatusLine] = None[source]¶
The lines, when they were asked for.
- class sanmar_sdk.promostandards.Status[source]¶
Bases:
enum.StrEnumWhere an order or line stands.
- class sanmar_sdk.promostandards.StatusLine(/, **data: Any)[source]¶
Bases:
sanmar_sdk.base.RecordWhere one line of a sales order stands.
- status: StatusValue[source]¶
- quantity_ordered: decimal.Decimal = None[source]¶
- quantity_shipped: decimal.Decimal = None[source]¶
- class sanmar_sdk.promostandards.PartPrice(/, **data: Any)[source]¶
Bases:
sanmar_sdk.base.RecordThe prices of one part.
- prices: list[PriceBreak] = None[source]¶
- class sanmar_sdk.promostandards.PriceBreak(/, **data: Any)[source]¶
Bases:
sanmar_sdk.base.RecordThe price per unit from a minimum quantity up.
- price: decimal.Decimal[source]¶
- uom: str = None[source]¶
The unit the price is per,
EAfor each piece orCAfor each piece by the case.
- effective_date: datetime.datetime | None = None[source]¶
- expiry_date: datetime.datetime | None = None[source]¶
- class sanmar_sdk.promostandards.PriceType[source]¶
Bases:
enum.StrEnumWhich price to ask for.
- class sanmar_sdk.promostandards.PricingService(soap: SoapClient, credentials: Credentials)[source]¶
Bases:
sanmar_sdk.promostandards._common.PromoStandardsServiceSanMar’s PromoStandards Pricing and Configuration service.
- get(product_id: str, *, part_id: str | None = None, price_type: PriceType = PriceType.NET, warehouse: sanmar_sdk.common.Warehouse = Warehouse.SEATTLE) list[PartPrice][source]¶
Price every part of a style, or one part.
SanMar’s prices do not vary by warehouse, but the service requires one, so any warehouse will do.
- fob_points(product_id: str) list[sanmar_sdk.promostandards.product_data.FobPoint][source]¶
List SanMar’s warehouses. The list is the same for every product.
SanMar asks that this be called at most once a week.
- class sanmar_sdk.promostandards.ApparelSize(/, **data: Any)[source]¶
Bases:
sanmar_sdk.base.RecordA part’s size.
- label_size: str = None[source]¶
XSthrough6XL,OSFA, orCUSTOMwhencustom_sizeholds it.
- class sanmar_sdk.promostandards.Category(/, **data: Any)[source]¶
Bases:
sanmar_sdk.base.RecordA category a product is listed under.
- class sanmar_sdk.promostandards.Color(/, **data: Any)[source]¶
Bases:
sanmar_sdk.base.RecordOne of a part’s colors.
- class sanmar_sdk.promostandards.Dimension(/, **data: Any)[source]¶
Bases:
sanmar_sdk.base.RecordA part’s measurements.
- depth: decimal.Decimal[source]¶
- height: decimal.Decimal[source]¶
- width: decimal.Decimal[source]¶
- weight: decimal.Decimal[source]¶
- class sanmar_sdk.promostandards.FobPoint(/, **data: Any)[source]¶
Bases:
sanmar_sdk.base.RecordA place SanMar ships from: one of its warehouses.
- warehouse: sanmar_sdk.common.WarehouseNumber = None[source]¶
- class sanmar_sdk.promostandards.MarketingPoint(/, **data: Any)[source]¶
Bases:
sanmar_sdk.base.RecordA selling point from a product’s description.
- class sanmar_sdk.promostandards.Packaging(/, **data: Any)[source]¶
Bases:
sanmar_sdk.base.RecordA way a part is packed: how many to a box, and how big and heavy the box is.
- quantity: decimal.Decimal[source]¶
- depth: decimal.Decimal | None = None[source]¶
- height: decimal.Decimal | None = None[source]¶
- width: decimal.Decimal | None = None[source]¶
- weight: decimal.Decimal | None = None[source]¶
- class sanmar_sdk.promostandards.PartReference(/, **data: Any)[source]¶
Bases:
sanmar_sdk.base.RecordA product, or one part of it, in a list of changed, closed-out or sellable items.
- class sanmar_sdk.promostandards.PriceGroup(/, **data: Any)[source]¶
Bases:
sanmar_sdk.base.RecordA named set of price breaks, such as
MSRP.- prices: list[ProductPrice] = None[source]¶
- class sanmar_sdk.promostandards.Product(/, **data: Any)[source]¶
Bases:
sanmar_sdk.base.RecordA style, and every color and size of it.
- marketing_points: list[MarketingPoint] = None[source]¶
- price_groups: list[PriceGroup] = None[source]¶
- price_expires_date: datetime.datetime | None = None[source]¶
- parts: list[ProductPart] = None[source]¶
- last_change_date: datetime.datetime | None = None[source]¶
- creation_date: datetime.datetime | None = None[source]¶
- effective_date: datetime.datetime | None = None[source]¶
- end_date: datetime.datetime | None = None[source]¶
- class sanmar_sdk.promostandards.ProductDataService(soap: SoapClient, credentials: Credentials)[source]¶
Bases:
sanmar_sdk.promostandards._common.PromoStandardsServiceSanMar’s PromoStandards Product Data service.
- get(product_id: str, *, part_id: str | None = None, catalog_color: str | None = None) Product[source]¶
Describe a style, optionally narrowed to one part or one catalog color.
SanMar recommends asking for whole styles rather than one part at a time.
- closeouts() list[PartReference][source]¶
List every part SanMar has discontinued.
- modified_since(since: datetime.datetime) list[PartReference][source]¶
List every part that changed after a point in time.
- class sanmar_sdk.promostandards.ProductPart(/, **data: Any)[source]¶
Bases:
sanmar_sdk.base.RecordOne color and size of a style.
- apparel_size: ApparelSize | None = None[source]¶
- specifications: list[Specification] = None[source]¶
- shipping_packages: list[Packaging] = None[source]¶
How the part ships, as the case it comes in and how many pieces are in it.
- effective_date: datetime.datetime | None = None[source]¶
- end_date: datetime.datetime | None = None[source]¶
- class sanmar_sdk.promostandards.ProductPrice(/, **data: Any)[source]¶
Bases:
sanmar_sdk.base.RecordOne price break.
- price: decimal.Decimal[source]¶
- class sanmar_sdk.promostandards.RelatedProduct(/, **data: Any)[source]¶
Bases:
sanmar_sdk.base.RecordAnother product SanMar relates to this one.
- class sanmar_sdk.promostandards.Specification(/, **data: Any)[source]¶
Bases:
sanmar_sdk.base.RecordA measurement of a part, such as its chest or inseam.
- class sanmar_sdk.promostandards.PromoStandardsOrder(/, **data: Any)[source]¶
Bases:
sanmar_sdk.base.ModelA purchase order for SanMar’s PromoStandards purchase order service.
- po_number: sanmar_sdk.orders.PONumber[source]¶
- ship_to: sanmar_sdk.common.ShipTo[source]¶
- ship_method: sanmar_sdk.common.ShipMethod[source]¶
- lines: Annotated[collections.abc.Sequence[PromoStandardsOrderLine], Field(min_length=1), sanmar_sdk.base.FROZEN][source]¶
- order_date: datetime.datetime | None = None[source]¶
When the order was placed. Defaults to the time it is sent.
- ship_references: Annotated[collections.abc.Sequence[Annotated[str, Field(min_length=1, max_length=64), sanmar_sdk.base.ORDER_TEXT]], Field(max_length=2), sanmar_sdk.base.FROZEN] = ()[source]¶
Up to two references for the shipping process. Defaults to the PO number.
- merged_lines() list[PromoStandardsOrderLine][source]¶
Return the lines with duplicates combined, keeping the order each first appeared in.
SanMar checks inventory line by line, so two lines for the same part and warehouse can each pass on their own while their total is short.
- class sanmar_sdk.promostandards.PromoStandardsOrderLine(/, **data: Any)[source]¶
Bases:
sanmar_sdk.base.ModelOne part on a PromoStandards purchase order.
- part_id: Annotated[str, Field(min_length=1, max_length=64), sanmar_sdk.base.ORDER_TEXT][source]¶
SanMar’s unique key for the style, color and size (
UNIQUE_KEYin its files).
- warehouse: sanmar_sdk.common.Warehouse | None = None[source]¶
The warehouse to ship this line from.
Leave it unset unless SanMar has set your account up for warehouse selection; otherwise SanMar picks warehouses according to the shipping option on your account.
- class sanmar_sdk.promostandards.PurchaseOrderService(soap: SoapClient, credentials: Credentials)[source]¶
Bases:
sanmar_sdk.promostandards._common.PromoStandardsServiceSanMar’s PromoStandards Purchase Order service.
- send(order: PromoStandardsOrder) str[source]¶
Place an order. Returns SanMar’s transaction id, which starts with the PO number.
- class sanmar_sdk.promostandards.SalesOrderShipment(/, **data: Any)[source]¶
Bases:
sanmar_sdk.base.RecordWhat shipped against one of SanMar’s sales orders.
- locations: list[ShipmentLocation] = None[source]¶
- class sanmar_sdk.promostandards.ShipmentAddress(/, **data: Any)[source]¶
Bases:
sanmar_sdk.base.RecordWhere a shipment left from or went to.
- class sanmar_sdk.promostandards.ShipmentLocation(/, **data: Any)[source]¶
Bases:
sanmar_sdk.base.RecordEverything that shipped from one warehouse to one address.
- ship_from: ShipmentAddress = None[source]¶
- ship_to: ShipmentAddress = None[source]¶
- packages: list[ShipmentPackage] = None[source]¶
- class sanmar_sdk.promostandards.ShipmentNotification(/, **data: Any)[source]¶
Bases:
sanmar_sdk.base.RecordWhat shipped against one purchase order.
- sales_orders: list[SalesOrderShipment] = None[source]¶
- class sanmar_sdk.promostandards.ShipmentNotificationService(soap: SoapClient, credentials: Credentials)[source]¶
Bases:
sanmar_sdk.promostandards._common.PromoStandardsServiceSanMar’s PromoStandards Order Shipment Notification service.
- by_purchase_order(po_number: str) list[ShipmentNotification][source]¶
Report what has shipped against a purchase order.
- by_sales_order(sales_order_number: str) list[ShipmentNotification][source]¶
Report what has shipped against one of SanMar’s sales orders.
- since(since: datetime.datetime) list[ShipmentNotification][source]¶
Report everything shipped after a point in time, at most seven days ago.
- Raises:
ValueError – If
sincehas no time zone, or is more than seven days ago.
- class sanmar_sdk.promostandards.ShipmentPackage(/, **data: Any)[source]¶
Bases:
sanmar_sdk.base.RecordOne box, and its tracking number.
- shipment_date: datetime.datetime = None[source]¶
- length: decimal.Decimal | None = None[source]¶
- width: decimal.Decimal | None = None[source]¶
- height: decimal.Decimal | None = None[source]¶
- weight: decimal.Decimal | None = None[source]¶
- items: list[ShippedItem] = None[source]¶
- class sanmar_sdk.promostandards.ShippedItem(/, **data: Any)[source]¶
Bases:
sanmar_sdk.base.RecordWhat went into a package.
- quantity: decimal.Decimal | None = None[source]¶