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

1、提单接口优化

2、节点增加后续节点,多选,提单修改状态选择 修改节点时根据原节点的后续节点过滤
上级 39d19b53
......@@ -318,13 +318,12 @@ class CcShipPackage(models.Model):
string='Invoice Attachments')
# 进度状态, 包括已提货、 小包查验、海关放行、小包出库、小包入库、清关失败,包裹交接
state = fields.Many2one('cc.node', string='Progress state',domain="[('node_type', '=', 'package')]",
default=lambda self: self.env['cc.node'].search([('node_type','=','package'), ('is_default', '=', True)], limit=1))
state = fields.Many2one('cc.node', string='Progress state', domain="[('node_type', '=', 'package')]",
default=lambda self: self.env['cc.node'].search(
[('node_type', '=', 'package'), ('is_default', '=', True)], limit=1))
node_exception_reason_id = fields.Many2one('cc.node.exception.reason', 'Exception Reason')
process_time = fields.Datetime('Process Time(UTC)')
# 重载write方法,在进度状态变化时,将is_sync置为False, 同时检查is_sync为false时,不允许修改进度状态
def write(self, vals):
# if not self.is_sync and 'state' in vals:
......@@ -346,7 +345,6 @@ class CcShipPackage(models.Model):
vals['is_sync'] = False
return super(CcShipPackage, self).write(vals)
# 增加是否允许取消的检查方法,当小包状态为小包查验、海关放行、小包出库、清关失败,包裹交接时,不允许取消
def check_cancel(self):
if self.is_cancel:
......@@ -715,7 +713,7 @@ class CcBL(models.Model):
# }
# 添加计算方法,根据bl_line_ids计算bl_total_line,bl_total_qty,bl_total_amount
@api.depends('ship_package_ids')
@api.depends('ship_package_ids', 'ship_package_ids.big_package_id')
def _compute_bl_total(self):
for bl in self:
bl.bl_total_amount = sum(line.total_value for line in bl.ship_package_ids)
......
......@@ -43,3 +43,5 @@ class CcNode(models.Model):
('bl', 'Bill of Loading'),
('package', 'Package')
], string='Node Type', default='bl')
next_code_ids = fields.Many2many('cc.node', 'node_next_node_rel', 'node_id', 'next_node_id', 'Next Node',
domain="[('node_type','=',node_type)]")
......@@ -6,11 +6,12 @@
<field name="name">tree.cc.node</field>
<field name="model">cc.node</field>
<field name="arch" type="xml">
<tree string="CC Node" editable="bottom" >
<tree string="CC Node" editable="bottom">
<field optional="show" name="seq" string="Node Sequence" widget="handle"/>
<field optional="show" name="node_type" string="Node Type"/>
<field optional="show" name="name" string="Node Name"/>
<field optional="show" name="desc" string="Node Description"/>
<field optional="show" name="next_code_ids" widget="many2many_tags" options="{'no_create':True}"/>
<field optional="show" name="is_must" string="Is Must Node"/>
<field optional="show" name="is_done" string="Is Done Node"/>
<field optional="show" name="is_default" string="Is Current Node"/>
......@@ -26,7 +27,6 @@
<search string="Search Node">
<field name="name" string="Node Name"/>
<field name="desc" string="Node Description"/>
<group expand="0" string="Group By">
<filter string="Node Type" name="group_node_type" context="{'group_by':'node_type'}"/>
</group>
......
......@@ -32,6 +32,8 @@ class BatchInputShipPackageStatusWizard(models.TransientModel):
], string='Select Type', default='node')
current_status = fields.Many2one('cc.node', 'Select Node')
next_code_ids = fields.Many2many('cc.node', 'node_next_node_wizard_rel', 'node_id', 'next_node_id', 'Next Node',
related='current_status.next_code_ids')
update_status = fields.Many2one('cc.node', 'Update Node')
select_tracking_no = fields.Text('Select TrackingNo', help='A TrackingNo no is one line')
exclude_tracking_no = fields.Text('Exclude TrackingNo', help='A TrackingNo no is one line')
......
......@@ -14,12 +14,18 @@
<group>
<field name="bl_id" required="1"/>
<field name="select_type" required="1"/>
<field name="current_status" attrs="{'invisible':[('select_type','=','tracking_no')],'required':[('select_type','=','node')]}" domain="[('node_type','=','package')]" />
<field name="exclude_tracking_no" attrs="{'invisible':[('select_type','=','tracking_no')]}" />
<field name="select_tracking_no" attrs="{'invisible':[('select_type','=','node')],'required':[('select_type','=','tracking_no')]}" />
<field name="current_status"
attrs="{'invisible':[('select_type','=','tracking_no')],'required':[('select_type','=','node')]}"
domain="[('node_type','=','package')]"/>
<field name="next_code_ids" invisible="1"/>
<field name="exclude_tracking_no"
attrs="{'invisible':[('select_type','=','tracking_no')]}"/>
<field name="select_tracking_no"
attrs="{'invisible':[('select_type','=','node')],'required':[('select_type','=','tracking_no')]}"/>
<field name="update_package_count"/>
<separator/>
<field name="update_status" required="1" domain="[('node_type','=','package')]"/>
<field name="update_status" required="1"
domain="[('id','in',next_code_ids),('node_type','=','package')]"/>
<field name="process_time" required="1" string="Process Time(UTC)"/>
<field name="node_exception_reason_id" options="{'no_create':True}"/>
<field name="state_explain"/>
......@@ -28,7 +34,8 @@
<field name="is_ok"/>
</group>
<footer>
<button name="submit" type="object" string="Submit" class="oe_highlight" attrs="{'invisible':[('is_ok','=',False)]}"/>
<button name="submit" type="object" string="Submit" class="oe_highlight"
attrs="{'invisible':[('is_ok','=',False)]}"/>
<button string="Close" special="cancel"/>
</footer>
</sheet>
......
......@@ -269,15 +269,21 @@ class TTApi(http.Controller):
# 检查提单是否已经存在,且未被取消,如果存在则不再生成
bl = request.env['cc.bl'].sudo().search(
[('bl_no', '=', kws.get('master_waybill_no')), ('is_cancel', '=', False)], limit=1)
declare_type = kws.get('declare_type')
if declare_type:
declare_type = declare_type.lower()
if not bl:
if kws.get('declare_type') == 'Create':
if declare_type == 'create':
bl = request.env['cc.bl'].sudo().create(bl_vals)
else:
if kws.get('declare_type') == 'Update' and bl.state == 'draft':
if declare_type == 'update' and bl.state == 'draft':
bl.write(bl_vals)
# 生成cc.big.package
big_bag_list = kws.get('big_bag_list')
if big_bag_list and len(big_bag_list) > 0:
# 删除大包数据
for package in bl.big_package_ids:
package.unlink()
for big_bag in big_bag_list:
big_bag_no = big_bag.get('big_bag_no')
# 检查big_bag_no是否已经存在
......
Markdown 格式
0%
您添加了 0 到此讨论。请谨慎行事。
请先完成此评论的编辑!
注册 或者 后发表评论