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

1、增加登录接口,查询提单及大包接口3、更新大包理货

上级 c1cb5f50
...@@ -6,11 +6,11 @@ msgid "" ...@@ -6,11 +6,11 @@ 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: 2024-09-04 09:32+0000\n" "POT-Creation-Date: 2024-09-06 02:11+0000\n"
"PO-Revision-Date: 2024-09-04 17:32+0800\n" "PO-Revision-Date: 2024-09-06 10:14+0800\n"
"Last-Translator: \n" "Last-Translator: \n"
"Language-Team: \n" "Language-Team: \n"
"Language: zh_CN\n" "Language: zh\n"
"MIME-Version: 1.0\n" "MIME-Version: 1.0\n"
"Content-Type: text/plain; charset=UTF-8\n" "Content-Type: text/plain; charset=UTF-8\n"
"Content-Transfer-Encoding: 8bit\n" "Content-Transfer-Encoding: 8bit\n"
...@@ -34,6 +34,11 @@ msgstr "<span class=\"o_stat_text\">货物</span>" ...@@ -34,6 +34,11 @@ msgstr "<span class=\"o_stat_text\">货物</span>"
msgid "<span class=\"o_stat_text\">Ship Packages</span>" msgid "<span class=\"o_stat_text\">Ship Packages</span>"
msgstr "<span class=\"o_stat_text\">小包</span>" msgstr "<span class=\"o_stat_text\">小包</span>"
#. module: ccs_base
#: model_terms:ir.ui.view,arch_db:ccs_base.form_cc_bl_view
msgid "<span class=\"o_stat_text\">Tally Big Packages</span>"
msgstr "<span class=\"o_stat_text\">已理货大包</span>"
#. module: ccs_base #. module: ccs_base
#: model:ir.model.fields,help:ccs_base.field_batch_input_ship_package_status_wizard__exclude_tracking_no #: model:ir.model.fields,help:ccs_base.field_batch_input_ship_package_status_wizard__exclude_tracking_no
#: model:ir.model.fields,help:ccs_base.field_batch_input_ship_package_status_wizard__select_tracking_no #: model:ir.model.fields,help:ccs_base.field_batch_input_ship_package_status_wizard__select_tracking_no
...@@ -234,6 +239,8 @@ msgid "Batch Update the status of the small package" ...@@ -234,6 +239,8 @@ msgid "Batch Update the status of the small package"
msgstr "批量更新小包状态向导" msgstr "批量更新小包状态向导"
#. module: ccs_base #. module: ccs_base
#. odoo-python
#: code:addons/ccs_base/models/cc_bill_loading.py:0
#: model:ir.actions.act_window,name:ccs_base.action_cc_big_package #: model:ir.actions.act_window,name:ccs_base.action_cc_big_package
#: model:ir.model,name:ccs_base.model_cc_big_package #: model:ir.model,name:ccs_base.model_cc_big_package
#: model:ir.model.fields,field_description:ccs_base.field_cc_package_good__big_package_id #: model:ir.model.fields,field_description:ccs_base.field_cc_package_good__big_package_id
...@@ -246,6 +253,7 @@ msgstr "批量更新小包状态向导" ...@@ -246,6 +253,7 @@ msgstr "批量更新小包状态向导"
#: model_terms:ir.ui.view,arch_db:ccs_base.tree_cc_big_package_view #: model_terms:ir.ui.view,arch_db:ccs_base.tree_cc_big_package_view
#: model_terms:ir.ui.view,arch_db:ccs_base.tree_cc_bl_view #: model_terms:ir.ui.view,arch_db:ccs_base.tree_cc_bl_view
#: model_terms:ir.ui.view,arch_db:ccs_base.tree_cc_ship_package_view #: model_terms:ir.ui.view,arch_db:ccs_base.tree_cc_ship_package_view
#, python-format
msgid "Big Package" msgid "Big Package"
msgstr "大包" msgstr "大包"
...@@ -491,6 +499,12 @@ msgstr "取消" ...@@ -491,6 +499,12 @@ msgstr "取消"
msgid "Chargable Weight" msgid "Chargable Weight"
msgstr "清关重量" msgstr "清关重量"
#. module: ccs_base
#: model:ir.model.fields.selection,name:ccs_base.selection__cc_big_package__tally_state__checked_goods
#: model_terms:ir.ui.view,arch_db:ccs_base.search_cc_big_package_view
msgid "Checked goods"
msgstr "已理货"
#. module: ccs_base #. module: ccs_base
#: model:ir.actions.act_window,name:ccs_base.action_cc_is_clearance_company #: model:ir.actions.act_window,name:ccs_base.action_cc_is_clearance_company
#: model:ir.ui.menu,name:ccs_base.menu_cc_clearance_company #: model:ir.ui.menu,name:ccs_base.menu_cc_clearance_company
...@@ -679,7 +693,7 @@ msgstr "申报类型" ...@@ -679,7 +693,7 @@ msgstr "申报类型"
#: model:ir.model.fields,field_description:ccs_base.field_cc_node__desc #: model:ir.model.fields,field_description:ccs_base.field_cc_node__desc
#: model:ir.model.fields,field_description:ccs_base.field_cc_node_exception_reason__desc #: model:ir.model.fields,field_description:ccs_base.field_cc_node_exception_reason__desc
msgid "Description" msgid "Description"
msgstr "描述" msgstr "节点描述"
#. module: ccs_base #. module: ccs_base
#: model:ir.model.fields,field_description:ccs_base.field_batch_input_ship_package_status_wizard__display_name #: model:ir.model.fields,field_description:ccs_base.field_batch_input_ship_package_status_wizard__display_name
...@@ -1220,7 +1234,7 @@ msgstr "否" ...@@ -1220,7 +1234,7 @@ msgstr "否"
#: model:ir.model.fields,field_description:ccs_base.field_cc_node__name #: model:ir.model.fields,field_description:ccs_base.field_cc_node__name
#: model:ir.model.fields,field_description:ccs_base.field_cc_node_exception_reason__name #: model:ir.model.fields,field_description:ccs_base.field_cc_node_exception_reason__name
msgid "Name" msgid "Name"
msgstr "名称" msgstr "节点名称"
#. module: ccs_base #. module: ccs_base
#: model:ir.model.fields,field_description:ccs_base.field_cc_package_good__item_name_cn #: model:ir.model.fields,field_description:ccs_base.field_cc_package_good__item_name_cn
...@@ -1972,6 +1986,33 @@ msgstr "" ...@@ -1972,6 +1986,33 @@ msgstr ""
msgid "TYPE" msgid "TYPE"
msgstr "类型" msgstr "类型"
#. module: ccs_base
#. odoo-python
#: code:addons/ccs_base/models/cc_bill_loading.py:0
#, python-format
msgid "Tally Big Package"
msgstr "已理货大包"
#. module: ccs_base
#: model:ir.model.fields,field_description:ccs_base.field_cc_bl__tally_big_package_qty
msgid "Tally Big Package Qty"
msgstr "已理货大包数量"
#. module: ccs_base
#: model:ir.model.fields,field_description:ccs_base.field_cc_big_package__tally_state
msgid "Tally Status"
msgstr "理货状态"
#. module: ccs_base
#: model:ir.model.fields,field_description:ccs_base.field_cc_big_package__tally_time
msgid "Tally Time"
msgstr "理货时间"
#. module: ccs_base
#: model:ir.model.fields,field_description:ccs_base.field_cc_big_package__tally_user_id
msgid "Tally User"
msgstr "理货人"
#. module: ccs_base #. module: ccs_base
#: model:ir.model.fields,field_description:ccs_base.field_cc_ship_package__tax_mark #: model:ir.model.fields,field_description:ccs_base.field_cc_ship_package__tax_mark
msgid "Tax Mark" msgid "Tax Mark"
...@@ -2129,6 +2170,12 @@ msgstr "" ...@@ -2129,6 +2170,12 @@ msgstr ""
msgid "UNIT VALUE" msgid "UNIT VALUE"
msgstr "单价" msgstr "单价"
#. module: ccs_base
#: model:ir.model.fields.selection,name:ccs_base.selection__cc_big_package__tally_state__unprocessed_goods
#: model_terms:ir.ui.view,arch_db:ccs_base.search_cc_big_package_view
msgid "Unprocessed goods"
msgstr "未理货"
#. module: ccs_base #. module: ccs_base
#: model:ir.model.fields,field_description:ccs_base.field_cc_progress__update_date #: model:ir.model.fields,field_description:ccs_base.field_cc_progress__update_date
msgid "Update Date" msgid "Update Date"
......
...@@ -27,9 +27,9 @@ class CcBigPackage(models.Model): ...@@ -27,9 +27,9 @@ class CcBigPackage(models.Model):
# 定义模型字段 # 定义模型字段
# 所属提单 # 所属提单
bl_id = fields.Many2one('cc.bl', string='Bill of Loading') bl_id = fields.Many2one('cc.bl', string='Bill of Loading', index=True)
# 大包号 # 大包号
big_package_no = fields.Char(string='Big Package No.') big_package_no = fields.Char(string='Big Package No.', index=True)
# 下一阶段服务商名称 # 下一阶段服务商名称
next_provider_name = fields.Char(string='Next Provider Name') next_provider_name = fields.Char(string='Next Provider Name')
# 包裹明细 # 包裹明细
...@@ -54,6 +54,10 @@ class CcBigPackage(models.Model): ...@@ -54,6 +54,10 @@ class CcBigPackage(models.Model):
# 增加is_cancel字段, 用于标识大包是否取消, 来自提单的is_cancel字段 # 增加is_cancel字段, 用于标识大包是否取消, 来自提单的is_cancel字段
is_cancel = fields.Boolean(string='Is Cancel', related='bl_id.is_cancel', store=True) is_cancel = fields.Boolean(string='Is Cancel', related='bl_id.is_cancel', store=True)
tally_state = fields.Selection([('unprocessed_goods', 'Unprocessed goods'), ('checked_goods', 'Checked goods')],
default='unprocessed_goods', string='Tally Status', index=True) # 理货状态 未理货/已理货
tally_user_id = fields.Many2one('res.users', 'Tally User', index=True) # 理货人
tally_time = fields.Datetime('Tally Time') # 理货时间
# 创建显示包裹的action # 创建显示包裹的action
def action_show_ship_package(self): def action_show_ship_package(self):
...@@ -92,7 +96,7 @@ class CcPackageGood(models.Model): ...@@ -92,7 +96,7 @@ class CcPackageGood(models.Model):
# 定义模型字段 # 定义模型字段
# 所属包裹 # 所属包裹
bl_line_id = fields.Many2one('cc.ship.package', string='Ship Package') bl_line_id = fields.Many2one('cc.ship.package', string='Ship Package', index=True)
# 所属大包 # 所属大包
big_package_id = fields.Many2one('cc.big.package', related='bl_line_id.big_package_id', string='Big Package', big_package_id = fields.Many2one('cc.big.package', related='bl_line_id.big_package_id', string='Big Package',
store=True) store=True)
...@@ -105,13 +109,13 @@ class CcPackageGood(models.Model): ...@@ -105,13 +109,13 @@ class CcPackageGood(models.Model):
('item_id_uniq', 'unique(item_id)', 'The Item ID must be unique.') ('item_id_uniq', 'unique(item_id)', 'The Item ID must be unique.')
] ]
item_id = fields.Char(string='Item ID') item_id = fields.Char(string='Item ID', index=True)
# SKU标识ID # SKU标识ID
sku_id = fields.Char(string='SKU ID') sku_id = fields.Char(string='SKU ID', index=True)
# 商品中文名称 # 商品中文名称
item_name_cn = fields.Char(string='Name CN') item_name_cn = fields.Char(string='Name CN', index=True)
# 商品英文名称 # 商品英文名称
item_name_en = fields.Char(string='Name EN') item_name_en = fields.Char(string='Name EN', index=True)
# 出口HSCode # 出口HSCode
export_hs_code = fields.Char(string='Export HSCode') export_hs_code = fields.Char(string='Export HSCode')
# 进口HSCode # 进口HSCode
...@@ -183,14 +187,14 @@ class CcShipPackage(models.Model): ...@@ -183,14 +187,14 @@ class CcShipPackage(models.Model):
_inherit = ['mail.thread', 'mail.activity.mixin'] _inherit = ['mail.thread', 'mail.activity.mixin']
_order = 'bl_id, big_package_id,tracking_no' _order = 'bl_id, big_package_id,tracking_no'
customer_id = fields.Many2one('res.partner', string='From Customer') customer_id = fields.Many2one('res.partner', string='From Customer', index=True)
# 定义模型字段 # 定义模型字段
# 提单号 # 提单号
bl_id = fields.Many2one('cc.bl', string='Bill of Loading', index=True) bl_id = fields.Many2one('cc.bl', string='Bill of Loading', index=True)
# 大包号 # 大包号
big_package_id = fields.Many2one('cc.big.package', string='Big Package') big_package_id = fields.Many2one('cc.big.package', string='Big Package', index=True)
# 物流订单号 # 物流订单号
logistic_order_no = fields.Char(string='Logistic Order No', index=True) logistic_order_no = fields.Char(string='Logistic Order No', index=True)
...@@ -213,7 +217,7 @@ class CcShipPackage(models.Model): ...@@ -213,7 +217,7 @@ class CcShipPackage(models.Model):
# 交易单号 # 交易单号
trade_no = fields.Char(string='Trade No') trade_no = fields.Char(string='Trade No')
# 大包号 # 大包号
big_package_no = fields.Char(string='Big Package No') big_package_no = fields.Char(string='Big Package No', index=True)
# 海运/铁路的集装箱号 # 海运/铁路的集装箱号
container_no = fields.Char(string='Container No') container_no = fields.Char(string='Container No')
# 包裹售卖国家编码 # 包裹售卖国家编码
...@@ -274,7 +278,7 @@ class CcShipPackage(models.Model): ...@@ -274,7 +278,7 @@ class CcShipPackage(models.Model):
# 货币 # 货币
currency = fields.Char(string='Currency') currency = fields.Char(string='Currency')
# 币种对象 # 币种对象
currency_id = fields.Many2one('res.currency', string='Currency') currency_id = fields.Many2one('res.currency', string='Currency', index=True)
# 申报价格 # 申报价格
total_value = fields.Float(string='Total Value') total_value = fields.Float(string='Total Value')
...@@ -286,7 +290,7 @@ class CcShipPackage(models.Model): ...@@ -286,7 +290,7 @@ class CcShipPackage(models.Model):
tax_mark = fields.Selection( tax_mark = fields.Selection(
[('TTSTaxed', 'TTSTaxed'), ('Sentinel', 'Sentinel'), ('LSPTaxed', 'LSPTaxed'), [('TTSTaxed', 'TTSTaxed'), ('Sentinel', 'Sentinel'), ('LSPTaxed', 'LSPTaxed'),
('SellerObligation', 'SellerObligation')], ('SellerObligation', 'SellerObligation')],
string='Tax Mark') string='Tax Mark', index=True)
# 实际缴关税 # 实际缴关税
actual_tax = fields.Float(string='Actual Tax') actual_tax = fields.Float(string='Actual Tax')
...@@ -298,7 +302,7 @@ class CcShipPackage(models.Model): ...@@ -298,7 +302,7 @@ class CcShipPackage(models.Model):
# 实际缴关税币种 # 实际缴关税币种
actual_tax_currency = fields.Char(string='Actual Tax Currency') actual_tax_currency = fields.Char(string='Actual Tax Currency')
# 币种 # 币种
actual_currency_id = fields.Many2one('res.currency', string='Currency') actual_currency_id = fields.Many2one('res.currency', string='Currency', index=True)
# 实际缴关税时间 # 实际缴关税时间
actual_tax_date = fields.Char(string='Actual Tax Date') actual_tax_date = fields.Char(string='Actual Tax Date')
...@@ -318,7 +322,8 @@ class CcShipPackage(models.Model): ...@@ -318,7 +322,8 @@ class CcShipPackage(models.Model):
string='Invoice Attachments') string='Invoice Attachments')
# 进度状态, 包括已提货、 小包查验、海关放行、小包出库、小包入库、清关失败,包裹交接 # 进度状态, 包括已提货、 小包查验、海关放行、小包出库、小包入库、清关失败,包裹交接
state = fields.Many2one('cc.node', string='Progress state', domain="[('node_type', '=', 'package')]", tracking=True, state = fields.Many2one('cc.node', string='Progress state', domain="[('node_type', '=', 'package')]", index=True,
tracking=True,
default=lambda self: self.env['cc.node'].search( default=lambda self: self.env['cc.node'].search(
[('node_type', '=', 'package'), ('is_default', '=', True)], limit=1)) [('node_type', '=', 'package'), ('is_default', '=', True)], limit=1))
node_exception_reason_id = fields.Many2one('cc.node.exception.reason', 'Exception Reason') node_exception_reason_id = fields.Many2one('cc.node.exception.reason', 'Exception Reason')
...@@ -456,8 +461,17 @@ class CcBL(models.Model): ...@@ -456,8 +461,17 @@ class CcBL(models.Model):
('bl_no_uniq', 'unique(bl_no)', 'The Bill of Loading No. must be unique.') ('bl_no_uniq', 'unique(bl_no)', 'The Bill of Loading No. must be unique.')
] ]
@api.depends('big_package_ids', 'big_package_ids.tally_state')
def cal_tally_big_package_qty(self):
"""
已理货的大包数量
"""
for item in self:
item.tally_big_package_qty = len(
item.big_package_ids.filtered(lambda package: package.tally_state == 'checked_goods'))
# 提单号 # 提单号
bl_no = fields.Char(string='B/L No') bl_no = fields.Char(string='B/L No', index=True)
# 关务提单号 # 关务提单号
customs_bl_no = fields.Char(string='Customs B/L No') customs_bl_no = fields.Char(string='Customs B/L No')
# 贸易方式 # 贸易方式
...@@ -466,6 +480,10 @@ class CcBL(models.Model): ...@@ -466,6 +480,10 @@ class CcBL(models.Model):
declare_type = fields.Char(string='Declare Type') declare_type = fields.Char(string='Declare Type')
# 大包数量 # 大包数量
big_package_qty = fields.Integer(string='Big Package Qty') big_package_qty = fields.Integer(string='Big Package Qty')
# 理货大包数量
tally_big_package_qty = fields.Integer(string='Tally Big Package Qty', compute='cal_tally_big_package_qty',
store=True)
# 大包售卖国家 # 大包售卖国家
big_package_sell_country = fields.Char(string='Sell Country') big_package_sell_country = fields.Char(string='Sell Country')
...@@ -795,13 +813,23 @@ class CcBL(models.Model): ...@@ -795,13 +813,23 @@ class CcBL(models.Model):
def action_show_big_package(self): def action_show_big_package(self):
# 返回一个action,显示大包 # 返回一个action,显示大包
return { return {
'name': 'Big Package', 'name': _('Big Package'),
'type': 'ir.actions.act_window', 'type': 'ir.actions.act_window',
'res_model': 'cc.big.package', 'res_model': 'cc.big.package',
'view_mode': 'tree,form', 'view_mode': 'tree,form',
'domain': [('bl_id', '=', self.id)], 'domain': [('bl_id', '=', self.id)],
} }
def action_show_big_package_tally(self):
# 返回一个action,显示已理货的大包
return {
'name': _('Tally Big Package'),
'type': 'ir.actions.act_window',
'res_model': 'cc.big.package',
'view_mode': 'tree,form',
'domain': [('bl_id', '=', self.id), ('tally_state', '=', 'checked_goods')],
}
# 创建显示包裹的action # 创建显示包裹的action
def action_show_ship_package(self): def action_show_ship_package(self):
# 返回一个action,显示包裹 # 返回一个action,显示包裹
......
...@@ -12,6 +12,9 @@ ...@@ -12,6 +12,9 @@
<field name="ship_package_qty" string="Packages Qty"/> <field name="ship_package_qty" string="Packages Qty"/>
<field name="goods_qty" string="Goods Qty"/> <field name="goods_qty" string="Goods Qty"/>
<field name="is_cancel" string="Cancelled"/> <field name="is_cancel" string="Cancelled"/>
<field name="tally_user_id" optional="show"/>
<field name="tally_time" optional="show"/>
<field name="tally_state" optional="show"/>
</tree> </tree>
</field> </field>
</record> </record>
...@@ -26,22 +29,23 @@ ...@@ -26,22 +29,23 @@
</header> </header>
<sheet> <sheet>
<div class="oe_button_box" name="button_box"> <div class="oe_button_box" name="button_box">
<button name="action_show_ship_package" type="object" <button name="action_show_ship_package" type="object"
class="oe_stat_button" icon="fa-star"> class="oe_stat_button" icon="fa-star">
<div class="o_stat_info"> <div class="o_stat_info">
<field name="ship_package_qty" class="o_stat_value"/> <field name="ship_package_qty" class="o_stat_value"/>
<span class="o_stat_text">Ship Packages</span> <span class="o_stat_text">Ship Packages</span>
</div> </div>
</button> </button>
<button name="action_show_package_good" type="object" <button name="action_show_package_good" type="object"
class="oe_stat_button" icon="fa-star"> class="oe_stat_button" icon="fa-star">
<div class="o_stat_info"> <div class="o_stat_info">
<field name="goods_qty" class="o_stat_value"/> <field name="goods_qty" class="o_stat_value"/>
<span class="o_stat_text">Goods</span> <span class="o_stat_text">Goods</span>
</div> </div>
</button> </button>
</div> </div>
<widget name="web_ribbon" bg_color="bg-warning" title="Cancelled" attrs="{'invisible': [('is_cancel', '=', False)]}"/> <widget name="web_ribbon" bg_color="bg-warning" title="Cancelled"
attrs="{'invisible': [('is_cancel', '=', False)]}"/>
<label for="big_package_no"/> <label for="big_package_no"/>
<h1> <h1>
<field name="big_package_no" readonly="True"/> <field name="big_package_no" readonly="True"/>
...@@ -52,6 +56,9 @@ ...@@ -52,6 +56,9 @@
<field name="bl_id" string="Bill of Loading"/> <field name="bl_id" string="Bill of Loading"/>
<field name="next_provider_name" string="Next Provider Name"/> <field name="next_provider_name" string="Next Provider Name"/>
<field name="is_cancel" string="Cancelled"/> <field name="is_cancel" string="Cancelled"/>
<field name="tally_state" readonly="1"/>
<field name="tally_user_id" readonly="1" options="{'no_create':True}"/>
<field name="tally_time" readonly="1"/>
</group> </group>
<group> <group>
<field name="ship_package_qty" string="Package Qty"/> <field name="ship_package_qty" string="Package Qty"/>
...@@ -76,9 +83,11 @@ ...@@ -76,9 +83,11 @@
<field name="bl_id" string="Bill of Loading"/> <field name="bl_id" string="Bill of Loading"/>
<field name="next_provider_name" string="Next Provider Name"/> <field name="next_provider_name" string="Next Provider Name"/>
<separator/> <separator/>
<filter string="Unprocessed goods" name="filter_unprocessed_goods"
domain="[('tally_state', '=', 'unprocessed_goods')]"/>
<filter string="Checked goods" name="filter_checked_goods"
domain="[('tally_state', '=', 'checked_goods')]"/>
<separator/> <separator/>
<group expand="0" string="Group By"> <group expand="0" string="Group By">
<filter domain="[]" name="groupby_bl_id" string="Bill of Loading" context="{'group_by': 'bl_id'}"/> <filter domain="[]" name="groupby_bl_id" string="Bill of Loading" context="{'group_by': 'bl_id'}"/>
</group> </group>
......
...@@ -61,6 +61,13 @@ ...@@ -61,6 +61,13 @@
<span class="o_stat_text">Big Packages</span> <span class="o_stat_text">Big Packages</span>
</div> </div>
</button> </button>
<button name="action_show_big_package_tally" type="object"
class="oe_stat_button" icon="fa-cube">
<div class="o_stat_info">
<field name="tally_big_package_qty" class="o_stat_value"/>
<span class="o_stat_text">Tally Big Packages</span>
</div>
</button>
<button name="action_show_ship_package" type="object" <button name="action_show_ship_package" type="object"
class="oe_stat_button" icon="fa-cubes"> class="oe_stat_button" icon="fa-cubes">
<div class="o_stat_info"> <div class="o_stat_info">
......
from . import tt_controllers from . import tt_controllers
from . import order_controller
# -*- coding: utf-8 -*-
import math
import re
import pandas as pd
from odoo import http, fields, exceptions
from odoo.http import request
import logging
import json
import random
_logger = logging.getLogger(__name__)
class OrderController(http.Controller):
"""
查询提单信息 以及大包 扫码
"""
@http.route('/api/cc/login', type='json', auth='public', csrf=False)
def api_cc_login(self):
"""
登录接口
"""
res = {'state': 201, 'message': ''}
kwargs = json.loads(request.httprequest.data)
logging.info('api_cc_login kwargs:%s' % kwargs)
try:
if kwargs.get('login') and kwargs.get('password'):
uid = request.session.authenticate(request.session.db, kwargs['login'], kwargs['password'])
user = request.env['res.users'].sudo().browse(uid)
res['user_info'] = {
'id': uid, # 用户id
'name': user.name # 用户名称
}
res['state'] = 200
else:
res['state'] = 202
res['message'] = '登录名、密码不能为空'
except exceptions.AccessDenied as e:
if e.args == exceptions.AccessDenied().args:
res['message'] = "错误的登录名或密码"
else:
res['message'] = e.args[0]
logging.info('api_cc_login error:%s' % res)
return res
@http.route('/api/bl/info', type='json', auth='public', methods=['GET', 'POST'], csrf=False)
def bl_info(self):
"""
查看提单以及大包信息
:param kwargs:
:return:
"""
kwargs = json.loads(request.httprequest.data)
res = {'state': 201, 'message': ''}
try:
logging.info('bl_info kwargs:%s' % kwargs)
if kwargs.get('bl_no'):
bl_no = kwargs['bl_no']
bl_obj = request.env['cc.bl'].sudo().search([('bl_no', '=', bl_no)]) # 提单
if bl_obj:
res['bl_info'] = bl_obj.search_bl_info()
res['state'] = 200
else:
res['state'] = 404
res['message'] = '提单不存在!'
else:
res['state'] = 202
res['message'] = '提单号不能为空!'
except Exception as e:
logging.info('bl_info error:%s' % e)
res['message'] = '系统解析错误!'
logging.info('res:%s' % res)
return res
@http.route('/api/update/big/package/tally/detail', type='json', auth='public', methods=['GET', 'POST'], csrf=False)
def update_big_package_tally_detail(self):
"""
修改理货信息
:param kwargs:
:return:
"""
kwargs = json.loads(request.httprequest.data)
res = {'state': 201, 'message': ''}
try:
logging.info('update_big_package_tally_detail kw:%s' % kwargs)
if kwargs.get('bl_no') and kwargs.get('big_package_arr'):
bl_no = kwargs['bl_no']
bl_obj = request.env['cc.bl'].sudo().search([('bl_no', '=', bl_no)]) # 提单
big_package_arr = kwargs['big_package_arr']
if bl_obj:
# 该箱号的大包存在, 且状态为已扫, 则提示已扫;
# 该箱号的大包不存在, 则提示该箱号在系统中不存在;
tally_no_arr = [] # 已理货大包号
error_no_arr = [] # 不存在大包号
for package_item in big_package_arr:
big_package_no = package_item.get('big_package_no') # 大包号
tally_state = package_item.get('tally_state') # 理货状态
tally_user_id = package_item.get('tally_user_id') # 理货人
tally_time = package_item.get('tally_time') # 理货时间
big_package_obj = request.env['cc.big.package'].sudo().search(
[('big_package_no', '=', big_package_no)]) # 大包号
if big_package_obj:
if big_package_obj.tally_state == 'unprocessed_goods':
big_package_obj.update_big_package_info(tally_state=tally_state,
tally_user_id=tally_user_id,
tally_time=tally_time) # 修改理货信息
# else:
# tally_no_arr.append(big_package_no)
else:
error_no_arr.append(big_package_no)
if len(error_no_arr) > 0:
res['message'] = '大包号[%s]不存在!' % ','.join(list(set(error_no_arr)))
else:
res['state'] = 200
# if len(tally_no_arr) > 0:
# res['message'] = '大包号[%s]已理货,无需重新理货!' % ','.join(list(set(tally_no_arr)))
else:
res['message'] = '提单[%s]不存在!' % bl_no
else:
res['message'] = '提单号和大包数据不能为空'
except Exception as e:
logging.info('update_big_package_tally_detail error:%s' % e)
res['message'] = '系统解析错误'
return res
...@@ -205,8 +205,8 @@ msgstr "同步日志" ...@@ -205,8 +205,8 @@ msgstr "同步日志"
#. module: ccs_connect_tiktok #. module: ccs_connect_tiktok
#: model_terms:ir.ui.view,arch_db:ccs_connect_tiktok.form_cc_bl_view_inherit #: model_terms:ir.ui.view,arch_db:ccs_connect_tiktok.form_cc_bl_view_inherit
msgid "Sync Package Attachment" msgid "Sync CC Attachment"
msgstr "同步包裹文件" msgstr "同步清关文件"
#. module: ccs_connect_tiktok #. module: ccs_connect_tiktok
#: model_terms:ir.ui.view,arch_db:ccs_connect_tiktok.form_cc_bl_view_inherit #: model_terms:ir.ui.view,arch_db:ccs_connect_tiktok.form_cc_bl_view_inherit
......
...@@ -238,3 +238,50 @@ class CcBl(models.Model): ...@@ -238,3 +238,50 @@ class CcBl(models.Model):
'view_mode': 'tree,form', 'view_mode': 'tree,form',
'domain': [('bl_id', '=', self.id), ('is_sync', '=', False)], 'domain': [('bl_id', '=', self.id), ('is_sync', '=', False)],
} }
def search_bl_info(self):
"""
查询提单信息
"""
vals = {
'bl_no': self.bl_no or '', # 提单号
'scan_big_package_qty': self.tally_big_package_qty,
# 已扫大包数量
'big_package_arr': [big_package_item.search_big_package_info() for big_package_item in
self.big_package_ids],
# 大包信息
}
return vals
class CcBigPackage(models.Model):
# 模型名称
_inherit = 'cc.big.package'
# 模型描述
_description = 'Big Package'
def search_big_package_info(self):
"""
查询大包信息
"""
state_arr = {'unprocessed_goods': '未理货', 'checked_goods': '已理货'}
vals = {
'tally_state': state_arr[self.tally_state] or '', # 理货状态
'tally_user_id': self.tally_user_id.id or '', # 理货人id
'tally_user_name': self.tally_user_id.name or '', # 理货人名称
'tally_time': self.tally_time or '', # 理货时间
'big_package_no': self.big_package_no or '' # 大包号
}
return vals
def update_big_package_info(self, **kwargs):
"""
修改信息
"""
if kwargs.get('tally_state'):
state_arr = {'未理货': 'unprocessed_goods', '已理货': 'checked_goods'}
self.tally_state = state_arr[kwargs['tally_state']]
if kwargs.get('tally_user_id'):
self.tally_user_id = kwargs['tally_user_id']
if kwargs.get('tally_time'):
self.tally_time = kwargs['tally_time']
...@@ -23,7 +23,7 @@ ...@@ -23,7 +23,7 @@
<!-- # 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"/> <button name="batch_action_sync" string="Sync CC Attachment" type="object"/>
</header> </header>
<button name="action_show_ship_package" position="replace"> <button name="action_show_ship_package" position="replace">
......
Markdown 格式
0%
您添加了 0 到此讨论。请谨慎行事。
请先完成此评论的编辑!
注册 或者 后发表评论