Orders

Orders reference.

Status

class salesman.orders.status.BaseOrderStatus[source]

Base order status enum, actuall choices must extend this class.

classmethod BaseOrderStatus.get_payable() → list[source]

Returns list of statuses from which an order is eligible for payment.

classmethod BaseOrderStatus.get_transitions() → list[source]

Returns a dict of statuses with their transitions. If not specified for status, any transition is valid.

classmethod BaseOrderStatus.validate_transition(status: str, order: salesman.orders.models.Order) → None[source]

Validate a given status transition for the order. By default check status is defined in transitions.

Parameters
  • status (str) – New status

  • order (Order) – Order instance

Raises

ValidationError – If transition not valid

class salesman.orders.status.OrderStatus[source]

Default order choices enum. Can be overriden by providing a dotted path to a class in SALESMAN_ORDER_STATUS setting. Required choices are NEW, CREATED, COMPLETED and REFUNDED.

Utils

salesman.orders.utils.generate_ref(request: django.http.request.HttpRequest) → str[source]

Default order reference generator function. Can be overriden by providing a dotted path to a function in SALESMAN_ORDER_REFERENCE_GENERATOR setting.

Default format is {year}-{5-digit-increment} (eg. 2020-00001).

Parameters

request (HttpRequest) – Django request

Returns

New order reference

Return type

str

Signals

property signals.status_changed

Base class for all signals

Internal attributes:

receivers

{ receiverkey (id) : weakref(receiver) }

Models

class salesman.orders.models.OrderManager[source]
create_from_request(request: django.http.request.HttpRequest, **kwargs) → salesman.orders.models.Order[source]

Create new order with reference. Items are still in basket and should be added using order.populate_from_basket(basket, request) method.

Returns

Order instance

Return type

Order

create_from_basket(basket: salesman.basket.models.Basket, request: django.http.request.HttpRequest, **kwargs) → salesman.orders.models.Order[source]

Create and populate new order from basket.

Returns

Order instance

Return type

Order

class salesman.orders.models.Order(id, user, ref, status, token, email, shipping_address, billing_address, subtotal, total, _extra, date_created, date_updated)[source]
pay(amount: decimal.Decimal, transaction_id: str, payment_method: str = '') → salesman.orders.models.OrderPayment[source]

Create a new payment for order.

Parameters
  • amount (Decimal) – Amount to add

  • transaction_id (str) – ID of transaction

  • payment_method (str, optional) – Payment method identifier. Defaults to ‘’.

Returns

New order payment instance

Return type

OrderPayment

populate_from_basket(basket: salesman.basket.models.Basket, request: django.http.request.HttpRequest, **kwargs) → None[source]

Populate order with items from basket.

Parameters
  • basket (Basket) – Basket instance

  • request (HttpRequest) – Django request

property status_display

Returns display label for current status.

property statuses

Shorthand on order instance to get statuses enum.

amount_paid

Returns amount already paid for this order.

property amount_outstanding

Returns amount still needed for order to be paid.

property is_paid

Returns if order is paid in full.

classmethod get_statuses() → Type[django.db.models.enums.TextChoices][source]

Return order status enum from settings. Defaults to salesman.orders.status.OrderStatus.

class salesman.orders.models.OrderItem(id, order, product_type, product_content_type, product_id, product_data, unit_price, subtotal, total, quantity, _extra)[source]
property name

Returns product name from stored data.

property code

Returns product name from stored data.

class salesman.orders.models.OrderPayment(id, order, amount, transaction_id, payment_method, date_created)[source]
get_payment_method()[source]

Returns payment method instance.

property payment_method_display

Returns display label for payment method.

class salesman.orders.models.OrderNote(id, order, message, public, date_created)[source]

Serializers

class salesman.orders.serializers.OrderItemSerializer(instance=None, data=<class 'rest_framework.fields.empty'>, **kwargs)[source]

Serializer for order item.

class salesman.orders.serializers.OrderPaymentSerializer(instance=None, data=<class 'rest_framework.fields.empty'>, **kwargs)[source]

Serializer for order payment.

class salesman.orders.serializers.OrderNoteSerializer(instance=None, data=<class 'rest_framework.fields.empty'>, **kwargs)[source]

Serializer for order note.

class salesman.orders.serializers.OrderSerializer(instance=None, data=<class 'rest_framework.fields.empty'>, **kwargs)[source]

Serializer for order.

class salesman.orders.serializers.StatusTransitionSerializer(instance=None, data=<class 'rest_framework.fields.empty'>, **kwargs)[source]

Serializer to display order status with error.

class salesman.orders.serializers.OrderStatusSerializer(instance=None, data=<class 'rest_framework.fields.empty'>, **kwargs)[source]

Serializer used to change order status.

class salesman.orders.serializers.OrderPaySerializer(instance=None, data=<class 'rest_framework.fields.empty'>, **kwargs)[source]

Serializer used to pay for existing order via payment method.

class salesman.orders.serializers.OrderRefundSerializer(instance=None, data=<class 'rest_framework.fields.empty'>, **kwargs)[source]

Serializer used to issue an order refund.