Отправка POS-заказов на сервер

В этой статье описывается процесс отправки POS-заказов на сервер odoo и демонстрируется возможное использование его расширения.

Общий процесс выглядит следующим образом:

Сторона клиента:

  • `` export_as_JSON``: конвертирует * данные заказа * для отправки на сервер
  • затем * заказ * сохраняется в кеш браузера
  • затем POS пытается отправить данные на сервер

Бэкэнд сторона:

Итак, чтобы передать дополнительную информацию и обработать ее на сервере, нам нужно:

  • расширить `` export_as_JSON`` на стороне клиента
  • расширить `` _process_order`` на стороне сервера

Давайте проверим это на примере:

Модуль `` Сохранение удаленных продуктов POS-заказа``

Модуль позволяет добавить причину отмены заказа или строки заказа в POS.

Для этого мы:

export_as_JSON: function() {
  var data = _super_order.export_as_JSON.apply(this, arguments);
  /* canceled_lines is used only on the client side
  to cache those data in order to prevent misbehavior
  in case the page was refreshed
  */
  data.canceled_lines = this.canceled_lines || [];
  // updata data to be sent to the server
  data.reason = this.reason;
  data.is_cancelled = this.is_cancelled;
  return data;
},
@api.model
def _process_order(self, pos_order):
    order = super(PosOrder, self)._process_order(pos_order)
    if 'is_cancelled' in pos_order and pos_order['is_cancelled'] is True:
        if pos_order['reason']:
             order.cancellation_reason = pos_order['reason'].encode('utf-8')
        order.is_cancelled = True
    return order