提交 ddf115d6 authored 作者: 贺阳's avatar 贺阳

1、已使用的托盘不能删除

2、批量创建托盘时,点击确认并打印的话,生成的托盘需要变为已打印,且向导关闭
上级 d909a2e9
...@@ -4,6 +4,7 @@ ...@@ -4,6 +4,7 @@
import logging import logging
from odoo import models, fields, api, _ from odoo import models, fields, api, _
from odoo.exceptions import ValidationError
# 获取日志 # 获取日志
_logger = logging.getLogger(__name__) _logger = logging.getLogger(__name__)
...@@ -191,3 +192,16 @@ class CcPallet(models.Model): ...@@ -191,3 +192,16 @@ class CcPallet(models.Model):
'target': 'new', 'target': 'new',
'context': {}, 'context': {},
} }
def print_labels_success(self):
for pallet in self:
pallet.print_state = 'printed'
def unlink(self):
"""
已使用的托盘需要控制不能删除
"""
for pallet in self:
if pallet.usage_state == 'used':
raise ValidationError(_('Pallet %s has been used, cannot be deleted!') % pallet.name)
return super(CcPallet, self).unlink()
...@@ -78,9 +78,28 @@ class PalletBatchWizard(models.TransientModel): ...@@ -78,9 +78,28 @@ class PalletBatchWizard(models.TransientModel):
pallets = self.env['cc.pallet'].search([ pallets = self.env['cc.pallet'].search([
('id', 'in', result['domain'][0][2]) ('id', 'in', result['domain'][0][2])
]) ])
#修改为已打印
pallets.print_labels_success()
# 生成打印文件 # 获取系统参数中的本地域名
return self._generate_print_report(pallets) web_base_url = self.env['ir.config_parameter'].sudo().get_param('web.base.url', 'http://localhost:8069')
# 生成打印URL
report_url = f"{web_base_url}/report/pdf/ccs_pallet.action_pallet_label_report/{','.join(map(str, pallets.ids))}"
# 使用客户端动作处理打印和关闭向导
# return {
# 'type': 'ir.actions.client',
# 'tag': 'print_and_close',
# 'params': {
# 'report_url': report_url
# }
# }
# 在新窗口中打开打印
import webbrowser
webbrowser.open_new_tab(report_url)
return { 'type': 'ir.actions.act_window_close'}
# 生成打印报告 # 生成打印报告
def _generate_print_report(self, pallets): def _generate_print_report(self, pallets):
......
...@@ -24,7 +24,7 @@ class PalletPrintWizard(models.TransientModel): ...@@ -24,7 +24,7 @@ class PalletPrintWizard(models.TransientModel):
raise UserError(_('Please select pallets to print')) raise UserError(_('Please select pallets to print'))
# 更新打印状态为已打印 # 更新打印状态为已打印
self.pallet_ids.write({'print_state': 'printed'}) self.pallet_ids.print_labels_success()
# 生成打印报告 # 生成打印报告
return self._generate_print_report() return self._generate_print_report()
......
Markdown 格式
0%
您添加了 0 到此讨论。请谨慎行事。
请先完成此评论的编辑!
注册 或者 后发表评论