提交 1239e8f6 authored 作者: 贺阳's avatar 贺阳

增加批量推送通过文件

上级 1bd2ab63
...@@ -45,8 +45,10 @@ class BatchInputShipPackageStatusWizard(models.TransientModel): ...@@ -45,8 +45,10 @@ class BatchInputShipPackageStatusWizard(models.TransientModel):
next_code_ids = fields.Many2many('cc.node', 'node_next_node_wizard_rel', 'node_id', 'next_node_id', 'Next 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') related='current_status.next_code_ids')
update_status = fields.Many2one('cc.node', 'Update Node') update_status = fields.Many2one('cc.node', 'Update Node')
select_tracking_no = fields.Text('Select TrackingNo', help='A TrackingNo no is one line') select_tracking_no = fields.Text('Select TrackingNo',
exclude_tracking_no = fields.Text('Exclude TrackingNo', help='A TrackingNo no is one line') help='A TrackingNo no is one line,separate multiple tracking numbers with line breaks')
exclude_tracking_no = fields.Text('Exclude TrackingNo',
help='A TrackingNo no is one line,separate multiple tracking numbers with line breaks')
update_package_count = fields.Integer('Select Package Count', compute='_compute_update_package_count') update_package_count = fields.Integer('Select Package Count', compute='_compute_update_package_count')
...@@ -97,7 +99,7 @@ class BatchInputShipPackageStatusWizard(models.TransientModel): ...@@ -97,7 +99,7 @@ class BatchInputShipPackageStatusWizard(models.TransientModel):
if self.select_type == 'tracking_no': if self.select_type == 'tracking_no':
if self.select_tracking_no: if self.select_tracking_no:
tracking_no_list = self.select_tracking_no.split(',') tracking_no_list = self.select_tracking_no.split('\n')
tracking_no_list = [i.strip() for i in tracking_no_list if i.strip()] tracking_no_list = [i.strip() for i in tracking_no_list if i.strip()]
parcels = self.env['cc.ship.package'].search( parcels = self.env['cc.ship.package'].search(
[('bl_id', '=', self.bl_id.id), ('tracking_no', 'in', tracking_no_list)]) [('bl_id', '=', self.bl_id.id), ('tracking_no', 'in', tracking_no_list)])
......
...@@ -11,6 +11,13 @@ ...@@ -11,6 +11,13 @@
<field name="arch" type="xml"> <field name="arch" type="xml">
<form string="更新包裹进度"> <form string="更新包裹进度">
<sheet> <sheet>
<!-- <group>-->
<!-- <div>-->
<!-- <span style="color:red">-->
<!-- </span>-->
<!-- </div>-->
<!-- </group>-->
<group> <group>
<field name="bl_id" required="1"/> <field name="bl_id" required="1"/>
<field name="select_type" required="1"/> <field name="select_type" required="1"/>
...@@ -18,9 +25,12 @@ ...@@ -18,9 +25,12 @@
attrs="{'invisible':[('select_type','=','tracking_no')],'required':[('select_type','=','node')]}" attrs="{'invisible':[('select_type','=','tracking_no')],'required':[('select_type','=','node')]}"
domain="[('node_type','=','package')]"/> domain="[('node_type','=','package')]"/>
<field name="next_code_ids" invisible="1"/> <field name="next_code_ids" invisible="1"/>
<field name="exclude_tracking_no" placeholder="多个单号 换行隔开" <!-- 多个单号 用换行进行分隔-->
<field name="exclude_tracking_no"
placeholder="Separate multiple tracking numbers with line breaks"
attrs="{'invisible':[('select_type','=','tracking_no')]}"/> attrs="{'invisible':[('select_type','=','tracking_no')]}"/>
<field name="select_tracking_no" placeholder="多个单号用‘,’符隔开" <field name="select_tracking_no"
placeholder="Separate multiple tracking numbers with line breaks"
attrs="{'invisible':[('select_type','=','node')],'required':[('select_type','=','tracking_no')]}"/> attrs="{'invisible':[('select_type','=','node')],'required':[('select_type','=','tracking_no')]}"/>
<field name="update_package_count"/> <field name="update_package_count"/>
<separator/> <separator/>
......
...@@ -68,14 +68,15 @@ class CcClearanceFile(models.Model): ...@@ -68,14 +68,15 @@ class CcClearanceFile(models.Model):
request_id = response_data['requestID'] request_id = response_data['requestID']
code = response_data['code'] code = response_data['code']
self.env['ao.tt.api.log'].sudo().create_api_log(self.file_name or '', '清关文件回传:' + error_msg, '', code, self.env['ao.tt.api.log'].sudo().create_api_log(self.file_name or '', '清关文件回传:' + error_msg, '', code,
request_id, source='推出') request_id, source='推出')
return error_msg return error_msg
else: else:
# 清关文件回传成功 # 清关文件回传成功
self.is_upload = True self.is_upload = True
self.upload_time = datetime.now() self.upload_time = datetime.now()
request_id = response_data['requestID'] request_id = response_data['requestID']
self.env['ao.tt.api.log'].sudo().create_api_log(self.file_name or '', '', '', 0, request_id, source='推出') self.env['ao.tt.api.log'].sudo().create_api_log(self.file_name or '', '', '', 0, request_id,
source='推出')
return '' return ''
# 重载action_upload方法 # 重载action_upload方法
...@@ -141,8 +142,9 @@ class CcShipPackage(models.Model): ...@@ -141,8 +142,9 @@ class CcShipPackage(models.Model):
for record in self: for record in self:
record.is_sync = True record.is_sync = True
self.env['cc.ship.package.sync.log'].sudo().create_sync_log(record.id, 'Tiktok', record.state.tk_code, self.env['cc.ship.package.sync.log'].sudo().create_sync_log(record.id, 'Tiktok', record.state.tk_code,
record.state_explain, record.state_explain,
record.process_time.strftime('%Y-%m-%d %H:%M:%S')) record.process_time.strftime(
'%Y-%m-%d %H:%M:%S'))
def get_callback_track_data(self): def get_callback_track_data(self):
"""小包上传数据.""" """小包上传数据."""
...@@ -177,17 +179,19 @@ class CcShipPackage(models.Model): ...@@ -177,17 +179,19 @@ class CcShipPackage(models.Model):
request_id = response_data['requestID'] request_id = response_data['requestID']
code = response_data['code'] code = response_data['code']
self.env['ao.tt.api.log'].sudo().create_api_log(self.tracking_no or '', '小包状态轨迹回传:' + error_msg, '', self.env['ao.tt.api.log'].sudo().create_api_log(self.tracking_no or '', '小包状态轨迹回传:' + error_msg, '',
code, code,
request_id, source='推出') request_id, source='推出')
return error_msg return error_msg
else: else:
# 清关文件回传成功 # 清关文件回传成功
self.is_sync = True self.is_sync = True
self.env['cc.ship.package.sync.log'].sudo().create_sync_log(self.id, 'Tiktok', self.state.tk_code, self.env['cc.ship.package.sync.log'].sudo().create_sync_log(self.id, 'Tiktok', self.state.tk_code,
self.state_explain, self.state_explain,
self.process_time.strftime('%Y-%m-%d %H:%M:%S')) self.process_time.strftime(
'%Y-%m-%d %H:%M:%S'))
request_id = response_data['requestID'] request_id = response_data['requestID']
self.env['ao.tt.api.log'].sudo().create_api_log(self.tracking_no or '', '', '', 0, request_id, source='推出') self.env['ao.tt.api.log'].sudo().create_api_log(self.tracking_no or '', '', '', 0, request_id,
source='推出')
return '' return ''
...@@ -214,3 +218,11 @@ class CcBl(models.Model): ...@@ -214,3 +218,11 @@ class CcBl(models.Model):
for package in ship_packages: for package in ship_packages:
package.callback_track() package.callback_track()
return True return True
def batch_action_sync(self):
"""
批量回传通过文件
"""
for item in self:
for line in item.cc_attachment_ids:
line.action_sync()
...@@ -2,7 +2,7 @@ ...@@ -2,7 +2,7 @@
<odoo> <odoo>
<data> <data>
<!-- # 继承ccs_base模块的ee视图,增加tt_code字段在列表中--> <!-- # 继承ccs_base模块的ee视图,增加tt_code字段在列表中-->
<record model="ir.ui.view" id="tree_cc_bl_view_inherit"> <record model="ir.ui.view" id="tree_cc_bl_view_inherit">
<field name="name">tree_cc_bl_view_inherit</field> <field name="name">tree_cc_bl_view_inherit</field>
<field name="model">cc.bl</field> <field name="model">cc.bl</field>
...@@ -23,13 +23,17 @@ ...@@ -23,13 +23,17 @@
<!-- # header之间增加一个按钮,调用自定义的方法--> <!-- # header之间增加一个按钮,调用自定义的方法-->
<header position="inside"> <header position="inside">
<button name="callback_track" string="Sync Package Status" type="object"/> <button name="callback_track" string="Sync Package Status" type="object"/>
<button name="batch_action_sync" string="Sync Package Attachment" type="object"/>
</header> </header>
<button name="action_show_ship_package" position="replace"> <button name="action_show_ship_package" position="replace">
<button name="action_show_ship_package" type="object" <button name="action_show_ship_package" type="object"
class="oe_stat_button" icon="fa-box"> class="oe_stat_button" icon="fa-box">
<div class="o_stat_info"> <div class="o_stat_info">
Not Sync: <field name="unsync_package_count" widget="badge" decoration-danger="1 == 1"/> / All:<field name="bl_ship_package_qty"/> Not Sync:
<field name="unsync_package_count" widget="badge" decoration-danger="1 == 1"/>
/ All:
<field name="bl_ship_package_qty"/>
<span class="o_stat_text">Ship Packages</span> <span class="o_stat_text">Ship Packages</span>
</div> </div>
</button> </button>
...@@ -39,7 +43,7 @@ ...@@ -39,7 +43,7 @@
</record> </record>
<!-- # 继承ccs_base模块的cc_ship_package_view.xml视图,增加is_sync字段在列表中--> <!-- # 继承ccs_base模块的cc_ship_package_view.xml视图,增加is_sync字段在列表中-->
<record model="ir.ui.view" id="tree_cc_ship_package_view_inherit"> <record model="ir.ui.view" id="tree_cc_ship_package_view_inherit">
<field name="name">tree_cc_ship_package_view_inherit</field> <field name="name">tree_cc_ship_package_view_inherit</field>
<field name="model">cc.ship.package</field> <field name="model">cc.ship.package</field>
...@@ -51,12 +55,12 @@ ...@@ -51,12 +55,12 @@
</field> </field>
<tree position="attributes"> <tree position="attributes">
<attribute name="decoration-danger">is_sync == False</attribute> <attribute name="decoration-danger">is_sync == False</attribute>
</tree> </tree>
</field> </field>
</record> </record>
<!-- # 继承ccs_base模块的search_cc_ship_package_view视图,装置加未同步的筛选条件--> <!-- # 继承ccs_base模块的search_cc_ship_package_view视图,装置加未同步的筛选条件-->
<record model="ir.ui.view" id="search_cc_ship_package_view_inherit"> <record model="ir.ui.view" id="search_cc_ship_package_view_inherit">
<field name="name">search_cc_ship_package_view_inherit</field> <field name="name">search_cc_ship_package_view_inherit</field>
<field name="model">cc.ship.package</field> <field name="model">cc.ship.package</field>
...@@ -68,7 +72,7 @@ ...@@ -68,7 +72,7 @@
</field> </field>
</record> </record>
# 继承ccs_base模块的form_cc_ship_package_view视图,增加同步日志列表在notebook中 # 继承ccs_base模块的form_cc_ship_package_view视图,增加同步日志列表在notebook中
<record model="ir.ui.view" id="form_cc_ship_package_view_inherit"> <record model="ir.ui.view" id="form_cc_ship_package_view_inherit">
<field name="name">form_cc_ship_package_view_inherit</field> <field name="name">form_cc_ship_package_view_inherit</field>
<field name="model">cc.ship.package</field> <field name="model">cc.ship.package</field>
...@@ -83,7 +87,5 @@ ...@@ -83,7 +87,5 @@
</record> </record>
</data> </data>
</odoo> </odoo>
\ No newline at end of file
...@@ -33,7 +33,7 @@ class BatchInputShipPackageStatusWizard(models.TransientModel): ...@@ -33,7 +33,7 @@ class BatchInputShipPackageStatusWizard(models.TransientModel):
for item in self: for item in self:
exclude_tracking_no = '' exclude_tracking_no = ''
if item.ship_package_ids: if item.ship_package_ids:
exclude_tracking_no = ','.join([line.tracking_no for line in item.ship_package_ids]) exclude_tracking_no = '\n'.join([line.tracking_no for line in item.ship_package_ids])
item.exclude_tracking_no = exclude_tracking_no item.exclude_tracking_no = exclude_tracking_no
ship_package_ids = fields.Many2many('cc.ship.package', '_update_state_package_wizard_rel', 'wizard_id', ship_package_ids = fields.Many2many('cc.ship.package', '_update_state_package_wizard_rel', 'wizard_id',
...@@ -52,7 +52,7 @@ class BatchInputShipPackageStatusWizard(models.TransientModel): ...@@ -52,7 +52,7 @@ class BatchInputShipPackageStatusWizard(models.TransientModel):
package_model = self.env['cc.ship.package'] package_model = self.env['cc.ship.package']
if item.select_type == 'tracking_no': if item.select_type == 'tracking_no':
if item.select_tracking_no: if item.select_tracking_no:
tracking_no_list = item.select_tracking_no.split(',') tracking_no_list = item.select_tracking_no.split('\n')
tracking_no_list = [i.strip() for i in tracking_no_list if i.strip()] tracking_no_list = [i.strip() for i in tracking_no_list if i.strip()]
package_obj = package_model.search( package_obj = package_model.search(
[('bl_id', '=', item.bl_id.id), ('tracking_no', 'in', tracking_no_list)]) [('bl_id', '=', item.bl_id.id), ('tracking_no', 'in', tracking_no_list)])
...@@ -95,7 +95,7 @@ class BatchInputShipPackageStatusWizard(models.TransientModel): ...@@ -95,7 +95,7 @@ class BatchInputShipPackageStatusWizard(models.TransientModel):
else: else:
if len(self.ship_package_ids) > 0: if len(self.ship_package_ids) > 0:
raise ValidationError( raise ValidationError(
'单号[%s]不能更新' % ','.join([package.tracking_no for package in self.ship_package_ids])) '单号[%s]不能更新' % '\n'.join([package.tracking_no for package in self.ship_package_ids]))
obj = super(BatchInputShipPackageStatusWizard, self).submit() obj = super(BatchInputShipPackageStatusWizard, self).submit()
# 生成sns日志 # 生成sns日志
self.bl_id.message_post(body='[%s]%s更新为[%s]%s' % ( self.bl_id.message_post(body='[%s]%s更新为[%s]%s' % (
......
Markdown 格式
0%
您添加了 0 到此讨论。请谨慎行事。
请先完成此评论的编辑!
注册 或者 后发表评论