mirror of
https://github.com/guohuadeng/app-odoo.git
synced 2025-02-23 04:11:36 +02:00
54 lines
2.3 KiB
Python
54 lines
2.3 KiB
Python
# -*- coding: utf-8 -*-
|
||
|
||
from odoo import api, models, fields, _
|
||
from odoo.addons import decimal_precision as dp
|
||
from odoo.exceptions import UserError, ValidationError
|
||
|
||
class QuantPackage(models.Model):
|
||
_inherit = 'stock.quant.package'
|
||
# 待办统计,散件与包裹一起处理的数量
|
||
product_qty_total = fields.Float('To Do Total',
|
||
digits=dp.get_precision('Product Unit of Measure'), readonly=True, store=True) # 总待办数量
|
||
qty_done_total = fields.Float('Done Total', default=0.0, store=True,
|
||
compute="_compute_done_total",
|
||
digits=dp.get_precision('Product Unit of Measure')) # 总完成数量
|
||
weight_done_total = fields.Float('Weight Done Total(kg)', default=0, store=True,
|
||
digits=dp.get_precision('Stock Weight'),
|
||
compute="_compute_done_total", readonly=True) # 总完成重量
|
||
|
||
@api.depends('quant_ids.qty', 'children_ids')
|
||
def _compute_done_total(self):
|
||
for rec in self:
|
||
try:
|
||
rec.qty_done_total = sum(rec.quant_ids.mapped('qty'))
|
||
except:
|
||
rec.qty_done_total = 0
|
||
try:
|
||
# 不增加quant的计算字段,省资源
|
||
weight_done_total = 0
|
||
for q in rec.quant_ids:
|
||
weight_done_total += q.qty * q.product_id.weight
|
||
for c in rec.children_ids:
|
||
weight_done_total += c.weight_done_total
|
||
|
||
rec.weight_done_total = weight_done_total
|
||
except:
|
||
rec.weight_done_total = 0
|
||
|
||
def _compute_complete_name(self):
|
||
""" Forms complete name of location from parent location to child location. """
|
||
res = {}
|
||
for package in self:
|
||
current = package
|
||
name = current.name
|
||
while current.parent_id:
|
||
name = '%s / %s' % (current.parent_id.name, name)
|
||
current = current.parent_id
|
||
|
||
if package.qty_done_total>0:
|
||
name += '-[%spcs]' % (str(package.qty_done_total))
|
||
if package.weight_done_total>0:
|
||
name += '-[%skg]' % (str(package.weight_done_total))
|
||
|
||
res[package.id] = name
|
||
return res |