Files
gzth/yuthon_stock/models/inherit_stock_picking.py
T
2025-12-13 17:30:49 +08:00

68 lines
2.5 KiB
Python

# -*- coding: utf-8 -*-
from odoo import api, fields, models
import json
class StockPicking(models.Model):
_inherit = 'stock.picking'
document_ids = fields.Many2many('ir.attachment', string="附件")
employee_id = fields.Many2one('hr.employee', string="验收人")
department_id = fields.Many2one('hr.department', string="部门")
certifier_id = fields.Many2one('res.users', string="证明人")
user_id = fields.Many2one('res.users', string="采购人员", compute="_compute_origin")
json_display = fields.Char(
string="物品详情",
compute='_compute_json_display',
store=True
)
@api.onchange('employee_id')
def _onchange_employee_id(self):
if self.employee_id:
self.department_id = self.employee_id.department_id.id
else:
self.department_id = False
@api.depends(
'move_ids_without_package.product_id',
'move_ids_without_package.product_uom_qty',
'move_ids_without_package.product_uom',
)
def _compute_json_display(self):
for record in self:
json_data = {
"template": "json_widget_stock.table_stock",
"title": f"{record.name}的明细数据",
"lines": [
{
'sequence': idx + 1,
'barcode': line.product_id.barcode or '',
'product_id': line.product_id.name or '',
'product_qty': line.product_uom_qty or '',
'price_unit': line.product_uom.name or '',
'standard_price' : line.product_id.standard_price or '',
}
for idx, line in enumerate(record.move_ids_without_package)
]
}
record.json_display = json.dumps(json_data, ensure_ascii=False)
@api.depends('origin')
def _compute_origin(self):
for record in self:
purchase = self.env['purchase.order'].search([('name', '=', record.origin)], limit=1)
if purchase:
record.user_id = purchase.user_id.id
else:
record.user_id = False
def button_validate(self):
self.employee_id = self.env.user.employee_ids.id
return super(StockPicking, self).button_validate()
def action_refresh_json_display(self):
"""手动刷新json_display字段"""
for record in self:
record._compute_json_display()
return True