sanmar_sdk.promostandards.order_status

SanMar’s PromoStandards Order Status service, version 2.0.0.

Reports where orders stand, line by line, with any holds. SanMar asks that it be called no more than three times a day, starting two hours after an order is placed, and that an order not be checked again once it is Status.COMPLETE or Status.CANCELED. SanMar does not implement getIssue or the transactionId query.

Attributes

MAX_AGE

StatusValue

A Status, or the text SanMar sent if it is none of them.

Classes

Status

Where an order or line stands.

IssueDetail

Which issues to include in an order status.

ContactDetails

A contact's name and address.

Contact

Someone at SanMar to ask about an order, such as its account executive.

StatusLine

Where one line of a sales order stands.

Issue

A hold on an order, such as generalHold or backOrderHold.

SalesOrderStatus

Where one of SanMar's sales orders stands.

OrderStatus

Where one purchase order stands, sales order by sales order.

OrderStatusService

SanMar's PromoStandards Order Status service.

Module Contents

sanmar_sdk.promostandards.order_status.MAX_AGE[source]
class sanmar_sdk.promostandards.order_status.Status[source]

Bases: enum.StrEnum

Where an order or line stands.

RECEIVED = 'received'[source]

SanMar has the order, including when it is on hold or backordered.

CONFIRMED = 'confirmed'[source]
PREPRODUCTION = 'preproduction'[source]
IN_PRODUCTION = 'inProduction'[source]
IN_STORAGE = 'inStorage'[source]
PARTIALLY_SHIPPED = 'partiallyShipped'[source]
SHIPPED = 'shipped'[source]
COMPLETE = 'complete'[source]

Shipped in full and invoiced. SanMar reports nothing further.

CANCELED = 'canceled'[source]

SanMar reports nothing further.

type sanmar_sdk.promostandards.order_status.StatusValue = Annotated[Status | str, Field(union_mode='left_to_right'), BeforeValidator(_status)][source]

A Status, or the text SanMar sent if it is none of them.

class sanmar_sdk.promostandards.order_status.IssueDetail[source]

Bases: enum.StrEnum

Which issues to include in an order status.

NONE = 'noIssues'[source]
OPEN = 'openIssues'[source]

Issues that are open or pending.

ALL = 'allIssues'[source]
class sanmar_sdk.promostandards.order_status.ContactDetails(/, **data: Any)[source]

Bases: sanmar_sdk.base.Record

A contact’s name and address.

attention_to: str | None = None[source]
company_name: str | None = None[source]
address1: str | None = None[source]
address2: str | None = None[source]
address3: str | None = None[source]
city: str | None = None[source]
region: str | None = None[source]
postal_code: str | None = None[source]
country: str | None = None[source]
email: str | None = None[source]
phone: str | None = None[source]
comments: str | None = None[source]
class sanmar_sdk.promostandards.order_status.Contact(/, **data: Any)[source]

Bases: sanmar_sdk.base.Record

Someone at SanMar to ask about an order, such as its account executive.

contact_type: str = None[source]
details: ContactDetails = None[source]
account_name: str | None = None[source]
account_number: str | None = None[source]
class sanmar_sdk.promostandards.order_status.StatusLine(/, **data: Any)[source]

Bases: sanmar_sdk.base.Record

Where one line of a sales order stands.

product_id: str = None[source]

The style.

sales_order_line_number: str = None[source]
status: StatusValue[source]
part_id: str | None = None[source]

SanMar’s unique key for the style, color and size.

po_line_number: str | None = None[source]
quantity_ordered: decimal.Decimal = None[source]
quantity_shipped: decimal.Decimal = None[source]
issue_category: str | None = None[source]
class sanmar_sdk.promostandards.order_status.Issue(/, **data: Any)[source]

Bases: sanmar_sdk.base.Record

A hold on an order, such as generalHold or backOrderHold.

status: str = None[source]

Open, Pending or Closed.

category: str = None[source]
urgent_response_required: bool = None[source]
id: str | None = None[source]
name: str | None = None[source]
description: str | None = None[source]
response_required_by: datetime.datetime | None = None[source]
resolution_url: str | None = None[source]
product_id: str | None = None[source]
part_id: str | None = None[source]
class sanmar_sdk.promostandards.order_status.SalesOrderStatus(/, **data: Any)[source]

Bases: sanmar_sdk.base.Record

Where one of SanMar’s sales orders stands.

sales_order_number: str = None[source]
status: StatusValue[source]
valid_timestamp: datetime.datetime = None[source]

When SanMar last confirmed this status.

issue_category: str | None = None[source]

generalHold when the order is on hold, backOrderHold when it is backordered.

expected_ship_date: datetime.date | None = None[source]
expected_delivery_date: datetime.date | None = None[source]
additional_explanation: str | None = None[source]
contacts: list[Contact] = None[source]
lines: list[StatusLine] = None[source]

The lines, when they were asked for.

issues: list[Issue] = None[source]
class sanmar_sdk.promostandards.order_status.OrderStatus(/, **data: Any)[source]

Bases: sanmar_sdk.base.Record

Where one purchase order stands, sales order by sales order.

po_number: str = None[source]
sales_orders: list[SalesOrderStatus] = None[source]
audit_url: str | None = None[source]
property finished: bool[source]

Whether every sales order is complete or canceled, so SanMar will report nothing more.

class sanmar_sdk.promostandards.order_status.OrderStatusService(soap: SoapClient, credentials: Credentials)[source]

Bases: sanmar_sdk.promostandards._common.PromoStandardsService

SanMar’s PromoStandards Order Status service.

endpoint[source]
version = '2.0.0'[source]

The PromoStandards version SanMar implements, sent as wsVersion.

by_purchase_order(po_number: str, *, issues: IssueDetail = IssueDetail.OPEN, lines: bool = True) → list[OrderStatus][source]

Report where a purchase order stands.

issues picks which holds to include, and lines whether 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 since has 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.

service_methods() → list[str][source]

List the Order Status operations SanMar implements.