Как загрузить qty_avaiable в Pos odoo

введите здесь описание изображенияЯ хочу загрузить только то количество товара, которое выходит только из склада pos. Когда я использую qty_available, загружается все количество товара. Как мне это сделать?

var ks_models = require('point_of_sale.models');
    var ks_screens = require('point_of_sale.screens');
    var ks_utils = require('ks_pos_low_stock_alert.utils');

    ks_models.load_fields('product.product', ['type', 'qty_available']);

Как заменить мой код только на qty_available для определенного местоположения. Можем ли мы использовать функцию self.env['product.product] в файле js?


person Neural    schedule 16.09.2020    source источник


Ответы (1)


Я бы предложил вместо загрузки поля product.product модели qty_available загрузить модель stock.quant с полем inventory_quantity. Имейте в виду, что в зависимости от конфигурации продукта Lot serial tracking, owner и т. д. для одного и того же продукта может быть несколько stock.quant. Общее количество будет суммой значений этих строк inventory_quantity. Вам нужно будет использовать this.pos.config.location_id в качестве домена, чтобы фильтровать только количество на складе POS. В функции load вы можете сопоставить эту информацию с загруженными данными модели product.product.

// models: [{
//  model: [string] the name of the openerp model to load.
//  label: [string] The label displayed during load.
//  fields: [[string]|function] the list of fields to be loaded.
//          Empty Array / Null loads all fields.
//  order:  [[string]|function] the models will be ordered by
//          the provided fields
//  domain: [domain|function] the domain that determines what
//          models need to be loaded. Null loads everything
//  ids:    [[id]|function] the id list of the models that must
//          be loaded. Overrides domain.
//  context: [Dict|function] the openerp context for the model read
//  condition: [function] do not load the models if it evaluates to
//             false.
//  loaded: [function(self,model)] this function is called once the
//          models have been loaded, with the data as second argument
//          if the function returns a promise, the next model will
//          wait until it resolves before loading.
// }]

Это документация по функции load_models. domain должны быть отфильтрованы по this.pos.config.location_id, который является выбранным складом для POS, loaded получает результат data, поэтому stock.quant записи для этого склада, вы можете просмотреть эти записи и сохранить available_qty с помощью this.db.product_by_id[record.product_id]. available_qty=record.inventory_quantity.

person arryph    schedule 16.09.2020
comment
Я понимаю, что вы говорите. Но я не знаю, как сопоставить product.product. Можете ли вы написать пример кода? - person Neural; 17.09.2020
comment
Под сопоставлением я имел в виду, что в stock.quant информации о модели у вас будет product_id, вы можете сопоставить это значение с product.product информацией о модели. - person arryph; 17.09.2020
comment
Да. Я знаю, что в stock.quant есть product_id, но в файле js я не знаю, как написать код для сопоставления. @arryph - person Neural; 17.09.2020
comment
хорошо, вы должны поделиться тем, что вы сделали до сих пор, и с какой проблемой вы столкнулись. Или, если вы не знакомы с необходимым знанием JavaScript, возможно, вы можете использовать этот бесплатный аддон, если он соответствует вашим требованиям. apps.odoo.com/apps/modules/13.0/bi_pos_stock - person arryph; 17.09.2020
comment
comment
Я использовал этот модуль. Но этот модуль показывает все количество. Я хочу загрузить только одно количество местоположений. Спасибо. - person Neural; 18.09.2020
comment
Я использовал этот модуль apps.odoo.com/apps/modules/12.0/ks_pos_low_stock_alert. Но этот модуль также загружает все количество. Можете ли вы помочь мне загрузить только количество местоположения. Спасибо - person Neural; 18.09.2020
comment
изменил этот бесплатный модуль, чтобы получить количество из местоположения, в конфигурации pos выберите Stock Location и загрузите POS, он должен работать. - person arryph; 19.09.2020
comment
В вашем коде есть какая-то ошибка. Когда я нажимаю на оплату и подтверждаю, возникает ошибка. Не могу выполнить проверку. @arryph - person Neural; 20.09.2020
comment
Это самый высокий уровень, который вы можете предоставить? Есть ошибка? Хороший. Во всяком случае, я проверил проверку заказов и сеанс закрытия, размещение записей. Нет ошибок. Никакой код, связанный с заказом/оплатой, не менялся, так что помочь не могу. Спасибо. - person arryph; 20.09.2020
comment
Я действительно благодарю вас за вашу помощь. Я добавил фото ошибки. Пожалуйста, проверьте. - person Neural; 20.09.2020
comment
Когда я проверил это, он получил ошибку в файле js/ks_low_stock.js, а имя функции — ks_update_qty_on_product.@arryph.Спасибо. - person Neural; 20.09.2020
comment
Я тестировал с v13, и он работал, так что версия не должна быть проблемой. Я не сталкиваюсь с ошибкой, поэтому не могу отладить JS, но похоже, что проблема отсутствует product_id. - person arryph; 20.09.2020
comment
Вы можете произвести оплату в pos session?@arryph. Почему я не могу? Я ничего не менял в поз. - person Neural; 21.09.2020
comment
Но когда я меняю self.db.qty_by_product_id на self.db.product_by_id в цикле функции ks_update_qty_on_product, я не получаю ошибок. Но это правильно? Спасибо - person Neural; 21.09.2020
comment
Я все еще получаю ту же ошибку. Можете ли вы проверить строку 93 в файле ks_low_stock.js? Ошибка в этой строке. - person Neural; 21.09.2020
comment
.Он показал qty_avaible продукт, если продукт не выходит на складе. Если продукт выходит на складе, он показывает правильное количество на складе. Как я могу это исправить? Спасибо. - person Neural; 11.12.2020