提交 32de84af authored 作者: 贺阳's avatar 贺阳

同一提单,同一托盘号,使用日期必须一致

上级 1af63629
...@@ -6,8 +6,8 @@ msgid "" ...@@ -6,8 +6,8 @@ msgid ""
msgstr "" msgstr ""
"Project-Id-Version: Odoo Server 16.0\n" "Project-Id-Version: Odoo Server 16.0\n"
"Report-Msgid-Bugs-To: \n" "Report-Msgid-Bugs-To: \n"
"POT-Creation-Date: 2025-02-07 07:52+0000\n" "POT-Creation-Date: 2025-02-08 01:29+0000\n"
"PO-Revision-Date: 2025-02-07 15:53+0800\n" "PO-Revision-Date: 2025-02-08 09:30+0800\n"
"Last-Translator: \n" "Last-Translator: \n"
"Language-Team: \n" "Language-Team: \n"
"Language: zh_CN\n" "Language: zh_CN\n"
...@@ -455,6 +455,15 @@ msgstr "大包" ...@@ -455,6 +455,15 @@ msgstr "大包"
msgid "Big Package No" msgid "Big Package No"
msgstr "大包号" msgstr "大包号"
#. module: ccs_base
#. odoo-python
#: code:addons/ccs_base/wizard/associate_pallet_wizard.py:0
#, python-format
msgid ""
"Big Package No :%s ,The same bill of lading, same pallet number, and usage "
"date must be consistent!"
msgstr "大包号:%s ,同一提单、同一托盘号的使用日期必须一致!"
#. module: ccs_base #. module: ccs_base
#: model:ir.model.fields,field_description:ccs_base.field_cc_big_package__big_package_no #: model:ir.model.fields,field_description:ccs_base.field_cc_big_package__big_package_no
#: model_terms:ir.ui.view,arch_db:ccs_base.form_cc_big_package_view #: model_terms:ir.ui.view,arch_db:ccs_base.form_cc_big_package_view
......
...@@ -65,6 +65,8 @@ class CcBigPackage(models.Model): ...@@ -65,6 +65,8 @@ class CcBigPackage(models.Model):
], default='unprocessed_goods', string='Tally Status', index=True) # 理货状态 未理货/已理货/尾程交接 ], default='unprocessed_goods', string='Tally Status', index=True) # 理货状态 未理货/已理货/尾程交接
tally_user_id = fields.Many2one('res.users', 'Tally User', index=True) # 理货人 tally_user_id = fields.Many2one('res.users', 'Tally User', index=True) # 理货人
tally_time = fields.Datetime('Tally Time') # 理货时间 tally_time = fields.Datetime('Tally Time') # 理货时间
delivery_user_id = fields.Many2one('res.users', string='Delivery User', index=True) # 尾程交货人
delivery_time = fields.Datetime(string='Delivery Time') # 尾程交货时间
exception_info_ids = fields.Many2many('cc.exception.info', 'bigpackage_exception_info_rel', exception_info_ids = fields.Many2many('cc.exception.info', 'bigpackage_exception_info_rel',
string='Exception Information') string='Exception Information')
...@@ -78,6 +80,16 @@ class CcBigPackage(models.Model): ...@@ -78,6 +80,16 @@ class CcBigPackage(models.Model):
self.pallet_usage_date = pallet_usage_date self.pallet_usage_date = pallet_usage_date
self.pallet_number = pallet_number self.pallet_number = pallet_number
def update_exception_info(self, exception_info_ids, is_send=False, email_language='zh_CN'):
"""
大包回写异常原因,发送邮件
:param exception_info_ids:
:return:
"""
self.exception_info_ids = [(6, 0, exception_info_ids)]
if is_send:
pass
# 创建显示包裹的action # 创建显示包裹的action
def action_show_ship_package(self): def action_show_ship_package(self):
# 返回一个action,显示包裹 # 返回一个action,显示包裹
...@@ -397,6 +409,16 @@ class CcShipPackage(models.Model): ...@@ -397,6 +409,16 @@ class CcShipPackage(models.Model):
exception_info_ids = fields.Many2many('cc.exception.info', 'shippackage_exception_info_rel', exception_info_ids = fields.Many2many('cc.exception.info', 'shippackage_exception_info_rel',
string='Exception Information') string='Exception Information')
def update_exception_info(self, exception_info_ids, is_send=False, email_language='zh_CN'):
"""
小包回写异常原因,发送邮件
:param exception_info_ids:
:return:
"""
self.exception_info_ids = [(6, 0, exception_info_ids)]
if is_send:
pass
# 重载write方法,在进度状态变化时,将is_sync置为False, 同时检查is_sync为false时,不允许修改进度状态 # 重载write方法,在进度状态变化时,将is_sync置为False, 同时检查is_sync为false时,不允许修改进度状态
def write(self, vals): def write(self, vals):
# if not self.is_sync and 'state' in vals: # if not self.is_sync and 'state' in vals:
......
...@@ -14,9 +14,11 @@ ...@@ -14,9 +14,11 @@
<field name="is_cancel" string="Cancelled"/> <field name="is_cancel" string="Cancelled"/>
<field name="pallet_number"/> <field name="pallet_number"/>
<field name="pallet_usage_date"/> <field name="pallet_usage_date"/>
<field name="tally_state" optional="show"/>
<field name="tally_user_id" optional="show"/> <field name="tally_user_id" optional="show"/>
<field name="tally_time" optional="show"/> <field name="tally_time" optional="show"/>
<field name="tally_state" optional="show"/> <field name="delivery_user_id" optional="show"/>
<field name="delivery_time" optional="show"/>
</tree> </tree>
</field> </field>
</record> </record>
...@@ -69,6 +71,8 @@ ...@@ -69,6 +71,8 @@
<field name="tally_state" readonly="1"/> <field name="tally_state" readonly="1"/>
<field name="tally_user_id" readonly="1" options="{'no_create':True}"/> <field name="tally_user_id" readonly="1" options="{'no_create':True}"/>
<field name="tally_time" readonly="1"/> <field name="tally_time" readonly="1"/>
<field name="delivery_user_id" readonly="1" options="{'no_create':True}"/>
<field name="delivery_time" readonly="1"/>
</group> </group>
<group> <group>
<field name="ship_package_qty" string="Package Qty"/> <field name="ship_package_qty" string="Package Qty"/>
......
...@@ -43,7 +43,7 @@ class AddExceptionInfoWizard(models.TransientModel): ...@@ -43,7 +43,7 @@ class AddExceptionInfoWizard(models.TransientModel):
exception_objs = record.exception_ids exception_objs = record.exception_ids
package_objs = self.get_order() package_objs = self.get_order()
for package in package_objs: for package in package_objs:
package.exception_info_ids = [(6, 0, exception_objs.ids)] # 回写小包的异常信息 package.update_exception_info(exception_objs.ids) # 回写小包的异常信息
# 发送邮件通知 # 发送邮件通知
if record.send_email: if record.send_email:
self.send_email_notification(record, package_objs, exception_objs) self.send_email_notification(record, package_objs, exception_objs)
......
...@@ -66,10 +66,12 @@ class AssociatePalletWizard(models.TransientModel): ...@@ -66,10 +66,12 @@ class AssociatePalletWizard(models.TransientModel):
# 同一提单,同一托盘号,使用日期必须一致 # 同一提单,同一托盘号,使用日期必须一致
related_packages = package.bl_id.big_package_ids.filtered( related_packages = package.bl_id.big_package_ids.filtered(
lambda p: p.pallet_number == new_pallet_number) # 查找对应提单下相同托盘号的所有大包 lambda p: p.pallet_number == new_pallet_number) # 查找对应提单下相同托盘号的所有大包
for related_package in related_packages: warning_package_arr = [related_package.big_package_no for related_package in related_packages if
if related_package.pallet_usage_date != record.usage_date: related_package.pallet_usage_date != record.usage_date]
raise ValidationError( if warning_package_arr:
_('The same bill of lading, same pallet number, and usage date must be consistent!')) # 同一提单,同一托盘号,使用日期必须一致 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) package.update_pallet_info(new_pallet_number, record.usage_date)
if old_pallet_number: if old_pallet_number:
# %s %s更改了托盘号,由%s变更为%s,托盘使用日期%s变更为%s # %s %s更改了托盘号,由%s变更为%s,托盘使用日期%s变更为%s
......
...@@ -360,7 +360,7 @@ class CcBl(models.Model): ...@@ -360,7 +360,7 @@ class CcBl(models.Model):
return [{'pallet_number': k, 'pallet_usage_time': v} for k, v in pallet_info.items()] return [{'pallet_number': k, 'pallet_usage_time': v} for k, v in pallet_info.items()]
def deal_bl_no(self, bl_no): def deal_bl_no(self, bl_no, state_arr=[]):
""" """
处理提单号:去掉杠和空格,并转换为小写 处理提单号:去掉杠和空格,并转换为小写
:param bl_no: :param bl_no:
...@@ -368,7 +368,8 @@ class CcBl(models.Model): ...@@ -368,7 +368,8 @@ class CcBl(models.Model):
""" """
processed_bl_no = bl_no.replace('-', '').replace(' ', '').lower() processed_bl_no = bl_no.replace('-', '').replace(' ', '').lower()
# 查询所有提单并处理它们的 bl_no # 查询所有提单并处理它们的 bl_no
all_bl_obj = self.env['cc.bl'].sudo().search([]) domain = [('state', 'in', state_arr)] if state_arr else []
all_bl_obj = self.env['cc.bl'].sudo().search(domain)
bl_obj = all_bl_obj.filtered( bl_obj = all_bl_obj.filtered(
lambda r: r.bl_no.replace('-', '').replace(' ', '').lower() == processed_bl_no) # 提单 lambda r: r.bl_no.replace('-', '').replace(' ', '').lower() == processed_bl_no) # 提单
return bl_obj return bl_obj
...@@ -420,12 +421,20 @@ class CcBigPackage(models.Model): ...@@ -420,12 +421,20 @@ class CcBigPackage(models.Model):
def update_big_package_info(self, **kwargs): def update_big_package_info(self, **kwargs):
""" """
理货 理货 tally/尾程交接 handover
""" """
if self.tally_state == 'unprocessed_goods': action_type = kwargs.get('action_type')
if kwargs.get('tally_state'): if action_type == 'tally':
self.tally_state = kwargs['tally_state'] if self.tally_state == 'unprocessed_goods':
if kwargs.get('tally_user_id'): if kwargs.get('tally_state'):
self.tally_user_id = kwargs['tally_user_id'] self.tally_state = kwargs['tally_state']
if kwargs.get('tally_time'): if kwargs.get('tally_user_id'):
self.tally_time = kwargs['tally_time'] self.tally_user_id = kwargs['tally_user_id']
if kwargs.get('tally_time'):
self.tally_time = kwargs['tally_time']
elif action_type == 'handover':
if self.tally_state != 'handover_completed':
if kwargs.get('tally_user_id'):
self.delivery_user_id = kwargs['tally_user_id']
if kwargs.get('tally_time'):
self.delivery_time = kwargs['tally_time']
Markdown 格式
0%
您添加了 0 到此讨论。请谨慎行事。
请先完成此评论的编辑!
注册 或者 后发表评论