Как получить доступное количество товара для отдельного запаса (Odoo11) - PullRequest
0 голосов
/ 27 марта 2019

Я использую odoo11 (python3) и для разработки собственного модуля.

Я хотел бы получить количество продукции (вручную или по прогнозу) для отдельного склада.

Просто я выбираю любой отдельный склад и показываю количество товара для этого склада. На самом деле моя цель - две вещи 1. общее количество доступного продукта 2. Количество продуктов в зависимости от местоположения Это мой код

class Threshold(models.Model):
    _name="threshold.threshold"
    main_location=fields.Many2many("stock.warehouse", string="Main Location")
    product=fields.Many2many("product.template", string="Product")
    category=fields.Many2one("product.category", string="Category")
    attribute=fields.Many2many("product.attribute", string="Attribute")
    threshold_value=fields.Integer(string="Threshold Value")
    transfer_quantity=fields.Integer(string="Transfer Quantity")
    status_button=fields.Selection([('0','Active'),('1','Dissmiss')], default='0', index=True, string="Status")
    threshold_selection=fields.Selection([('0','Product'),('1','Category'),], default= '0', index=True, string="Threshold Selection")

product_quantity=fields.Integer(compute="_product_based_on_warehouse", store=True)

@api.depends('main_location','product_quantity')
def _product_based_on_warehouse(self):
    count_products = 0 
self.env['product.template'].with_context(warehouse=self.main_location).search([], limit=1)
self.product_quantity=products print(f'Product Quantity: {self.product_quantity}')

1 Ответ

1 голос
/ 27 марта 2019

Вам нужно загрузить / просмотреть продукты со специальным значением контекста warehouse, чтобы получить все количественные значения для всех, одного или нескольких складов.

# load all products and use a warehouse id
products = self.env['product.product'].with_context(warehouse=1).search([])
# load one product and use a warehouse name
products = self.env['product.product'].with_context(warehouse="Main Warehouse").search([], limit=1)
# load product with ID 1 and use a list of warehouse IDs
products = self.env['product.product'].with_context(warehouse=[1,2]).browse([1])

Вы можете использовать 4 поля количества продуктов, чтобы получить необходимые значения количества. Существует также возможность использовать location в качестве значения контекста таким же образом, как с warehouse.

Если вы хотите знать, откуда это исходит, посмотрите методы _compute_quantities, _compute_quantities_dict и самый важный _get_domain_locations.

...