Как добавить функцию «Возврат товара» после функциональности «Доставка товара» в Django Oscar - PullRequest
0 голосов
/ 20 июня 2019

Я хочу добавить «Возврат товара» после функциональности «Доставка товара» в Django Oscar. в settings.py я добавил код ниже.

OSCAR_ORDER_STATUS_PIPELINE = {
'Pending': ('Processing', 'Cancelled',),
'Processing': ('Shipped', 'Cancelled',),
'Shipped': ('Delivered', 'Return', 'Returned', 'Cancelled',),
'Returned': ('Return', 'Returned',),
'Delivered': (),
'Cancelled': (),
}

OSCAR_ORDER_STATUS_CASCADE = {
  'Processing': 'In progress',
  'Shipped': 'Shipped',
  'Delivered': 'Delivered',
  'Returned': 'Returned',
 'Cancelled': 'Cancelled'
}

Я написал функцию Ajax для изменения статуса после того, как ордер "Доставлено" на "Возврат". ниже функция.

@csrf_exempt
def return_order(request):
# Return Order after Delivery
  if request.is_ajax():
    data = request.body.decode('utf-8')
    try:
        order = Order.objects.get(id=int(data))
        EventHandler().handle_order_status_change(order=order, new_status='Return')
        return HttpResponse(json.dumps({'status': 'True', 'msg': 'OK'}))
    except Exception as e:
        print(e)
        return HttpResponse(json.dumps({'status': 'False', 'msg': 'Error'}))

Я получаю сообщение об ошибке примерно так 'Return' is not a valid status for order 100213 (current status: 'Delivered')

1 Ответ

1 голос
/ 20 июня 2019

Цель OSCAR_ORDER_STATUS_PIPELINE - определить набор действительных следующих статусов для заказа.Каждый ключ в этом словаре сопоставляется со списком статусов, на которые заказ может быть изменен с этого статуса.

В вашем случае у вас есть: 'Delivered': (), - это означает, что нет действительного статуса, что заказможет быть изменен на после доставки.Доставлено является окончательным статусом, как и Отменено.

Если вы хотите разрешить изменение с Delivered на Return, вам нужно изменить эту строку на:

'Delivered': ('Return',),
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...