提交 02028d58 authored 作者: 贺阳's avatar 贺阳

修改托盘理货

上级 2d04ffe8
......@@ -7,7 +7,7 @@ from odoo import models, fields, api, _
# 获取日志
_logger = logging.getLogger(__name__)
from odoo.exceptions import ValidationError
class CcPallet(models.Model):
# 模型名称
......@@ -104,12 +104,47 @@ class CcPallet(models.Model):
delivery_plate_number = fields.Char(string=_('Delivery Plate Number'))
# 当大包关联到托盘时,自动更新使用状态
@api.model
def update_usage_state(self):
def update_usage_state(self,success_package,usage_date):
"""更新托盘使用状态"""
for pallet in self:
if pallet.package_ids:
pallet.usage_state = 'used'
# 关联大包到托盘
pallet.package_ids = [(4, package_id.id, 0) for package_id in success_package]
# 更新大包的托盘信息
for package in success_package:
old_pallet_number = package.pallet_number
new_pallet_number = pallet.name # 使用托盘的编号
old_usage_date = package.pallet_usage_date
# 同一提单,同一托盘号,使用日期必须一致
related_packages = package.bl_id.big_package_ids.filtered(
lambda p: p.pallet_number == new_pallet_number) # 查找对应提单下相同托盘号的所有大包
warning_package_arr = [related_package.big_package_no for related_package in related_packages if
related_package.pallet_usage_date != usage_date]
if warning_package_arr:
raise ValidationError(
_('Big Package No :%s ,The same bill of lading, same pallet number, and usage date must be consistent!') % (
'\n'.join(warning_package_arr))) # 大包号关联的同一提单,同一托盘号,使用日期必须一致
# 更新大包的托盘信息
package.update_pallet_info(new_pallet_number, usage_date,pallet.id)
if old_pallet_number:
# %s %s更改了托盘号,由%s变更为%s,托盘使用日期%s变更为%s
body = _(
'%s at %s changed the pallet number from %s to %s, and the pallet usage date from %s to %s') % (
self.env.user.name, fields.Datetime.now(), old_pallet_number, new_pallet_number,
old_usage_date,
usage_date)
else:
# 某人某时关联了托盘xxx,托盘使用日期xxxx
body = _('%s at %s associated tray %s, with a tray usage date of %s') % (
self.env.user.name, fields.Datetime.now(), new_pallet_number, usage_date)
package.message_post(body=body)
# 记录托盘关联日志
body = _('%s at %s associated %d packages to pallet %s') % (
self.env.user.name, fields.Datetime.now(), len(success_package), pallet.name)
pallet.message_post(body=body)
else:
pallet.usage_state = 'unused'
......
......@@ -36,44 +36,6 @@ class AssociatePalletWizard(models.TransientModel):
'\n'.join(fail_package))) # 不存在该大包,请检查输入信息
if success_package:
# 关联大包到托盘
record.pallet_id.package_ids = [(4, package_id.id, 0) for package_id in success_package]
# 更新大包的托盘信息
for package in success_package:
old_pallet_number = package.pallet_number
new_pallet_number = record.pallet_id.name # 使用托盘的编号
old_usage_date = package.pallet_usage_date
# 同一提单,同一托盘号,使用日期必须一致
related_packages = package.bl_id.big_package_ids.filtered(
lambda p: p.pallet_number == new_pallet_number) # 查找对应提单下相同托盘号的所有大包
warning_package_arr = [related_package.big_package_no for related_package in related_packages if
related_package.pallet_usage_date != record.usage_date]
if warning_package_arr:
raise ValidationError(
_('Big Package No :%s ,The same bill of lading, same pallet number, and usage date must be consistent!') % (
'\n'.join(warning_package_arr))) # 大包号关联的同一提单,同一托盘号,使用日期必须一致
package.update_pallet_info(new_pallet_number, record.usage_date,record.pallet_id.id)
if old_pallet_number:
# %s %s更改了托盘号,由%s变更为%s,托盘使用日期%s变更为%s
body = _(
'%s at %s changed the pallet number from %s to %s, and the pallet usage date from %s to %s') % (
self.env.user.name, fields.Datetime.now(), old_pallet_number, new_pallet_number,
old_usage_date,
record.usage_date)
else:
# 某人某时关联了托盘xxx,托盘使用日期xxxx
body = _('%s at %s associated tray %s, with a tray usage date of %s') % (
self.env.user.name, fields.Datetime.now(), new_pallet_number, record.usage_date)
package.message_post(body=body)
# 更新托盘的使用状态(理货时间和交货时间会自动通过计算字段更新)
record.pallet_id.update_usage_state()
record.pallet_id.update_usage_state(success_package)
# 记录托盘关联日志
body = _('%s at %s associated %d packages to pallet %s') % (
self.env.user.name, fields.Datetime.now(), len(success_package), record.pallet_id.name)
record.pallet_id.message_post(body=body)
Markdown 格式
0%
您添加了 0 到此讨论。请谨慎行事。
请先完成此评论的编辑!
注册 或者 后发表评论