Skip to content
项目
群组
代码片段
帮助
当前项目
正在载入...
登录 / 注册
切换导航面板
H
hh_ccs
项目
项目
详情
活动
周期分析
仓库
仓库
文件
提交
分支
标签
贡献者
图表
比较
统计图
议题
0
议题
0
列表
看板
标记
里程碑
合并请求
0
合并请求
0
CI / CD
CI / CD
流水线
作业
日程
统计图
Wiki
Wiki
代码片段
代码片段
成员
成员
折叠边栏
关闭边栏
活动
图像
聊天
创建新问题
作业
提交
问题看板
Open sidebar
贺阳
hh_ccs
Commits
e45e94d5
提交
e45e94d5
authored
4月 01, 2025
作者:
刘擎阳
浏览文件
操作
浏览文件
下载
差异文件
Merge branch 'feature/数据迁移' into develop
上级
81199473
01231d62
显示空白字符变更
内嵌
并排
正在显示
19 个修改的文件
包含
2811 行增加
和
4 行删除
+2811
-4
__manifest__.py
ccs_base/__manifest__.py
+6
-1
timer.xml
ccs_base/data/timer.xml
+17
-0
zh_CN.po
ccs_base/i18n/zh_CN.po
+1110
-0
__init__.py
ccs_base/models/__init__.py
+5
-0
cc_bill_loading.py
ccs_base/models/cc_bill_loading.py
+15
-2
cc_history_big_package.py
ccs_base/models/cc_history_big_package.py
+102
-0
cc_history_package_good.py
ccs_base/models/cc_history_package_good.py
+99
-0
cc_history_package_sync_log.py
ccs_base/models/cc_history_package_sync_log.py
+31
-0
cc_history_ship_package.py
ccs_base/models/cc_history_ship_package.py
+179
-0
ir.model.access.csv
ccs_base/security/ir.model.access.csv
+6
-0
cc_bl_view.xml
ccs_base/views/cc_bl_view.xml
+7
-1
cc_history_big_package_view.xml
ccs_base/views/cc_history_big_package_view.xml
+189
-0
cc_history_package_good_view.xml
ccs_base/views/cc_history_package_good_view.xml
+190
-0
cc_history_package_sync_log_view.xml
ccs_base/views/cc_history_package_sync_log_view.xml
+95
-0
cc_history_ship_package_view.xml
ccs_base/views/cc_history_ship_package_view.xml
+353
-0
menu_view.xml
ccs_base/views/menu_view.xml
+11
-0
config.py
consumers/config.py
+8
-0
history_data.py
consumers/history_data.py
+372
-0
history_data.conf
consumers/supervisord_conf/conf.d/history_data.conf
+16
-0
没有找到文件。
ccs_base/__manifest__.py
浏览文件 @
e45e94d5
...
...
@@ -24,8 +24,8 @@
'wizard/add_exception_info_wizard_views.xml'
,
'wizard/email_template.xml'
,
'data/data.xml'
,
'data/timer.xml'
,
'data/sequence.xml'
,
'views/menu_view.xml'
,
'views/cc_clearance_file_view.xml'
,
'views/cc_node_view.xml'
,
'views/cc_last_mile_provider_views.xml'
,
...
...
@@ -37,6 +37,11 @@
'views/cc_node_exception_reason_view.xml'
,
'views/cc_bl_view.xml'
,
'views/res_config_setting.xml'
,
'views/cc_history_big_package_view.xml'
,
'views/cc_history_package_good_view.xml'
,
'views/cc_history_ship_package_view.xml'
,
'views/cc_history_package_sync_log_view.xml'
,
'views/menu_view.xml'
,
# 'views/cc_customers_declaration_order_view.xml',
'templates/login.xml'
,
],
...
...
ccs_base/data/timer.xml
0 → 100644
浏览文件 @
e45e94d5
<odoo>
<data>
<record
id=
"cron_update_history_data"
model=
"ir.cron"
>
<field
name=
"name"
>
同步历史数据
</field>
<field
name=
"model_id"
ref=
"ccs_base.model_cc_bl"
/>
<field
name=
"state"
>
code
</field>
<field
name=
"code"
>
model.cron_update_history_data()
</field>
<field
name=
'interval_number'
>
1
</field>
<field
name=
'interval_type'
>
days
</field>
<field
name=
"numbercall"
>
-1
</field>
<field
name=
"active"
eval=
"False"
/>
</record>
</data>
</odoo>
\ No newline at end of file
ccs_base/i18n/zh_CN.po
浏览文件 @
e45e94d5
...
...
@@ -3164,3 +3164,1113 @@ msgstr ""
#: model_terms:ir.ui.view,arch_db:ccs_base.res_config_settings_view_form_auto_push
msgid "自动推送配置"
msgstr ""
#. module: ccs_base
#: model_terms:ir.ui.view,arch_db:ccs_base.form_cc_history_big_package_view
msgid "<span class=\"o_stat_text\">Goods</span>"
msgstr "<span class=\"o_stat_text\">货物</span>"
#. module: ccs_base
#: model_terms:ir.ui.view,arch_db:ccs_base.form_cc_history_big_package_view
msgid "<span class=\"o_stat_text\">Ship Packages</span>"
msgstr "<span class=\"o_stat_text\">小包</span>"
#. module: ccs_base
#: model_terms:ir.ui.view,arch_db:ccs_base.form_cc_history_ship_package_view
msgid "ADD 1"
msgstr "地址1"
#. module: ccs_base
#: model_terms:ir.ui.view,arch_db:ccs_base.form_cc_history_ship_package_view
msgid "ADD 2"
msgstr "地址2"
#. module: ccs_base
#: model_terms:ir.ui.view,arch_db:ccs_base.form_cc_history_ship_package_view
msgid "ADD 3"
msgstr "地址3"
#. module: ccs_base
#: model:ir.model.fields,field_description:ccs_base.field_cc_history_package_good__actual_gst
#: model:ir.model.fields,field_description:ccs_base.field_cc_history_ship_package__actual_gst
#: model_terms:ir.ui.view,arch_db:ccs_base.form_cc_history_ship_package_view
#: model_terms:ir.ui.view,arch_db:ccs_base.search_cc_history_ship_package_view
#: model_terms:ir.ui.view,arch_db:ccs_base.tree_cc_history_ship_package_view
msgid "Actual GST"
msgstr "实际消费税"
#. module: ccs_base
#: model:ir.model.fields,field_description:ccs_base.field_cc_history_package_good__actual_gst_rate
msgid "Actual GST Rate"
msgstr "实际消费税率"
#. module: ccs_base
#: model:ir.model.fields,field_description:ccs_base.field_cc_history_package_good__actual_tax
#: model:ir.model.fields,field_description:ccs_base.field_cc_history_ship_package__actual_tax
#: model_terms:ir.ui.view,arch_db:ccs_base.form_cc_history_ship_package_view
#: model_terms:ir.ui.view,arch_db:ccs_base.search_cc_history_ship_package_view
#: model_terms:ir.ui.view,arch_db:ccs_base.tree_cc_history_ship_package_view
msgid "Actual Tax"
msgstr "实际税收"
#. module: ccs_base
#: model:ir.model.fields,field_description:ccs_base.field_cc_history_package_good__actual_tax_currency
#: model:ir.model.fields,field_description:ccs_base.field_cc_history_ship_package__actual_tax_currency
#: model_terms:ir.ui.view,arch_db:ccs_base.form_cc_history_ship_package_view
#: model_terms:ir.ui.view,arch_db:ccs_base.search_cc_history_ship_package_view
#: model_terms:ir.ui.view,arch_db:ccs_base.tree_cc_history_ship_package_view
msgid "Actual Tax Currency"
msgstr "实际税收货币"
#. module: ccs_base
#: model:ir.model.fields,field_description:ccs_base.field_cc_history_ship_package__actual_tax_date
#: model_terms:ir.ui.view,arch_db:ccs_base.form_cc_history_ship_package_view
#: model_terms:ir.ui.view,arch_db:ccs_base.search_cc_history_ship_package_view
#: model_terms:ir.ui.view,arch_db:ccs_base.tree_cc_history_ship_package_view
msgid "Actual Tax Date"
msgstr "实际纳税日期"
#. module: ccs_base
#: model:ir.model.fields,field_description:ccs_base.field_cc_history_package_good__actual_tax_rate
msgid "Actual Tax Rate"
msgstr "实际税率"
#. module: ccs_base
#: model:ir.model.fields,field_description:ccs_base.field_cc_history_ship_package__actual_tax_tz
#: model_terms:ir.ui.view,arch_db:ccs_base.form_cc_history_ship_package_view
#: model_terms:ir.ui.view,arch_db:ccs_base.search_cc_history_ship_package_view
#: model_terms:ir.ui.view,arch_db:ccs_base.tree_cc_history_ship_package_view
msgid "Actual Tax Timezone"
msgstr "实际纳税时区"
#. module: ccs_base
#: model:ir.model.fields,field_description:ccs_base.field_cc_history_package_good__actual_vat
#: model:ir.model.fields,field_description:ccs_base.field_cc_history_ship_package__actual_vat
#: model_terms:ir.ui.view,arch_db:ccs_base.form_cc_history_ship_package_view
#: model_terms:ir.ui.view,arch_db:ccs_base.search_cc_history_ship_package_view
#: model_terms:ir.ui.view,arch_db:ccs_base.tree_cc_history_ship_package_view
msgid "Actual VAT"
msgstr "实际增值税"
#. module: ccs_base
#: model:ir.model.fields,field_description:ccs_base.field_cc_history_package_good__actual_vat_rate
msgid "Actual VAT Rate"
msgstr "实际增值税率"
#. module: ccs_base
#. odoo-python
#: code:addons/ccs_base/models/cc_bill_loading.py:0
#: model_terms:ir.ui.view,arch_db:ccs_base.form_cc_history_big_package_view
#, python-format
msgid "Add Package Exception Information"
msgstr "添加包裹异常信息"
#. module: ccs_base
#: model:ir.model.fields,field_description:ccs_base.field_cc_history_ship_package__message_attachment_count
msgid "Attachment Count"
msgstr "附件总数"
#. module: ccs_base
#: model_terms:ir.ui.view,arch_db:ccs_base.form_cc_history_package_good_view
msgid "Base Info"
msgstr "基本信息"
#. module: ccs_base
#: model:ir.model.fields,field_description:ccs_base.field_cc_history_package_good__big_package_id
#: model:ir.model.fields,field_description:ccs_base.field_cc_history_ship_package__big_package_id
#: model_terms:ir.ui.view,arch_db:ccs_base.form_cc_history_big_package_view
#: model_terms:ir.ui.view,arch_db:ccs_base.form_cc_history_ship_package_view
#: model_terms:ir.ui.view,arch_db:ccs_base.search_cc_history_big_package_view
#: model_terms:ir.ui.view,arch_db:ccs_base.search_cc_history_ship_package_view
#: model_terms:ir.ui.view,arch_db:ccs_base.tree_cc_history_big_package_view
#: model_terms:ir.ui.view,arch_db:ccs_base.tree_cc_history_ship_package_view
msgid "Big Package"
msgstr "大包"
#. module: ccs_base
#: model:ir.ui.menu,name:ccs_base.menu_cc_history_big_package
#: model:ir.actions.act_window,name:ccs_base.action_cc_history_big_package
msgid "History Big Package"
msgstr "历史大包"
#. module: ccs_base
#: model:ir.ui.menu,name:ccs_base.menu_cc_history_data
msgid "History Data"
msgstr "历史数据"
#. module: ccs_base
#: model:ir.model.fields,field_description:ccs_base.field_cc_history_ship_package__big_package_no
#: model_terms:ir.ui.view,arch_db:ccs_base.form_cc_history_ship_package_view
#: model_terms:ir.ui.view,arch_db:ccs_base.search_cc_history_ship_package_view
#: model_terms:ir.ui.view,arch_db:ccs_base.tree_cc_history_ship_package_view
msgid "Big Package No"
msgstr "大包号"
#. module: ccs_base
#: model:ir.model.fields,field_description:ccs_base.field_cc_history_big_package__big_package_no
#: model_terms:ir.ui.view,arch_db:ccs_base.form_cc_history_big_package_view
#: model_terms:ir.ui.view,arch_db:ccs_base.search_cc_history_big_package_view
#: model_terms:ir.ui.view,arch_db:ccs_base.tree_cc_history_big_package_view
msgid "Big Package No."
msgstr "大包号"
#. module: ccs_base
#: model:ir.model.fields,field_description:ccs_base.field_cc_history_big_package__bl_id
#: model:ir.model.fields,field_description:ccs_base.field_cc_history_package_good__bl_id
#: model:ir.model.fields,field_description:ccs_base.field_cc_history_ship_package__bl_id
#: model_terms:ir.ui.view,arch_db:ccs_base.form_cc_history_big_package_view
#: model_terms:ir.ui.view,arch_db:ccs_base.form_cc_history_ship_package_view
#: model_terms:ir.ui.view,arch_db:ccs_base.search_cc_history_big_package_view
#: model_terms:ir.ui.view,arch_db:ccs_base.search_cc_history_package_good_view
#: model_terms:ir.ui.view,arch_db:ccs_base.search_cc_history_ship_package_view
#: model_terms:ir.ui.view,arch_db:ccs_base.tree_cc_history_ship_package_view
msgid "Bill of Loading"
msgstr "提单"
#. module: ccs_base
#: model_terms:ir.ui.view,arch_db:ccs_base.form_cc_history_ship_package_view
msgid "Buyer Region"
msgstr "买方所在地区"
#. module: ccs_base
#: model_terms:ir.ui.view,arch_db:ccs_base.form_cc_history_package_good_view
msgid "CC Info"
msgstr "清关信息"
#. module: ccs_base
#: model_terms:ir.ui.view,arch_db:ccs_base.form_cc_history_ship_package_view
msgid "CC info"
msgstr "清关信息"
#. module: ccs_base
#: model_terms:ir.ui.view,arch_db:ccs_base.form_cc_history_ship_package_view
msgid "CITY"
msgstr "城市"
#. module: ccs_base
#: model:ir.model.fields,field_description:ccs_base.field_cc_history_package_good__cod_amount
msgid "COD Amount"
msgstr "COD金额"
#. module: ccs_base
#: model_terms:ir.ui.view,arch_db:ccs_base.form_cc_history_ship_package_view
msgid "COUNTRY"
msgstr "国家"
#. module: ccs_base
#: model_terms:ir.ui.view,arch_db:ccs_base.form_cc_history_ship_package_view
msgid "COUNTY"
msgstr "区县"
#. module: ccs_base
#: model_terms:ir.ui.view,arch_db:ccs_base.form_cc_history_ship_package_view
msgid "COUNTY(EN)"
msgstr "区县(EN)"
#. module: ccs_base
#: model:ir.model.fields,field_description:ccs_base.field_cc_history_ship_package__cancel_reason
#: model_terms:ir.ui.view,arch_db:ccs_base.form_cc_history_ship_package_view
#: model_terms:ir.ui.view,arch_db:ccs_base.search_cc_history_ship_package_view
#: model_terms:ir.ui.view,arch_db:ccs_base.tree_cc_history_ship_package_view
msgid "Cancel Reason"
msgstr "取消原因"
#. module: ccs_base
#: model_terms:ir.ui.view,arch_db:ccs_base.form_cc_history_big_package_view
#: model_terms:ir.ui.view,arch_db:ccs_base.form_cc_history_package_good_view
#: model_terms:ir.ui.view,arch_db:ccs_base.form_cc_history_ship_package_view
#: model_terms:ir.ui.view,arch_db:ccs_base.tree_cc_history_big_package_view
#: model_terms:ir.ui.view,arch_db:ccs_base.tree_cc_history_package_good_view
msgid "Cancelled"
msgstr "取消"
#. module: ccs_base
#: model:ir.model.fields.selection,name:ccs_base.selection__cc_history_big_package__tally_state__checked_goods
#: model_terms:ir.ui.view,arch_db:ccs_base.search_cc_history_big_package_view
msgid "Checked goods"
msgstr "已理货"
#. module: ccs_base
#: model:ir.model.fields.selection,name:ccs_base.selection__cc_history_ship_package__receiver_type__company
msgid "Company"
msgstr "公司"
#. module: ccs_base
#: model:ir.model.fields,field_description:ccs_base.field_cc_history_ship_package__company_code
#: model_terms:ir.ui.view,arch_db:ccs_base.form_cc_history_ship_package_view
#: model_terms:ir.ui.view,arch_db:ccs_base.search_cc_history_ship_package_view
#: model_terms:ir.ui.view,arch_db:ccs_base.tree_cc_history_ship_package_view
msgid "Company Code"
msgstr "公司编码"
#. module: ccs_base
#: model:ir.model.fields,field_description:ccs_base.field_cc_history_ship_package__container_no
msgid "Container No"
msgstr "集装箱编号"
#. module: ccs_base
#: model:ir.model.fields,field_description:ccs_base.field_cc_history_big_package__create_uid
#: model:ir.model.fields,field_description:ccs_base.field_cc_history_package_good__create_uid
#: model:ir.model.fields,field_description:ccs_base.field_cc_history_ship_package__create_uid
msgid "Created by"
msgstr "创建人"
#. module: ccs_base
#: model:ir.model.fields,field_description:ccs_base.field_cc_history_big_package__create_date
#: model:ir.model.fields,field_description:ccs_base.field_cc_history_package_good__create_date
#: model:ir.model.fields,field_description:ccs_base.field_cc_history_ship_package__create_date
msgid "Created on"
msgstr "创建时间"
#. module: ccs_base
#: model:ir.model.fields,field_description:ccs_base.field_cc_history_package_good__currency_id
#: model:ir.model.fields,field_description:ccs_base.field_cc_history_ship_package__actual_currency_id
#: model:ir.model.fields,field_description:ccs_base.field_cc_history_ship_package__currency
#: model:ir.model.fields,field_description:ccs_base.field_cc_history_ship_package__currency_id
#: model_terms:ir.ui.view,arch_db:ccs_base.form_cc_history_package_good_view
#: model_terms:ir.ui.view,arch_db:ccs_base.search_cc_history_package_good_view
#: model_terms:ir.ui.view,arch_db:ccs_base.search_cc_history_ship_package_view
#: model_terms:ir.ui.view,arch_db:ccs_base.tree_cc_history_package_good_view
msgid "Currency"
msgstr "货币"
#. module: ccs_base
#: model:ir.model.fields,field_description:ccs_base.field_cc_history_ship_package__customer_ref
msgid "Customer Ref"
msgstr "客户参考"
#. module: ccs_base
#: model:ir.model.fields,field_description:ccs_base.field_cc_history_package_good__declare_price
msgid "Declare Price"
msgstr "申报价格"
#. module: ccs_base
#: model:ir.model.fields,field_description:ccs_base.field_cc_history_big_package__delivery_time
msgid "Delivery Time"
msgstr "尾程交货时间"
#. module: ccs_base
#: model:ir.model.fields,field_description:ccs_base.field_cc_history_big_package__delivery_user_id
msgid "Delivery User"
msgstr "尾程交货人"
#. module: ccs_base
#: model:ir.model.fields,field_description:ccs_base.field_cc_history_big_package__display_name
#: model:ir.model.fields,field_description:ccs_base.field_cc_history_package_good__display_name
#: model:ir.model.fields,field_description:ccs_base.field_cc_history_ship_package__display_name
msgid "Display Name"
msgstr "显示名称"
#. module: ccs_base
#: model_terms:ir.ui.view,arch_db:ccs_base.form_cc_history_ship_package_view
msgid "EMAIL"
msgstr "邮箱"
#. module: ccs_base
#: model:ir.model.fields,field_description:ccs_base.field_cc_history_big_package__exception_info_ids
#: model:ir.model.fields,field_description:ccs_base.field_cc_history_ship_package__exception_info_ids
msgid "Exception Information"
msgstr "异常信息"
#. module: ccs_base
#: model:ir.model.fields,field_description:ccs_base.field_cc_history_ship_package__node_exception_reason_id
msgid "Exception Reason"
msgstr "异常原因"
#. module: ccs_base
#: model:ir.model.fields,field_description:ccs_base.field_cc_history_package_good__export_hs_code
msgid "Export HSCode"
msgstr "出口HSCode"
#. module: ccs_base
#: model:ir.model.fields,field_description:ccs_base.field_cc_history_package_good__freight
msgid "Freight"
msgstr "运费"
#. module: ccs_base
#: model:ir.model.fields,field_description:ccs_base.field_cc_history_ship_package__customer_id
#: model_terms:ir.ui.view,arch_db:ccs_base.search_cc_history_ship_package_view
msgid "From Customer"
msgstr "来自客户"
#. module: ccs_base
#: model:ir.model.fields,field_description:ccs_base.field_cc_history_ship_package__gross_weight
msgid "GROSS WEIGHT"
msgstr "毛重"
#. module: ccs_base
#: model:ir.model.fields.selection,name:ccs_base.selection__cc_history_package_good__item_type__gift
msgid "Gift"
msgstr "赠品"
#. module: ccs_base
#: model:ir.model.fields,field_description:ccs_base.field_cc_history_package_good__item_type
#: model_terms:ir.ui.view,arch_db:ccs_base.search_cc_history_package_good_view
msgid "Good Type"
msgstr "商品类型"
#. module: ccs_base
#: model:ir.model.fields,field_description:ccs_base.field_cc_history_package_good__item_vat
msgid "Good VAT"
msgstr "商品税号"
#. module: ccs_base
#: model:ir.model.fields,field_description:ccs_base.field_cc_history_big_package__goods_ids
#: model:ir.model.fields,field_description:ccs_base.field_cc_history_ship_package__good_ids
#: model_terms:ir.ui.view,arch_db:ccs_base.form_cc_history_ship_package_view
msgid "Goods"
msgstr "商品信息"
#. module: ccs_base
#: model_terms:ir.ui.view,arch_db:ccs_base.form_cc_history_big_package_view
#: model_terms:ir.ui.view,arch_db:ccs_base.tree_cc_history_big_package_view
msgid "Goods Qty"
msgstr "商品数"
#. module: ccs_base
#: model_terms:ir.ui.view,arch_db:ccs_base.search_cc_history_big_package_view
#: model_terms:ir.ui.view,arch_db:ccs_base.search_cc_history_package_good_view
#: model_terms:ir.ui.view,arch_db:ccs_base.search_cc_history_ship_package_view
msgid "Group By"
msgstr "分组方式"
#. module: ccs_base
#: model:ir.model.fields.selection,name:ccs_base.selection__cc_history_big_package__tally_state__handover_completed
#: model_terms:ir.ui.view,arch_db:ccs_base.search_cc_history_big_package_view
msgid "Handover Completed"
msgstr "尾程交接"
#. module: ccs_base
#: model:ir.model.fields,field_description:ccs_base.field_cc_history_package_good__import_hs_code
msgid "Import HSCode"
msgstr "进口HSCode"
#. module: ccs_base
#: model:ir.model.fields.selection,name:ccs_base.selection__cc_history_ship_package__receiver_type__individual
msgid "Individual"
msgstr "个人"
#. module: ccs_base
#: model:ir.model.fields,field_description:ccs_base.field_cc_history_ship_package__internal_account_number
msgid "Internal Account Number"
msgstr "内部帐号"
#. module: ccs_base
#: model:ir.model.fields,field_description:ccs_base.field_cc_history_ship_package__invoice_attachment_ids
#: model_terms:ir.ui.view,arch_db:ccs_base.form_cc_history_ship_package_view
msgid "Invoice Attachments"
msgstr "发票附件"
#. module: ccs_base
#: model:ir.model.fields,field_description:ccs_base.field_cc_history_big_package__is_cancel
#: model:ir.model.fields,field_description:ccs_base.field_cc_history_package_good__is_cancel
#: model:ir.model.fields,field_description:ccs_base.field_cc_history_ship_package__is_cancel
#: model_terms:ir.ui.view,arch_db:ccs_base.form_cc_history_package_good_view
msgid "Is Cancel"
msgstr "取消"
#. module: ccs_base
#: model_terms:ir.ui.view,arch_db:ccs_base.search_cc_history_ship_package_view
msgid "Is Cancelled"
msgstr "取消"
#. module: ccs_base
#: model:ir.model.fields,field_description:ccs_base.field_cc_history_package_good__item_id
msgid "Item ID"
msgstr "商品ID"
#. module: ccs_base
#: model_terms:ir.ui.view,arch_db:ccs_base.form_cc_history_package_good_view
#: model_terms:ir.ui.view,arch_db:ccs_base.search_cc_history_package_good_view
#: model_terms:ir.ui.view,arch_db:ccs_base.tree_cc_history_package_good_view
msgid "Item VAT"
msgstr "商品税号"
#. module: ccs_base
#: model_terms:ir.ui.view,arch_db:ccs_base.search_cc_history_big_package_view
msgid "Last 10 days big package"
msgstr "近10日大包"
#. module: ccs_base
#: model_terms:ir.ui.view,arch_db:ccs_base.search_cc_history_ship_package_view
msgid "Last 30 days Ship Package"
msgstr "近30日小包"
#. module: ccs_base
#: model_terms:ir.ui.view,arch_db:ccs_base.search_cc_history_big_package_view
msgid "Last 30 days big Package"
msgstr "近30日大包"
#. module: ccs_base
#: model_terms:ir.ui.view,arch_db:ccs_base.search_cc_history_big_package_view
msgid "Last 7 days big package"
msgstr "近7日大包"
#. module: ccs_base
#: model_terms:ir.ui.view,arch_db:ccs_base.search_cc_history_ship_package_view
msgid "Last 7 days ship package"
msgstr "近7日小包"
#. module: ccs_bas
#: model:ir.model.fields,field_description:ccs_base.field_cc_history_big_package____last_update
#: model:ir.model.fields,field_description:ccs_base.field_cc_history_package_good____last_update
#: model:ir.model.fields,field_description:ccs_base.field_cc_history_ship_package____last_update
msgid "Last Modified on"
msgstr "最后修改时间"
#. module: ccs_base
#: model:ir.model.fields,field_description:ccs_base.field_cc_history_big_package__write_uid
#: model:ir.model.fields,field_description:ccs_base.field_cc_history_package_good__write_uid
#: model:ir.model.fields,field_description:ccs_base.field_cc_history_ship_package__write_uid
msgid "Last Updated by"
msgstr "最后更新人"
#. module: ccs_base
#: model:ir.model.fields,field_description:ccs_base.field_cc_history_big_package__write_date
#: model:ir.model.fields,field_description:ccs_base.field_cc_history_package_good__write_date
#: model:ir.model.fields,field_description:ccs_base.field_cc_history_ship_package__write_date
msgid "Last Updated on"
msgstr "最后更新时间"
#. module: ccs_base
#: model_terms:ir.ui.view,arch_db:ccs_base.search_cc_history_big_package_view
msgid "Last week big package"
msgstr "上周大包"
#. module: ccs_base
#: model_terms:ir.ui.view,arch_db:ccs_base.search_cc_history_ship_package_view
msgid "Last week ship package"
msgstr "上周小包"
#. module: ccs_base
#: model:ir.model.fields,field_description:ccs_base.field_cc_history_package_good__item_link
msgid "Link"
msgstr "链接"
#. module: ccs_base
#: model:ir.model.fields,field_description:ccs_base.field_cc_history_ship_package__logistic_order_no
msgid "Logistic Order No"
msgstr "物流订单号"
#. module: ccs_base
#: model:ir.model.fields,field_description:ccs_base.field_cc_history_big_package__message_main_attachment_id
#: model:ir.model.fields,field_description:ccs_base.field_cc_history_ship_package__message_main_attachment_id
msgid "Main Attachment"
msgstr "主附件"
#. module: ccs_base
#: model_terms:ir.ui.view,arch_db:ccs_base.form_cc_history_ship_package_view
msgid "NAME"
msgstr "名称"
#. module: ccs_base
#: model:ir.model.fields,field_description:ccs_base.field_cc_history_package_good__item_name_cn
msgid "Name CN"
msgstr "中文名称"
#. module: ccs_base
#: model:ir.model.fields,field_description:ccs_base.field_cc_history_package_good__item_name_en
msgid "Name EN"
msgstr "英文名称"
#. module: ccs_base
#: model_terms:ir.ui.view,arch_db:ccs_base.tree_cc_history_ship_package_view
msgid "Next Provider"
msgstr "下一阶段服务商"
#. module: ccs_base
#: model:ir.model.fields,field_description:ccs_base.field_cc_history_big_package__next_provider_name
#: model:ir.model.fields,field_description:ccs_base.field_cc_history_ship_package__next_provider_name
#: model_terms:ir.ui.view,arch_db:ccs_base.form_cc_history_big_package_view
#: model_terms:ir.ui.view,arch_db:ccs_base.form_cc_history_big_package_view
#: model_terms:ir.ui.view,arch_db:ccs_base.form_cc_history_ship_package_view
#: model_terms:ir.ui.view,arch_db:ccs_base.search_cc_history_big_package_view
#: model_terms:ir.ui.view,arch_db:ccs_base.search_cc_history_ship_package_view
msgid "Next Provider Name"
msgstr "下一阶段服务商名称"
#. module: ccs_base
#: model_terms:ir.ui.view,arch_db:ccs_base.search_cc_history_ship_package_view
msgid "No Bill of Loading"
msgstr "提单号"
#. module: ccs_base
#: model:ir.model.fields.selection,name:ccs_base.selection__cc_history_package_good__item_type__normal
msgid "Normal"
msgstr "正常"
#. module: ccs_base
#: model_terms:ir.ui.view,arch_db:ccs_base.search_cc_history_ship_package_view
msgid "Not Show Cancelled"
msgstr "不显示已取消的"
#. module: ccs_base
#: model:ir.model.fields,field_description:ccs_base.field_cc_history_ship_package__operation_time
msgid "Operation Time"
msgstr "操作时间"
#. module: ccs_base
#: model:ir.model.fields,field_description:ccs_base.field_cc_history_package_good__origin_country
msgid "Origin Country"
msgstr "始发国"
#. module: ccs_base
#: model_terms:ir.ui.view,arch_db:ccs_base.form_cc_history_ship_package_view
msgid "Other"
msgstr "其他信息"
#. module: ccs_base
#: model_terms:ir.ui.view,arch_db:ccs_base.form_cc_history_ship_package_view
msgid "PHONE"
msgstr "电话"
#. module: ccs_base
#: model_terms:ir.ui.view,arch_db:ccs_base.form_cc_history_ship_package_view
msgid "POSTCODE"
msgstr "邮政编码"
#. module: ccs_base
#: model:ir.model,name:ccs_base.model_cc_history_package_good
#: model_terms:ir.ui.view,arch_db:ccs_base.form_cc_history_package_good_view
#: model_terms:ir.ui.view,arch_db:ccs_base.search_cc_history_package_good_view
#: model_terms:ir.ui.view,arch_db:ccs_base.tree_cc_history_package_good_view
msgid "Package Good"
msgstr "小包商品"
#. module: ccs_base
#: model:ir.actions.act_window,name:ccs_base.action_cc_history_package_good
#: model:ir.ui.menu,name:ccs_base.menu_cc_history_package_good
msgid "History Package Good"
msgstr "历史小包商品"
#. module: ccs_base
#: model:ir.model.fields,field_description:ccs_base.field_cc_history_big_package__goods_qty
#: model:ir.model.fields,field_description:ccs_base.field_cc_history_big_package__ship_package_qty
#: model_terms:ir.ui.view,arch_db:ccs_base.form_cc_history_big_package_view
msgid "Package Qty"
msgstr "小包数"
#. module: ccs_base
#: model:ir.model.fields,field_description:ccs_base.field_cc_history_ship_package__buyer_region
msgid "Package Sell Country Code"
msgstr "包裹销售国家代码"
#. module: ccs_base
#: model_terms:ir.ui.view,arch_db:ccs_base.tree_cc_history_big_package_view
msgid "Packages Qty"
msgstr "小包数"
#. module: ccs_base
#: model:ir.model.fields,field_description:ccs_base.field_cc_history_big_package__pallet_number
msgid "Pallet Number"
msgstr "托盘号"
#. module: ccs_base
#: model:ir.model.fields,field_description:ccs_base.field_cc_history_big_package__pallet_usage_date
msgid "Pallet Usage Date"
msgstr "托盘使用日期"
#. module: ccs_base
#: model:ir.model.fields,field_description:ccs_base.field_cc_history_ship_package__process_time
msgid "Process Time"
msgstr "推送时间"
#. module: ccs_base
#: model_terms:ir.ui.view,arch_db:ccs_base.tree_cc_history_ship_package_view
msgid "Progress"
msgstr "进度"
#. module: ccs_base
#: model_terms:ir.ui.view,arch_db:ccs_base.form_cc_history_ship_package_view
#: model_terms:ir.ui.view,arch_db:ccs_base.search_cc_history_ship_package_view
msgid "Progress Status"
msgstr "进度状态"
#. module: ccs_base
#: model:ir.model.fields,field_description:ccs_base.field_cc_history_ship_package__state
#: model_terms:ir.ui.view,arch_db:ccs_base.search_cc_history_ship_package_view
msgid "Progress state"
msgstr "进度状态"
#. module: ccs_base
#: model:ir.model.fields,field_description:ccs_base.field_cc_history_package_good__quantity
msgid "Quantity"
msgstr "数量"
#. module: ccs_base
#: model:ir.model.fields,field_description:ccs_base.field_cc_history_package_good__quantity_unit
msgid "Quantity Unit"
msgstr "数量单位"
#. module: ccs_base
#: model:ir.model.fields,field_description:ccs_base.field_cc_history_ship_package__receiver_add_1
msgid "Receiver ADD 1"
msgstr "收件人地址1"
#. module: ccs_base
#: model:ir.model.fields,field_description:ccs_base.field_cc_history_ship_package__receiver_add_2
msgid "Receiver ADD 2"
msgstr "收件人地址2"
#. module: ccs_base
#: model:ir.model.fields,field_description:ccs_base.field_cc_history_ship_package__receiver_add_3
msgid "Receiver ADD 3"
msgstr "收件人地址3"
#. module: ccs_base
#: model:ir.model.fields,field_description:ccs_base.field_cc_history_ship_package__receiver_city
msgid "Receiver CITY"
msgstr "收件人城市"
#. module: ccs_base
#: model:ir.model.fields,field_description:ccs_base.field_cc_history_ship_package__receiver_county
msgid "Receiver COUNTY"
msgstr "收件人区县"
#. module: ccs_base
#: model:ir.model.fields,field_description:ccs_base.field_cc_history_ship_package__receiver_county_translate
msgid "Receiver COUNTY(EN)"
msgstr "收件人区县(EN)"
#. module: ccs_base
#: model:ir.model.fields,field_description:ccs_base.field_cc_history_ship_package__receiver_email
msgid "Receiver EMAIL"
msgstr "收件人邮件"
#. module: ccs_base
#: model_terms:ir.ui.view,arch_db:ccs_base.form_cc_history_ship_package_view
msgid "Receiver Info"
msgstr "收件人信息"
#. module: ccs_base
#: model:ir.model.fields,field_description:ccs_base.field_cc_history_ship_package__receiver_name
msgid "Receiver NAME"
msgstr "收件人名称"
#. module: ccs_base
#: model:ir.model.fields,field_description:ccs_base.field_cc_history_ship_package__receiver_phone
msgid "Receiver PHONE"
msgstr "收件人电话"
#. module: ccs_base
#: model:ir.model.fields,field_description:ccs_base.field_cc_history_ship_package__receiver_postcode
msgid "Receiver POSTCODE"
msgstr "收件人邮政编码"
#. module: ccs_base
#: model:ir.model.fields,field_description:ccs_base.field_cc_history_ship_package__receiver_type
#: model_terms:ir.ui.view,arch_db:ccs_base.search_cc_history_ship_package_view
msgid "Receiver TYPE"
msgstr "收件人类型"
#. module: ccs_base
#: model:ir.model.fields,field_description:ccs_base.field_cc_history_ship_package__receiver_vat_no
msgid "Receiver VAT"
msgstr "收件人税号"
#. module: ccs_base
#: model:ir.model.fields.selection,name:ccs_base.selection__cc_history_package_good__item_type__return
msgid "Return"
msgstr "退回"
#. module: ccs_base
#: model:ir.model.fields.selection,name:ccs_base.selection__cc_history_package_good__item_type__sample
msgid "Sample"
msgstr "样品"
#. module: ccs_base
#: model_terms:ir.ui.view,arch_db:ccs_base.search_cc_history_big_package_view
#: model_terms:ir.ui.view,arch_db:ccs_base.search_cc_history_package_good_view
#: model_terms:ir.ui.view,arch_db:ccs_base.search_cc_history_ship_package_view
msgid "Search"
msgstr "模糊搜索"
#. module: ccs_base
#: model:ir.model.fields,field_description:ccs_base.field_cc_history_ship_package__sender_add_1
msgid "Sender ADD 1"
msgstr "发货人地址1"
#. module: ccs_base
#: model:ir.model.fields,field_description:ccs_base.field_cc_history_ship_package__sender_add_2
msgid "Sender ADD 2"
msgstr "发货人地址2"
#. module: ccs_base
#: model:ir.model.fields,field_description:ccs_base.field_cc_history_ship_package__sender_add_3
msgid "Sender ADD 3"
msgstr "发货人地址3"
#. module: ccs_base
#: model:ir.model.fields,field_description:ccs_base.field_cc_history_ship_package__sender_city
msgid "Sender CITY"
msgstr "发货人城市"
#. module: ccs_base
#: model:ir.model.fields,field_description:ccs_base.field_cc_history_ship_package__sender_country
msgid "Sender COUNTRY"
msgstr "发货人国家"
#. module: ccs_base
#: model_terms:ir.ui.view,arch_db:ccs_base.form_cc_history_ship_package_view
msgid "Sender Info"
msgstr "发货人信息"
#. module: ccs_base
#: model:ir.model.fields,field_description:ccs_base.field_cc_history_ship_package__sender_name
msgid "Sender NAME"
msgstr "发货人名称"
#. module: ccs_base
#: model:ir.model.fields,field_description:ccs_base.field_cc_history_ship_package__sender_phone
msgid "Sender PHONE"
msgstr "发货人电话"
#. module: ccs_base
#: model:ir.model.fields,field_description:ccs_base.field_cc_history_ship_package__sender_postcode
msgid "Sender POSTCODE"
msgstr "发件人邮政编码"
#. module: ccs_base
#: model:ir.model.fields,field_description:ccs_base.field_cc_history_ship_package__sender_state
msgid "Sender State"
msgstr "发货人省份"
#. module: ccs_base
#: model:ir.model.fields,field_description:ccs_base.field_cc_history_ship_package__sender_vat_no
msgid "Sender VAT"
msgstr "发货人税号"
#. module: ccs_base
#: model:ir.model.fields,field_description:ccs_base.field_cc_history_package_good__bl_line_id
#: model_terms:ir.ui.view,arch_db:ccs_base.form_cc_history_package_good_view
#: model_terms:ir.ui.view,arch_db:ccs_base.search_cc_history_package_good_view
#: model_terms:ir.ui.view,arch_db:ccs_base.tree_cc_history_package_good_view
msgid "Ship Package"
msgstr "小包"
#. module: ccs_base
#: model:ir.actions.act_window,name:ccs_base.action_cc_history_ship_package
#: model:ir.ui.menu,name:ccs_base.menu_cc_history_ship_package
msgid "History Ship Package"
msgstr "历史小包"
#. module: ccs_base
#: model:ir.model.fields,field_description:ccs_base.field_cc_history_big_package__ship_package_ids
msgid "Ship Packages"
msgstr "小包"
#. module: ccs_base
#: model:ir.model.fields,field_description:ccs_base.field_cc_history_ship_package__shipping_fee
msgid "Shipping_fee"
msgstr "运费"
#. module: ccs_base
#: model_terms:ir.ui.view,arch_db:ccs_base.form_cc_history_ship_package_view
msgid "State"
msgstr "省份"
#. module: ccs_base
#: model:ir.model.fields,field_description:ccs_base.field_cc_history_ship_package__state_explain
#: model:ir.model.fields,help:ccs_base.field_cc_history_ship_package__state_explain
msgid "State Explain"
msgstr "状态说明"
#. module: ccs_base
#: model_terms:ir.ui.view,arch_db:ccs_base.form_cc_history_ship_package_view
#: model_terms:ir.ui.view,arch_db:ccs_base.search_cc_history_ship_package_view
#: model_terms:ir.ui.view,arch_db:ccs_base.tree_cc_history_ship_package_view
msgid "TOTAL VALUE"
msgstr "总价值"
#. module: ccs_base
#: model_terms:ir.ui.view,arch_db:ccs_base.form_cc_ship_package_view
#: model_terms:ir.ui.view,arch_db:ccs_base.form_cc_history_ship_package_view
msgid "TYPE"
msgstr "类型"
#. module: ccs_base
#: model:ir.model.fields,field_description:ccs_base.field_cc_history_big_package__tally_state
msgid "Tally Status"
msgstr "理货状态"
#. module: ccs_base
#: model:ir.model.fields,field_description:ccs_base.field_cc_history_big_package__tally_time
msgid "Tally Time"
msgstr "理货时间"
#. module: ccs_base
#: model:ir.model.fields,field_description:ccs_base.field_cc_history_big_package__tally_user_id
msgid "Tally User"
msgstr "理货人"
#. module: ccs_base
#: model:ir.model.fields,field_description:ccs_base.field_cc_history_ship_package__tax_mark
msgid "Tax Mark"
msgstr "税的状态"
#. module: ccs_base
#: model:ir.model.fields,field_description:ccs_base.field_cc_history_package_good__item_tax_status
#: model_terms:ir.ui.view,arch_db:ccs_base.search_cc_history_package_good_view
msgid "Tax Status"
msgstr "商品交税情况"
#. module: ccs_base
#: model:ir.model.constraint,message:ccs_base.constraint_cc_history_package_good_item_id_uniq
msgid "The Item ID must be unique."
msgstr "商品号必须唯一。"
#. module: ccs_base
#: model:ir.model.constraint,message:ccs_base.constraint_cc_history_ship_package_logistic_order_no_uniq
msgid "The Logistic Order No must be unique."
msgstr "物流订单号必须唯一。"
#. module: ccs_base
#: model_terms:ir.ui.view,arch_db:ccs_base.search_cc_history_big_package_view
msgid "This week big package"
msgstr "本周大包"
#. module: ccs_base
#: model_terms:ir.ui.view,arch_db:ccs_base.search_cc_history_ship_package_view
msgid "This week ship package"
msgstr "本周小包"
#. module: ccs_base
#: model_terms:ir.ui.view,arch_db:ccs_base.search_cc_history_big_package_view
msgid "Today's big package"
msgstr "今日大包"
#. module: ccs_base
#: model_terms:ir.ui.view,arch_db:ccs_base.search_cc_history_ship_package_view
msgid "Today's ship package"
msgstr "今日小包"
#. module: ccs_base
#: model:ir.model.fields,field_description:ccs_base.field_cc_history_package_good__item_total_price
msgid "Total Price"
msgstr "货物总价"
#. module: ccs_base
#: model:ir.model.fields,field_description:ccs_base.field_cc_history_ship_package__total_value
msgid "Total Value"
msgstr "总价值"
#. module: ccs_base
#: model:ir.model.fields,field_description:ccs_base.field_cc_history_ship_package__tracking_no
msgid "Tracking No"
msgstr "追踪号"
#. module: ccs_base
#: model_terms:ir.ui.view,arch_db:ccs_base.form_cc_history_ship_package_view
#: model_terms:ir.ui.view,arch_db:ccs_base.search_cc_history_ship_package_view
#: model_terms:ir.ui.view,arch_db:ccs_base.tree_cc_history_ship_package_view
msgid "Tracking No."
msgstr "追踪号"
#. module: ccs_base
#: model:ir.model.fields,field_description:ccs_base.field_cc_history_ship_package__trade_no
msgid "Trade No"
msgstr "交易单号"
#. module: ccs_base
#: model:ir.model.fields.selection,name:ccs_base.selection__cc_history_big_package__tally_state__unprocessed_goods
#: model_terms:ir.ui.view,arch_db:ccs_base.search_cc_history_big_package_view
msgid "Unprocessed goods"
msgstr "未理货"
#. module: ccs_base
#: model:ir.model.fields,field_description:ccs_base.field_cc_history_ship_package__user_track_note
msgid "User Tracking Note"
msgstr "用户发货备注"
#. module: ccs_base
#: model_terms:ir.ui.view,arch_db:ccs_base.form_cc_history_ship_package_view
msgid "VAT"
msgstr "税号"
#. module: ccs_base
#: model:ir.model.fields,field_description:ccs_base.field_cc_history_package_good__vat_rate
msgid "VAT Rate"
msgstr "VAT税率"
#. module: ccs_base
#: model_terms:ir.ui.view,arch_db:ccs_base.search_cc_history_ship_package_view
msgid "Value > 135"
msgstr ""
#. module: ccs_base
#: model:ir.model.fields,field_description:ccs_base.field_cc_history_package_good__weight
msgid "Weight"
msgstr "重量"
#. module: ccs_base
#: model:ir.model.fields,field_description:ccs_base.field_cc_history_ship_package__weight_unit
msgid "Weight Unit"
msgstr "重量单位"
#. module: ccs_base
#: model_terms:ir.ui.view,arch_db:ccs_base.search_cc_history_big_package_view
msgid "Yesterday's big package"
msgstr "昨日大包"
#. module: ccs_base
#: model_terms:ir.ui.view,arch_db:ccs_base.search_cc_history_ship_package_view
msgid "Yesterday's ship package"
msgstr "昨日小包"
#. module: ccs_base
#: model_terms:ir.actions.act_window,help:ccs_base.action_cc_history_big_package
msgid ""
"[History Big Package] Not yet! Click the Create button in the top left corner and "
"the sofa is yours!"
msgstr "【历史大包】 还没有!点击左上角的“创建”按钮,沙发就是你的了!"
#. module: ccs_base
#: model_terms:ir.actions.act_window,help:ccs_base.action_cc_history_package_good
msgid ""
"[History Package Good] Not yet! Click the Create button in the top left corner and "
"the sofa is yours!"
msgstr "【货物】 还没有!点击左上角的“创建”按钮,沙发就是你的了!"
#. module: ccs_base
#: model_terms:ir.actions.act_window,help:ccs_base.action_cc_history_ship_package
msgid ""
"[History Ship Package] Not yet! Click the Create button in the top left corner and "
"the sofa is yours!"
msgstr "【小包】 还没有!点击左上角的“创建”按钮,沙发就是你的了!"
#. module: ccs_base
#: model_terms:ir.ui.view,arch_db:ccs_base.form_cc_history_ship_package_view
msgid "base_info"
msgstr "基本信息"
#. module: ccs_base
#: model_terms:ir.ui.view,arch_db:ccs_base.form_cc_history_ship_package_view
msgid "Sync Log"
msgstr "同步日志"
#. module: ccs_base
#: model:ir.model.fields,field_description:ccs_base.field_cc_history_package_sync_log__api_customer
msgid "Api Customer"
msgstr "接口客户"
#. module: ccs_base
#: model:ir.actions.act_window,name:ccs_base.action_cc_history_package_sync_log
#: model:ir.model,name:ccs_base.model_cc_history_package_sync_log
msgid "CC History Package Sync Log"
msgstr "清关小包同步日志"
#. module: ccs_base
#: model_terms:ir.ui.view,arch_db:ccs_base.search_cc_history_package_sync_log_view
msgid "Group By"
msgstr "分组"
#. module: ccs_base
#: model:ir.model.fields,field_description:ccs_base.field_cc_history_package_sync_log__operate_remark
#: model_terms:ir.ui.view,arch_db:ccs_base.form_cc_history_package_sync_log_view
msgid "Operate Remark"
msgstr "操作备注"
#. module: ccs_base
#: model:ir.model.fields,field_description:ccs_base.field_cc_history_package_sync_log__operate_time
#: model_terms:ir.ui.view,arch_db:ccs_base.form_cc_history_package_sync_log_view
#: model_terms:ir.ui.view,arch_db:ccs_base.search_cc_history_package_sync_log_view
#: model_terms:ir.ui.view,arch_db:ccs_base.tree_cc_history_package_sync_log_view
msgid "Operate Time"
msgstr "操作时间"
#. module: ccs_base
#: model:ir.model.fields,field_description:ccs_base.field_cc_history_package_sync_log__operate_user
#: model_terms:ir.ui.view,arch_db:ccs_base.form_cc_history_package_sync_log_view
#: model_terms:ir.ui.view,arch_db:ccs_base.search_cc_history_package_sync_log_view
#: model_terms:ir.ui.view,arch_db:ccs_base.tree_cc_history_package_sync_log_view
msgid "Operate User"
msgstr "操作人"
#. module: ccs_base
#: model:ir.model,name:ccs_base.model_cc_ship_package
#: model:ir.model.fields,field_description:ccs_base.field_cc_history_package_sync_log__package_id
#: model_terms:ir.ui.view,arch_db:ccs_base.form_cc_history_package_sync_log_view
#: model_terms:ir.ui.view,arch_db:ccs_base.search_cc_history_package_sync_log_view
#: model_terms:ir.ui.view,arch_db:ccs_base.tree_cc_history_package_sync_log_view
msgid "Ship Package"
msgstr "小包"
#. module: ccs_base
#: model:ir.model.fields,field_description:ccs_base.field_cc_history_package_sync_log__sync_time
#: model_terms:ir.ui.view,arch_db:ccs_base.form_cc_history_package_sync_log_view
#: model_terms:ir.ui.view,arch_db:ccs_base.search_cc_history_package_sync_log_view
#: model_terms:ir.ui.view,arch_db:ccs_base.tree_cc_history_package_sync_log_view
msgid "Sync Time"
msgstr "同步时间"
#. module: ccs_base
#: model:ir.model.fields,field_description:ccs_base.field_cc_history_package_sync_log__process_code
#: model_terms:ir.ui.view,arch_db:ccs_base.form_cc_history_package_sync_log_view
#: model_terms:ir.ui.view,arch_db:ccs_base.search_cc_history_package_sync_log_view
#: model_terms:ir.ui.view,arch_db:ccs_base.tree_cc_history_package_sync_log_view
msgid "TK Process Code"
msgstr "进度编码"
#. module: ccs_base
#: model_terms:ir.actions.act_window,help:ccs_base.action_cc_history_package_sync_log
msgid ""
"[CC Ship Package Sync Log] Not yet! Click the Create button in the top left "
"corner and the sofa is yours!"
msgstr "[小包同步日志] 还没有!点击左上角的创建按钮,沙发就是你的了!"
#. module: ccs_base
#: model_terms:ir.ui.view,arch_db:ccs_base.form_cc_history_package_view
msgid "Sync Log"
msgstr "同步日志"
ccs_base/models/__init__.py
浏览文件 @
e45e94d5
...
...
@@ -11,3 +11,7 @@ from . import mail_thread
from
.
import
order_state_change_rule
from
.
import
res_config_setting
from
.
import
cc_history_big_package
from
.
import
cc_history_package_good
from
.
import
cc_history_ship_package
from
.
import
cc_history_package_sync_log
\ No newline at end of file
ccs_base/models/cc_bill_loading.py
浏览文件 @
e45e94d5
# 导入odoo
# 导入日志
import
logging
from
datetime
import
timedelta
from
datetime
import
timedelta
,
datetime
import
json
import
pytz
from
odoo
import
models
,
fields
,
api
,
_
from
odoo.exceptions
import
UserError
,
ValidationError
...
...
@@ -634,6 +634,19 @@ class CcBL(models.Model):
item
.
big_package_ids
.
filtered
(
lambda
package
:
package
.
tally_state
==
'handover_completed'
and
not
package
.
is_cancel
))
def
cron_update_history_data
(
self
):
history_days
=
self
.
env
[
'ir.config_parameter'
]
.
sudo
()
.
get_param
(
'history_days'
)
or
180
history_limit
=
self
.
env
[
'ir.config_parameter'
]
.
sudo
()
.
get_param
(
'history_limit'
)
or
50
origin_delete
=
self
.
env
[
'ir.config_parameter'
]
.
sudo
()
.
get_param
(
'origin_delete'
)
or
1
redis_conn
=
self
.
env
[
'common.common'
]
.
sudo
()
.
get_redis
()
vals
=
{
'history_days'
:
history_days
,
'history_limit'
:
history_limit
,
'origin_delete'
:
origin_delete
}
redis_conn
.
lpush
(
'history_data_list'
,
json
.
dumps
(
vals
))
is_history
=
fields
.
Boolean
(
'历史单据'
,
default
=
False
)
# 提单号
bl_no
=
fields
.
Char
(
string
=
'B/L No'
,
index
=
True
)
# 关务提单号
...
...
ccs_base/models/cc_history_big_package.py
0 → 100644
浏览文件 @
e45e94d5
# 导入odoo
# 导入日志
import
logging
from
datetime
import
timedelta
import
pytz
from
odoo
import
models
,
fields
,
api
,
_
from
odoo.exceptions
import
UserError
# 获取日志
_logger
=
logging
.
getLogger
(
__name__
)
# 创建一个大包业务对象,用来管理包裹的信息.包裹信息包括所属提单、大包号、下一阶段服务商名称、包裹明细
class
CcHistoryBigPackage
(
models
.
Model
):
# 模型名称
_name
=
'cc.history.big.package'
# 历史大包
_inherit
=
[
'mail.thread'
,
'mail.activity.mixin'
]
# 模型描述
_description
=
'Big Package'
_rec_name
=
'big_package_no'
# 定义模型字段
origin_id
=
fields
.
Integer
(
string
=
'原大包id'
)
# 所属提单
bl_id
=
fields
.
Many2one
(
'cc.bl'
,
string
=
'Bill of Loading'
,
index
=
True
)
# 大包号
big_package_no
=
fields
.
Char
(
string
=
'Big Package No.'
,
index
=
True
)
# 下一阶段服务商名称
next_provider_name
=
fields
.
Char
(
string
=
'Next Provider Name'
)
# 小包 包裹明细
ship_package_ids
=
fields
.
One2many
(
'cc.history.ship.package'
,
'big_package_id'
,
string
=
'Ship Packages'
)
# 商品明细
goods_ids
=
fields
.
One2many
(
'cc.history.package.good'
,
'big_package_id'
,
string
=
'Goods'
)
# 增加包裹数量字段, 用于显示包裹数量, 根据big_package_line_ids计算
# ship_package_qty = fields.Integer(string='Package Qty', compute='_compute_big_package_qty', store=True)
ship_package_qty
=
fields
.
Integer
(
string
=
'Package Qty'
)
# 商品纪录数
# goods_qty = fields.Integer(string='Package Qty', compute='_compute_big_package_qty', store=True)
goods_qty
=
fields
.
Integer
(
string
=
'Package Qty'
)
# New fields: pallet_number (char type), pallet_usage_date
# 托盘号(char型),托盘使用日期
pallet_number
=
fields
.
Char
(
string
=
'Pallet Number'
)
pallet_usage_date
=
fields
.
Date
(
string
=
'Pallet Usage Date'
)
# 增加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'
)
tally_state
=
fields
.
Selection
([
(
'unprocessed_goods'
,
'Unprocessed goods'
),
(
'checked_goods'
,
'Checked goods'
),
(
'handover_completed'
,
'Handover Completed'
)
],
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'
)
# 理货时间
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'
,
'history_bigpackage_exception_info_rel'
,
string
=
'Exception Information'
)
def
action_show_ship_package
(
self
):
# 返回一个action,显示包裹
return
{
'name'
:
_
(
'Ship Package'
),
'type'
:
'ir.actions.act_window'
,
'res_model'
:
'cc.history.ship.package'
,
'view_mode'
:
'tree,form'
,
'domain'
:
[(
'big_package_id'
,
'='
,
self
.
id
),
(
'is_cancel'
,
'='
,
False
)],
}
# 创建显示商品的action
def
action_show_package_good
(
self
):
# 返回一个action,显示商品
return
{
'name'
:
_
(
'Goods'
),
'type'
:
'ir.actions.act_window'
,
'res_model'
:
'cc.history.package.good'
,
'view_mode'
:
'tree,form'
,
'domain'
:
[(
'big_package_id'
,
'='
,
self
.
id
),
(
'is_cancel'
,
'='
,
False
)],
}
ccs_base/models/cc_history_package_good.py
0 → 100644
浏览文件 @
e45e94d5
# 导入odoo
# 导入日志
import
logging
from
datetime
import
timedelta
import
pytz
from
odoo
import
models
,
fields
,
api
,
_
from
odoo.exceptions
import
UserError
# 获取日志
_logger
=
logging
.
getLogger
(
__name__
)
class
CcPackageGood
(
models
.
Model
):
# 模型名称
_name
=
'cc.history.package.good'
# 历史小包商品
# 模型描述
_description
=
'Package Good'
_rec_name
=
'item_id'
# 定义模型字段
origin_id
=
fields
.
Integer
(
string
=
'原小包商品id'
)
# 所属小包裹
bl_line_id
=
fields
.
Many2one
(
'cc.history.ship.package'
,
string
=
'Ship Package'
,
index
=
True
)
# 所属大包
big_package_id
=
fields
.
Many2one
(
'cc.history.big.package'
)
# 增加一个提单对象的字段, 用于显示提单号,根据bl_line_id的bl_id字段
bl_id
=
fields
.
Many2one
(
'cc.bl'
)
# 按item_id,唯一
_sql_constraints
=
[
(
'item_id_uniq'
,
'unique(item_id)'
,
'The Item ID must be unique.'
)
]
item_id
=
fields
.
Char
(
string
=
'Item ID'
,
index
=
True
)
# SKU标识ID
sku_id
=
fields
.
Char
(
string
=
'SKU ID'
,
index
=
True
)
# 商品中文名称
item_name_cn
=
fields
.
Char
(
string
=
'Name CN'
,
index
=
True
)
# 商品英文名称
item_name_en
=
fields
.
Char
(
string
=
'Name EN'
,
index
=
True
)
# 出口HSCode
export_hs_code
=
fields
.
Char
(
string
=
'Export HSCode'
)
# 进口HSCode
import_hs_code
=
fields
.
Char
(
string
=
'Import HSCode'
)
# 重量
weight
=
fields
.
Float
(
string
=
'Weight'
)
# 数量
quantity
=
fields
.
Integer
(
string
=
'Quantity'
)
# 数量单位
quantity_unit
=
fields
.
Char
(
string
=
'Quantity Unit'
)
# 申报单价
declare_price
=
fields
.
Float
(
string
=
'Declare Price'
)
# 运费
freight
=
fields
.
Float
(
string
=
'Freight'
)
# COD金额
cod_amount
=
fields
.
Float
(
string
=
'COD Amount'
)
# VAT税率
vat_rate
=
fields
.
Float
(
string
=
'VAT Rate'
)
# 商品VAT
item_vat
=
fields
.
Float
(
string
=
'Good VAT'
)
# 原产国
origin_country
=
fields
.
Char
(
string
=
'Origin Country'
)
# 类型
item_type
=
fields
.
Selection
(
[(
'gift'
,
'Gift'
),
(
'normal'
,
'Normal'
),
(
'sample'
,
'Sample'
),
(
'return'
,
'Return'
)],
string
=
'Good Type'
)
# 商品总价
item_total_price
=
fields
.
Float
(
string
=
'Total Price'
)
# 商品链接
item_link
=
fields
.
Char
(
string
=
'Link'
)
# 商品交税情况
item_tax_status
=
fields
.
Selection
(
[(
'TTSTaxed'
,
'TTSTaxed'
),
(
'Sentinel'
,
'Sentinel'
),
(
'LSPTaxed'
,
'LSPTaxed'
),
(
'SellerObligation'
,
'SellerObligation'
)],
string
=
'Tax Status'
)
# 实缴代税总额
actual_tax
=
fields
.
Float
(
string
=
'Actual Tax'
)
# 实缴关税税率
actual_tax_rate
=
fields
.
Float
(
string
=
'Actual Tax Rate'
)
# 实缴关税币种
actual_tax_currency
=
fields
.
Char
(
string
=
'Actual Tax Currency'
)
# 实缴增值税
actual_vat
=
fields
.
Float
(
string
=
'Actual VAT'
)
# 实缴增值税税率
actual_vat_rate
=
fields
.
Float
(
string
=
'Actual VAT Rate'
)
# 实缴GST
actual_gst
=
fields
.
Float
(
string
=
'Actual GST'
)
# 实缴GST税率
actual_gst_rate
=
fields
.
Float
(
string
=
'Actual GST Rate'
)
# 币种
currency_id
=
fields
.
Many2one
(
'res.currency'
,
string
=
'Currency'
)
# 增加is_cancel字段, 用于标识是否取消, 来自小包的is_cancel字段
is_cancel
=
fields
.
Boolean
(
string
=
'Is Cancel'
)
ccs_base/models/cc_history_package_sync_log.py
0 → 100644
浏览文件 @
e45e94d5
# 导入odoo
# 导入日志
import
logging
from
datetime
import
timedelta
import
pytz
from
odoo
import
models
,
fields
,
api
,
_
from
odoo.exceptions
import
UserError
# 获取日志
_logger
=
logging
.
getLogger
(
__name__
)
class
CcHistoryPackageSyncLog
(
models
.
Model
):
_name
=
'cc.history.package.sync.log'
_description
=
'CC Ship Package Sync Log'
package_id
=
fields
.
Many2one
(
'cc.history.ship.package'
,
'Ship Package'
,
required
=
True
)
# 同步时间
sync_time
=
fields
.
Datetime
(
'Sync Time'
,
default
=
fields
.
Datetime
.
now
)
# 增加接口客户
api_customer
=
fields
.
Char
(
'Api Customer'
)
# 操作状态
process_code
=
fields
.
Char
(
'TK Process Code'
)
# 操作时间
operate_time
=
fields
.
Datetime
(
'Operate Time'
,
default
=
fields
.
Datetime
.
now
)
# 操作备注
operate_remark
=
fields
.
Text
(
'Operate Remark'
)
# 同步操作人
operate_user
=
fields
.
Many2one
(
'res.users'
,
'Operate User'
,
default
=
lambda
self
:
self
.
env
.
user
)
ccs_base/models/cc_history_ship_package.py
0 → 100644
浏览文件 @
e45e94d5
# 导入odoo
# 导入日志
import
logging
from
datetime
import
timedelta
import
pytz
from
odoo
import
models
,
fields
,
api
,
_
from
odoo.exceptions
import
UserError
# 获取日志
_logger
=
logging
.
getLogger
(
__name__
)
class
CcHistoryShipPackage
(
models
.
Model
):
# 模型名称
_name
=
'cc.history.ship.package'
# 历史小包
# 模型描述
_description
=
'Ship Package'
_rec_name
=
'tracking_no'
_inherit
=
[
'mail.thread'
,
'mail.activity.mixin'
]
_order
=
'bl_id, big_package_id,tracking_no'
customer_id
=
fields
.
Many2one
(
'res.partner'
,
string
=
'From Customer'
,
index
=
True
)
origin_id
=
fields
.
Integer
(
string
=
'原小包id'
)
# 定义模型字段
# 提单号
bl_id
=
fields
.
Many2one
(
'cc.bl'
,
string
=
'Bill of Loading'
,
index
=
True
)
# 大包号
big_package_id
=
fields
.
Many2one
(
'cc.history.big.package'
,
string
=
'Big Package'
,
index
=
True
)
# 物流订单号
logistic_order_no
=
fields
.
Char
(
string
=
'Logistic Order No'
,
index
=
True
)
# 按logistic_order_no,唯一
_sql_constraints
=
[
(
'logistic_order_no_uniq'
,
'unique(logistic_order_no)'
,
'The Logistic Order No must be unique.'
)
]
# 运单号(面单号)
tracking_no
=
fields
.
Char
(
string
=
'Tracking No'
,
index
=
True
)
# 对应面单号
# 客户参考(申报订单号)
customer_ref
=
fields
.
Char
(
string
=
'Customer Ref'
)
# 对应申报订单号
# 内部账号
internal_account_number
=
fields
.
Char
(
string
=
'Internal Account Number'
)
# 用户发货备注
user_track_note
=
fields
.
Char
(
string
=
'User Tracking Note'
)
# 公司代码
company_code
=
fields
.
Char
(
string
=
'Company Code'
)
# 交易单号
trade_no
=
fields
.
Char
(
string
=
'Trade No'
)
# 大包号
big_package_no
=
fields
.
Char
(
string
=
'Big Package No'
,
index
=
True
)
# 海运/铁路的集装箱号
container_no
=
fields
.
Char
(
string
=
'Container No'
)
# 包裹售卖国家编码
buyer_region
=
fields
.
Char
(
string
=
'Package Sell Country Code'
)
# 下一段服务商名称
next_provider_name
=
fields
.
Char
(
string
=
'Next Provider Name'
)
# 发件人姓名
sender_name
=
fields
.
Char
(
string
=
'Sender NAME'
)
# 发件人VAT税号/IOSS NO
sender_vat_no
=
fields
.
Char
(
string
=
'Sender VAT'
)
# 发件人电话
sender_phone
=
fields
.
Char
(
string
=
'Sender PHONE'
)
# 发件人地址1
sender_add_1
=
fields
.
Char
(
string
=
'Sender ADD 1'
)
# 发件人地址2
sender_add_2
=
fields
.
Char
(
string
=
'Sender ADD 2'
)
# 发件人地址3
sender_add_3
=
fields
.
Char
(
string
=
'Sender ADD 3'
)
# 发件人城市
sender_city
=
fields
.
Char
(
string
=
'Sender CITY'
)
# 发件人州
sender_state
=
fields
.
Char
(
string
=
'Sender State'
)
# 发件人邮编
sender_postcode
=
fields
.
Char
(
string
=
'Sender POSTCODE'
)
# 发件人国家
sender_country
=
fields
.
Char
(
string
=
'Sender COUNTRY'
)
# 收件人姓名
receiver_name
=
fields
.
Char
(
string
=
'Receiver NAME'
,
index
=
True
)
# 收件人类型:公司/个人
receiver_type
=
fields
.
Selection
([(
'company'
,
'Company'
),
(
'individual'
,
'Individual'
)],
string
=
'Receiver TYPE'
)
# 收件人VAT税号/IOSS NO
receiver_vat_no
=
fields
.
Char
(
string
=
'Receiver VAT'
)
# 收件人地址1
receiver_add_1
=
fields
.
Char
(
string
=
'Receiver ADD 1'
)
# 收件人地址2
receiver_add_2
=
fields
.
Char
(
string
=
'Receiver ADD 2'
)
# 收件人地址3
receiver_add_3
=
fields
.
Char
(
string
=
'Receiver ADD 3'
)
# 收件人城市
receiver_city
=
fields
.
Char
(
string
=
'Receiver CITY'
)
# 收件人县
receiver_county
=
fields
.
Char
(
string
=
'Receiver COUNTY'
)
receiver_county_translate
=
fields
.
Char
(
string
=
'Receiver COUNTY(EN)'
)
# 收件人邮编
receiver_postcode
=
fields
.
Char
(
string
=
'Receiver POSTCODE'
)
# 收件人邮件
receiver_email
=
fields
.
Char
(
string
=
'Receiver EMAIL'
,
index
=
True
)
# 电话号码
receiver_phone
=
fields
.
Char
(
string
=
'Receiver PHONE'
,
index
=
True
)
# 毛重
gross_weight
=
fields
.
Float
(
string
=
'GROSS WEIGHT'
)
# 重量单位
weight_unit
=
fields
.
Char
(
string
=
'Weight Unit'
)
# 货币
currency
=
fields
.
Char
(
string
=
'Currency'
)
# 币种对象
currency_id
=
fields
.
Many2one
(
'res.currency'
,
string
=
'Currency'
,
index
=
True
)
# 申报价格
total_value
=
fields
.
Float
(
string
=
'Total Value'
)
# 运费
shipping_fee
=
fields
.
Float
(
string
=
'Shipping_fee'
)
# 税的状态
tax_mark
=
fields
.
Selection
(
[(
'TTSTaxed'
,
'TTSTaxed'
),
(
'Sentinel'
,
'Sentinel'
),
(
'LSPTaxed'
,
'LSPTaxed'
),
(
'SellerObligation'
,
'SellerObligation'
)],
string
=
'Tax Mark'
,
index
=
True
)
# 实际缴关税
actual_tax
=
fields
.
Float
(
string
=
'Actual Tax'
)
# 实际缴VAT
actual_vat
=
fields
.
Float
(
string
=
'Actual VAT'
)
# 实缴GST
actual_gst
=
fields
.
Float
(
string
=
'Actual GST'
)
# 实际缴关税币种
actual_tax_currency
=
fields
.
Char
(
string
=
'Actual Tax Currency'
)
# 币种
actual_currency_id
=
fields
.
Many2one
(
'res.currency'
,
string
=
'Currency'
,
index
=
True
)
# 实际缴关税时间
actual_tax_date
=
fields
.
Char
(
string
=
'Actual Tax Date'
)
# 实际缴关税时区
actual_tax_tz
=
fields
.
Char
(
string
=
'Actual Tax Timezone'
)
# 商品明细
good_ids
=
fields
.
One2many
(
'cc.history.package.good'
,
'bl_line_id'
,
string
=
'Goods'
)
# 是否取消
is_cancel
=
fields
.
Boolean
(
string
=
'Is Cancel'
,
default
=
False
)
# 取消原因
cancel_reason
=
fields
.
Char
(
string
=
'Cancel Reason'
)
# 发票附件
invoice_attachment_ids
=
fields
.
Many2many
(
'ir.attachment'
,
relation
=
'history_package_invoice_attachment_rel'
,
string
=
'Invoice Attachments'
)
# 进度状态, 包括已提货、 小包查验、海关放行、小包出库、小包入库、清关失败,包裹交接
state
=
fields
.
Many2one
(
'cc.node'
,
string
=
'Progress state'
,
domain
=
"[('node_type', '=', 'package')]"
,
index
=
True
,
tracking
=
True
,
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'
,
index
=
True
)
exception_info_ids
=
fields
.
Many2many
(
'cc.exception.info'
,
'history_package_exception_info_rel'
,
string
=
'Exception Information'
)
# 操作时间RFC3339格式
operation_time
=
fields
.
Char
(
string
=
'Operation Time'
)
# 添加状态说明字段
state_explain
=
fields
.
Text
(
'State Explain'
,
help
=
'State Explain'
)
is_sync
=
fields
.
Boolean
(
'Is Sync'
,
default
=
False
,
index
=
True
)
tk_code
=
fields
.
Char
(
string
=
'TK Code'
,
help
=
'TK Code'
)
# 增加同步日志纪录字段
sync_log_ids
=
fields
.
One2many
(
'cc.history.package.sync.log'
,
'package_id'
,
'Sync Logs'
)
ccs_base/security/ir.model.access.csv
浏览文件 @
e45e94d5
...
...
@@ -69,3 +69,8 @@ access_cc_clearance_file_ccs_base.group_clearance_of_customs_manager,cc_clearanc
access_cc_clearance_file_ccs_base.group_clearance_of_customs_user,cc_clearance_file ccs_base.group_clearance_of_customs_user,ccs_base.model_cc_clearance_file,ccs_base.group_clearance_of_customs_user,1,0,0,0
order_state_change_rule_group_user,order_state_change_rule_group_user,ccs_base.model_order_state_change_rule,base.group_user,1,1,1,1
access_cc_history_big_package_base.group_user,cc_history_big_package base.group_user,ccs_base.model_cc_history_big_package,base.group_user,1,1,1,1
access_cc_history_package_good_base.group_user,cc_history_package_good base.group_user,ccs_base.model_cc_history_package_good,base.group_user,1,1,1,1
access_cc_history_ship_package_base.group_user,cc_history_ship_package base.group_user,ccs_base.model_cc_history_ship_package,base.group_user,1,1,1,1
access_cc_history_package_sync_log_base.group_user,cc_history_package_sync_log base.group_user,ccs_base.model_cc_history_package_sync_log,base.group_user,1,1,1,1
\ No newline at end of file
ccs_base/views/cc_bl_view.xml
浏览文件 @
e45e94d5
...
...
@@ -106,7 +106,13 @@
</div>
<widget
name=
"web_ribbon"
bg_color=
"bg-warning"
title=
"Cancelled"
attrs=
"{'invisible': [('is_cancel', '=', False)]}"
/>
<br/>
<br/>
<br/>
<br/>
<widget
name=
"web_ribbon"
bg_color=
"bg-danger"
title=
"历史提单"
attrs=
"{'invisible': [('is_history', '=', False)]}"
/>
<field
name=
"is_history"
invisible=
"1"
/>
<label
for=
"bl_no"
/>
<h1>
<field
name=
"bl_no"
readonly=
"True"
/>
...
...
ccs_base/views/cc_history_big_package_view.xml
0 → 100644
浏览文件 @
e45e94d5
<?xml version="1.0" encoding="UTF-8" ?>
<odoo>
<record
model=
"ir.ui.view"
id=
"tree_cc_history_big_package_view"
>
<field
name=
"name"
>
tree.cc.history.big.package
</field>
<field
name=
"model"
>
cc.history.big.package
</field>
<field
name=
"arch"
type=
"xml"
>
<tree
string=
"Big Package"
decoration-warning=
"is_cancel==True"
>
<field
optional=
"show"
name=
"big_package_no"
string=
"Big Package No."
/>
<field
optional=
"show"
name=
"bl_id"
/>
<field
name=
"ship_package_qty"
string=
"Packages Qty"
/>
<field
name=
"goods_qty"
string=
"Goods Qty"
/>
<field
name=
"is_cancel"
string=
"Cancelled"
/>
<field
name=
"pallet_number"
/>
<field
name=
"pallet_usage_date"
/>
<field
name=
"tally_state"
optional=
"show"
/>
<field
name=
"tally_user_id"
optional=
"show"
/>
<field
name=
"tally_time"
optional=
"show"
/>
<field
name=
"delivery_user_id"
optional=
"show"
/>
<field
name=
"delivery_time"
optional=
"show"
/>
<field
optional=
"show"
name=
"create_date"
/>
</tree>
</field>
</record>
<record
model=
"ir.ui.view"
id=
"form_cc_history_big_package_view"
>
<field
name=
"name"
>
form.cc.history.big.package
</field>
<field
name=
"model"
>
cc.history.big.package
</field>
<field
name=
"arch"
type=
"xml"
>
<form
string=
"Big Package"
>
<header>
</header>
<sheet>
<div
class=
"oe_button_box"
name=
"button_box"
>
<button
name=
"action_show_ship_package"
type=
"object"
class=
"oe_stat_button"
icon=
"fa-star"
>
<div
class=
"o_stat_info"
>
<field
name=
"ship_package_qty"
class=
"o_stat_value"
/>
<span
class=
"o_stat_text"
>
Ship Packages
</span>
</div>
</button>
<button
name=
"action_show_package_good"
type=
"object"
class=
"oe_stat_button"
icon=
"fa-star"
>
<div
class=
"o_stat_info"
>
<field
name=
"goods_qty"
class=
"o_stat_value"
/>
<span
class=
"o_stat_text"
>
Goods
</span>
</div>
</button>
</div>
<widget
name=
"web_ribbon"
bg_color=
"bg-warning"
title=
"Cancelled"
attrs=
"{'invisible': [('is_cancel', '=', False)]}"
/>
<label
for=
"big_package_no"
/>
<h1>
<field
name=
"big_package_no"
readonly=
"True"
/>
</h1>
<group>
<group>
<field
name=
"big_package_no"
string=
"Big Package No."
/>
<field
name=
"bl_id"
string=
"Bill of Loading"
/>
<field
name=
"next_provider_name"
string=
"Next Provider Name"
/>
<field
name=
"pallet_number"
readonly=
"1"
/>
<field
name=
"pallet_usage_date"
readonly=
"1"
/>
<field
name=
"exception_info_ids"
readonly=
"1"
widget=
"many2many_tags"
/>
<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"
/>
<field
name=
"delivery_user_id"
readonly=
"1"
options=
"{'no_create':True}"
/>
<field
name=
"delivery_time"
readonly=
"1"
/>
</group>
<group>
<field
name=
"ship_package_qty"
string=
"Package Qty"
/>
<field
name=
"goods_qty"
string=
"Goods Qty"
/>
</group>
</group>
</sheet>
<div
class=
"oe_chatter"
>
<field
name=
"message_follower_ids"
/>
<field
name=
"activity_ids"
/>
<field
name=
"message_ids"
options=
"{'post_refresh': 'recipients'}"
/>
</div>
</form>
</field>
</record>
<record
model=
"ir.ui.view"
id=
"search_cc_history_big_package_view"
>
<field
name=
"name"
>
search.cc.history.big.package
</field>
<field
name=
"model"
>
cc.history.big.package
</field>
<field
name=
"arch"
type=
"xml"
>
<search
string=
"Big Package"
>
<field
name=
"big_package_no"
string=
"Search"
filter_domain=
"['|', ('big_package_no', 'ilike', self), ('bl_id', 'ilike', self)]"
/>
<separator/>
<filter
string=
"Today's big package"
domain=
"[('create_date', '>=', (datetime.datetime.combine(context_today(), datetime.time(0, 0, 0)).to_utc()).strftime('%Y-%m-%d %H:%M:%S'))
, ('create_date', '<', (datetime.datetime.combine(context_today(), datetime.time(0, 0, 0)).to_utc() + datetime.timedelta(days=1)).strftime('%Y-%m-%d %H:%M:%S'))]"
name=
"today_ship"
/>
<filter
string=
"Yesterday's big package"
domain=
"[('create_date', '>=', (datetime.datetime.combine(context_today() - datetime.timedelta(days=1), datetime.time(0, 0, 0)).to_utc()).strftime('%Y-%m-%d %H:%M:%S')), ('create_date', '<', (datetime.datetime.combine(context_today(), datetime.time(0, 0, 0)).to_utc()).strftime('%Y-%m-%d %H:%M:%S'))]"
name=
"yesterday_ship"
/>
<filter
string=
"Last 7 days big package"
domain=
"[('create_date', '>=', (datetime.datetime.combine(context_today() - datetime.timedelta(days=7), datetime.time(0, 0, 0)).to_utc()).strftime('%Y-%m-%d %H:%M:%S')),('create_date', '<', (datetime.datetime.combine(context_today(), datetime.time(0, 0, 0)).to_utc() + datetime.timedelta(days=1)).strftime('%Y-%m-%d %H:%M:%S'))]"
name=
"last_7d"
/>
<filter
string=
"Last 10 days big package"
domain=
"[('create_date', '>=', (datetime.datetime.combine(context_today() - datetime.timedelta(days=10), datetime.time(0, 0, 0)).to_utc()).strftime('%Y-%m-%d %H:%M:%S')),('create_date', '<', (datetime.datetime.combine(context_today(), datetime.time(0, 0, 0)).to_utc() + datetime.timedelta(days=1)).strftime('%Y-%m-%d %H:%M:%S'))]"
name=
"last_10d"
/>
<filter
string=
"This week big package"
name=
"this_week_ship"
domain=
"[('create_date', '>=', (datetime.datetime.combine(context_today() + relativedelta(weeks=-1,days=1,weekday=0), datetime.time(0,0,0)).to_utc()).strftime('%Y-%m-%d %H:%M:%S')),
('create_date', '<', (datetime.datetime.combine(context_today() + relativedelta(days=1,weekday=0), datetime.time(0,0,0)).to_utc()).strftime('%Y-%m-%d %H:%M:%S'))]"
/>
<filter
string=
"Last week big package"
name=
"last_week_ship"
domain=
"[('create_date', '>=', (datetime.datetime.combine(context_today() + relativedelta(weeks=-2,days=1,weekday=0), datetime.time(0,0,0)).to_utc()).strftime('%Y-%m-%d %H:%M:%S')),
('create_date', '<', (datetime.datetime.combine(context_today() + relativedelta(weeks=-1,days=1,weekday=0), datetime.time(0,0,0)).to_utc()).strftime('%Y-%m-%d %H:%M:%S'))]"
/>
<!-- <filter string="This month ship package"-->
<!-- domain="[('create_date', '>=', (datetime.datetime.combine(context_today(), datetime.time(0, 0, 0)).to_utc()).strftime('%Y-%m-01 00:00:00'))]"-->
<!-- name="this_month_ship"/>-->
<!-- <filter string=" Last month ship package"-->
<!-- domain="[('create_date','<', (context_today().replace(day=1)).strftime('%Y-%m-%d 00:00:00')),('create_date','>=',(context_today() -relativedelta(months=1)).replace(day=1).strftime('%Y-%m-%d 00:00:00'))]"-->
<!-- name="last_month_ship"/>-->
<filter
string=
"Last 30 days big Package"
domain=
"[('create_date', '>=', (datetime.datetime.combine(context_today() - datetime.timedelta(days=30), datetime.time(0, 0, 0)).to_utc()).strftime('%Y-%m-%d %H:%M:%S')),('create_date', '<', (datetime.datetime.combine(context_today(), datetime.time(0, 0, 0)).to_utc() + datetime.timedelta(days=1)).strftime('%Y-%m-%d %H:%M:%S'))]"
name=
"last_30d"
/>
<separator/>
<field
name=
"big_package_no"
string=
"Big Package No."
/>
<field
name=
"bl_id"
string=
"Bill of Loading"
/>
<field
name=
"next_provider_name"
string=
"Next Provider Name"
/>
<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')]"
/>
<filter
string=
"Handover Completed"
name=
"filter_handover_completed"
domain=
"[('tally_state', '=', 'handover_completed')]"
/>
<separator/>
<group
expand=
"0"
string=
"Group By"
>
<filter
domain=
"[]"
name=
"groupby_bl_id"
string=
"Bill of Loading"
context=
"{'group_by': 'bl_id'}"
/>
</group>
</search>
</field>
</record>
<record
model=
"ir.actions.act_window"
id=
"action_cc_history_big_package"
>
<field
name=
"name"
>
History Big Package
</field>
<field
name=
"res_model"
>
cc.history.big.package
</field>
<field
name=
"view_mode"
>
tree,form,pivot,graph
</field>
<field
name=
"domain"
>
[]
</field>
<field
name=
"context"
>
{'search_default_last_30d':1}
</field>
<field
name=
"help"
type=
"html"
>
<p
class=
"o_view_nocontent_smiling_face"
>
[History Big Package] Not yet! Click the Create button in the top left corner and the sofa is yours!
</p>
<p>
</p>
</field>
</record>
<!-- <record id="big_package_add_exception_info_server_action" model="ir.actions.server">-->
<!-- <field name="name">Batch Add Package Exception Information</field>-->
<!-- <field name="model_id" ref="model_cc_big_package"/>-->
<!-- <field name="binding_model_id" ref="model_cc_big_package"/>-->
<!-- <field name="state">code</field>-->
<!-- <field name="binding_view_types">list</field>-->
<!-- <field name="groups_id" eval="[(4, ref('ccs_base.group_clearance_of_customs_manager'))]"/>-->
<!-- <field name="code">-->
<!-- if records:-->
<!-- action = records.action_package_exception_info()-->
<!-- </field>-->
<!-- </record>-->
<!-- <record id="action_cc_big_package_server" model="ir.actions.server">-->
<!-- <field name="name">全部航班</field>-->
<!-- <field name="model_id" ref="model_cc_big_package"/>-->
<!-- <field name="state">code</field>-->
<!-- <field name="code">-->
<!-- action = model.action_cc_big_package()-->
<!-- </field>-->
<!-- </record>-->
<!-- <menuitem id="menu_cc_big_package" name="Big Package" action="action_cc_big_package_server" sequence="13"/>-->
</odoo>
\ No newline at end of file
ccs_base/views/cc_history_package_good_view.xml
0 → 100644
浏览文件 @
e45e94d5
<?xml version="1.0" encoding="utf-8" ?>
<odoo>
# ---------- History Package Good ------------
<record
model=
"ir.ui.view"
id=
"tree_cc_history_package_good_view"
>
<field
name=
"name"
>
tree.cc.history.package.good
</field>
<field
name=
"model"
>
cc.history.package.good
</field>
<field
name=
"arch"
type=
"xml"
>
<tree
string=
"Package Good"
decoration-warning=
"is_cancel==True"
>
<!-- # decoration-muted="opening_debit == 0 and opening_credit == 0" 根据条件显示每行的颜色 muted-->
<field
optional=
"hide"
name=
"item_id"
/>
<field
optional=
"show"
name=
"sku_id"
string=
"SKU ID"
/>
<field
optional=
"show"
name=
"item_name_en"
/>
<field
optional=
"show"
name=
"item_name_cn"
/>
<field
optional=
"hide"
name=
"item_type"
/>
<field
optional=
"hide"
name=
"origin_country"
/>
<field
optional=
"hide"
name=
"freight"
/>
<field
optional=
"hide"
name=
"weight"
/>
<field
optional=
"hide"
name=
"quantity_unit"
/>
<field
optional=
"hide"
name=
"quantity"
/>
<field
optional=
"show"
name=
"item_total_price"
/>
<field
optional=
"hide"
name=
"item_link"
/>
<field
optional=
"hide"
name=
"bl_id"
/>
<field
optional=
"hide"
name=
"bl_line_id"
string=
"Ship Package"
/>
<field
optional=
"hide"
name=
"export_hs_code"
/>
<field
optional=
"hide"
name=
"import_hs_code"
/>
<field
optional=
"hide"
name=
"currency_id"
string=
"Currency"
/>
<field
optional=
"hide"
name=
"cod_amount"
widget=
"monetary"
options=
"{'currency_field': 'currency_id'}"
/>
<field
optional=
"show"
name=
"declare_price"
widget=
"monetary"
options=
"{'currency_field': 'currency_id'}"
/>
<field
optional=
"show"
name=
"item_vat"
string=
"Item VAT"
widget=
"monetary"
options=
"{'currency_field': 'currency_id'}"
/>
<field
optional=
"show"
name=
"vat_rate"
/>
<field
optional=
"hide"
name=
"actual_tax_currency"
/>
<field
optional=
"show"
name=
"actual_gst"
/>
<field
optional=
"hide"
name=
"actual_gst_rate"
/>
<field
optional=
"show"
name=
"actual_tax"
/>
<field
optional=
"hide"
name=
"actual_tax_rate"
/>
<field
optional=
"show"
name=
"actual_vat"
/>
<field
optional=
"hide"
name=
"actual_vat_rate"
/>
<field
optional=
"show"
name=
"item_tax_status"
/>
<field
optional=
"hide"
name=
"is_cancel"
string=
"Cancelled"
/>
</tree>
</field>
</record>
<record
model=
"ir.ui.view"
id=
"form_cc_history_package_good_view"
>
<field
name=
"name"
>
form.cc.history.package.good
</field>
<field
name=
"model"
>
cc.history.package.good
</field>
<field
name=
"arch"
type=
"xml"
>
<form
string=
"Package Good"
>
<header>
<field
name=
"item_tax_status"
widget=
"statusbar"
/>
</header>
<sheet>
<widget
name=
"web_ribbon"
bg_color=
"bg-warning"
title=
"Cancelled"
attrs=
"{'invisible': [('is_cancel', '=', False)]}"
/>
<label
for=
"item_id"
/>
<h1>
<field
name=
"item_id"
/>
</h1>
<group>
<field
name=
"bl_id"
/>
<field
name=
"bl_line_id"
string=
"Ship Package"
/>
<field
name=
"is_cancel"
string=
"Is Cancel"
/>
</group>
<group>
<group
string=
"Base Info"
>
<field
name=
"sku_id"
string=
"SKU ID"
/>
<field
name=
"item_name_en"
/>
<field
name=
"item_name_cn"
/>
<field
name=
"item_type"
/>
<field
name=
"origin_country"
/>
<field
name=
"freight"
/>
<field
name=
"weight"
/>
<field
name=
"quantity_unit"
/>
<field
name=
"quantity"
/>
<field
name=
"item_total_price"
/>
<field
name=
"item_link"
/>
</group>
<group
string=
"CC Info"
>
<field
name=
"export_hs_code"
/>
<field
name=
"import_hs_code"
/>
<field
name=
"currency_id"
string=
"Currency"
/>
<field
name=
"cod_amount"
/>
<field
name=
"declare_price"
/>
<field
name=
"item_vat"
string=
"Item VAT"
/>
<field
name=
"vat_rate"
/>
<field
name=
"actual_gst"
/>
<field
name=
"actual_gst_rate"
/>
<field
name=
"actual_tax"
/>
<field
name=
"actual_tax_currency"
/>
<field
name=
"actual_tax_rate"
/>
<field
name=
"actual_vat"
/>
<field
name=
"actual_vat_rate"
/>
</group>
</group>
<notebook>
</notebook>
</sheet>
</form>
</field>
</record>
<record
model=
"ir.ui.view"
id=
"search_cc_history_package_good_view"
>
<field
name=
"name"
>
search.cc.history.package.good
</field>
<field
name=
"model"
>
cc.history.package.good
</field>
<field
name=
"arch"
type=
"xml"
>
<search
string=
"Package Good"
>
<field
name=
"item_name_en"
string=
"Search"
filter_domain=
"['|', ('item_id', 'ilike', self)'|', ('sku_id', 'ilike', self)'|', ('item_name_en', 'ilike', self), ('item_name_cn', 'ilike', self)]"
/>
<separator/>
<field
name=
"item_id"
/>
<field
name=
"sku_id"
string=
"SKU ID"
/>
<field
name=
"item_name_en"
/>
<field
name=
"item_name_cn"
/>
<field
name=
"item_type"
/>
<field
name=
"origin_country"
/>
<field
name=
"freight"
/>
<field
name=
"weight"
/>
<field
name=
"quantity_unit"
/>
<field
name=
"quantity"
/>
<field
name=
"item_total_price"
/>
<field
name=
"item_link"
/>
<field
name=
"bl_id"
/>
<field
name=
"bl_line_id"
string=
"Ship Package"
/>
<field
name=
"export_hs_code"
/>
<field
name=
"import_hs_code"
/>
<field
name=
"currency_id"
string=
"Currency"
/>
<field
name=
"cod_amount"
/>
<field
name=
"declare_price"
/>
<field
name=
"item_vat"
string=
"Item VAT"
/>
<field
name=
"vat_rate"
/>
<field
name=
"actual_gst"
/>
<field
name=
"actual_gst_rate"
/>
<field
name=
"actual_tax"
/>
<field
name=
"actual_tax_currency"
/>
<field
name=
"actual_tax_rate"
/>
<field
name=
"actual_vat"
/>
<field
name=
"actual_vat_rate"
/>
<field
name=
"item_tax_status"
/>
<separator/>
<separator/>
<group
expand=
"0"
string=
"Group By"
>
<filter
domain=
"[]"
name=
"groupby_item_type"
string=
"Good Type"
context=
"{'group_by': 'item_type'}"
/>
<filter
domain=
"[]"
name=
"groupby_bl_id"
string=
"Bill of Loading"
context=
"{'group_by': 'bl_id'}"
/>
<filter
domain=
"[]"
name=
"groupby_bl_line_id"
string=
"Ship Package"
context=
"{'group_by': 'bl_line_id'}"
/>
<filter
domain=
"[]"
name=
"groupby_currency_id"
string=
"Currency"
context=
"{'group_by': 'currency_id'}"
/>
<filter
domain=
"[]"
name=
"groupby_item_tax_status"
string=
"Tax Status"
context=
"{'group_by': 'item_tax_status'}"
/>
</group>
<searchpanel>
<field
icon=
"fa-users"
select=
"multi"
name=
"item_type"
/>
<field
icon=
"fa-users"
select=
"multi"
name=
"item_tax_status"
/>
</searchpanel>
</search>
</field>
</record>
<record
model=
"ir.actions.act_window"
id=
"action_cc_history_package_good"
>
<field
name=
"name"
>
History Package Good
</field>
<field
name=
"res_model"
>
cc.history.package.good
</field>
<field
name=
"view_mode"
>
tree,form,pivot,graph
</field>
<field
name=
"domain"
>
[]
</field>
<field
name=
"context"
>
{}
</field>
<field
name=
"help"
type=
"html"
>
<p
class=
"o_view_nocontent_smiling_face"
>
[History Package Good] Not yet! Click the Create button in the top left corner and the sofa is yours!
</p>
<p>
</p>
</field>
</record>
</odoo>
\ No newline at end of file
ccs_base/views/cc_history_package_sync_log_view.xml
0 → 100644
浏览文件 @
e45e94d5
<?xml version="1.0" encoding="utf-8"?>
<odoo>
# ---------- CC History Package Sync Log ------------
<record
model=
"ir.ui.view"
id=
"tree_cc_history_package_sync_log_view"
>
<field
name=
"name"
>
tree.cc.history.package.sync.log
</field>
<field
name=
"model"
>
cc.history.package.sync.log
</field>
<field
name=
"arch"
type=
"xml"
>
<tree
string=
"CC History Package Sync Log"
>
<field
optional=
"show"
name=
"package_id"
/>
<field
optional=
"show"
name=
"api_customer"
/>
<field
optional=
"show"
name=
"process_code"
/>
<field
optional=
"show"
name=
"operate_time"
/>
<field
optional=
"show"
name=
"operate_user"
/>
<field
optional=
"show"
name=
"sync_time"
/>
</tree>
</field>
</record>
<record
model=
"ir.ui.view"
id=
"form_cc_history_package_sync_log_view"
>
<field
name=
"name"
>
form.cc.history.package.sync.log
</field>
<field
name=
"model"
>
cc.history.package.sync.log
</field>
<field
name=
"arch"
type=
"xml"
>
<form
string=
"CC History Package Sync Log"
>
<sheet>
<group>
<group>
<field
name=
"package_id"
/>
<field
name=
"api_customer"
/>
<field
name=
"process_code"
/>
<field
name=
"operate_time"
/>
<field
name=
"operate_user"
/>
<field
name=
"sync_time"
/>
</group>
<group>
</group>
</group>
<notebook>
<page
string=
"Operate Remark"
>
<field
name=
"operate_remark"
/>
</page>
</notebook>
</sheet>
</form>
</field>
</record>
<record
model=
"ir.ui.view"
id=
"search_cc_history_package_sync_log_view"
>
<field
name=
"name"
>
search.cc.history.package.sync.log
</field>
<field
name=
"model"
>
cc.history.package.sync.log
</field>
<field
name=
"arch"
type=
"xml"
>
<search
string=
"CC Ship Package Sync Log"
>
<field
name=
"package_id"
/>
<field
name=
"api_customer"
/>
<field
name=
"process_code"
/>
<field
name=
"operate_time"
/>
<field
name=
"operate_user"
/>
<field
name=
"sync_time"
/>
<separator/>
<filter
name=
"filter_operate_time"
string=
"Operate Time"
date=
"operate_time"
/>
<filter
name=
"filter_sync_time"
string=
"Sync Time"
date=
"sync_time"
/>
<separator/>
<group
expand=
"0"
string=
"Group By"
>
<filter
domain=
"[]"
name=
"groupby_package_id"
string=
"Ship Package"
context=
"{'group_by': 'package_id'}"
/>
<filter
domain=
"[]"
name=
"groupby_operate_user"
string=
"Operate User"
context=
"{'group_by': 'operate_user'}"
/>
</group>
</search>
</field>
</record>
<record
model=
"ir.actions.act_window"
id=
"action_cc_history_package_sync_log"
>
<field
name=
"name"
>
CC History Package Sync Log
</field>
<field
name=
"res_model"
>
cc.history.package.sync.log
</field>
<field
name=
"view_mode"
>
tree
</field>
<field
name=
"domain"
>
[]
</field>
<field
name=
"context"
>
{}
</field>
<field
name=
"help"
type=
"html"
>
<p
class=
"o_view_nocontent_smiling_face"
>
[CC History Package Sync Log] Not yet! Click the Create button in the top left corner and the sofa is yours!
</p>
<p>
</p>
</field>
</record>
</odoo>
\ No newline at end of file
ccs_base/views/cc_history_ship_package_view.xml
0 → 100644
浏览文件 @
e45e94d5
<?xml version="1.0" encoding="UTF-8" ?>
<odoo>
<record
model=
"ir.ui.view"
id=
"tree_cc_history_ship_package_view"
>
<field
name=
"name"
>
tree.cc.history.ship.package
</field>
<field
name=
"model"
>
cc.history.ship.package
</field>
<field
name=
"arch"
type=
"xml"
>
<tree
string=
"Ship Package"
decoration-warning=
"is_cancel==True"
>
<field
optional=
"show"
name=
"state"
string=
"Progress"
widget=
"badge"
decoration-info=
"1 == 1"
/>
<field
optional=
"show"
name=
"process_time"
/>
<field
optional=
"show"
name=
"tracking_no"
string=
"Tracking No."
/>
<field
optional=
"show"
name=
"trade_no"
/>
<field
optional=
"show"
name=
"customer_id"
/>
<field
optional=
"hide"
name=
"user_track_note"
/>
<field
optional=
"hide"
name=
"container_no"
/>
<field
optional=
"hide"
name=
"customer_ref"
/>
<field
optional=
"hide"
name=
"company_code"
/>
<field
optional=
"hide"
name=
"internal_account_number"
/>
<field
optional=
"hide"
name=
"create_date"
/>
<field
optional=
"show"
name=
"logistic_order_no"
/>
<field
optional=
"hide"
name=
"buyer_region"
/>
<field
optional=
"show"
name=
"big_package_no"
string=
"Big Package No"
/>
<field
optional=
"hide"
name=
"big_package_id"
string=
"Big Package"
/>
<field
optional=
"show"
name=
"bl_id"
string=
"Bill of Loading"
/>
<field
optional=
"show"
name=
"gross_weight"
/>
<field
optional=
"show"
name=
"weight_unit"
/>
<field
optional=
"hide"
name=
"currency_id"
invisible=
"1"
/>
<field
optional=
"hide"
name=
"currency"
/>
<field
optional=
"show"
name=
"total_value"
string=
"TOTAL VALUE"
widget=
"monetary"
options=
"{'currency_field': 'currency_id'}"
/>
<field
optional=
"show"
name=
"sender_country"
/>
<field
optional=
"hide"
name=
"sender_city"
/>
<field
optional=
"hide"
name=
"sender_state"
/>
<field
optional=
"show"
name=
"sender_name"
/>
<field
optional=
"hide"
name=
"sender_phone"
/>
<field
optional=
"hide"
name=
"sender_postcode"
/>
<field
optional=
"hide"
name=
"sender_vat_no"
/>
<field
optional=
"hide"
name=
"sender_add_1"
/>
<field
optional=
"hide"
name=
"sender_add_2"
/>
<field
optional=
"hide"
name=
"sender_add_3"
/>
<field
optional=
"show"
name=
"receiver_type"
/>
<field
optional=
"hide"
name=
"receiver_vat_no"
/>
<field
optional=
"show"
name=
"receiver_name"
/>
<field
optional=
"hide"
name=
"receiver_phone"
/>
<field
optional=
"hide"
name=
"receiver_email"
/>
<field
optional=
"hide"
name=
"receiver_county"
/>
<field
optional=
"show"
name=
"receiver_county_translate"
/>
<field
optional=
"hide"
name=
"receiver_city"
/>
<field
optional=
"hide"
name=
"receiver_postcode"
/>
<field
optional=
"hide"
name=
"receiver_add_1"
/>
<field
optional=
"hide"
name=
"receiver_add_2"
/>
<field
optional=
"hide"
name=
"receiver_add_3"
/>
<field
optional=
"hide"
name=
"actual_currency_id"
invisible=
"1"
/>
<field
optional=
"show"
name=
"actual_tax_currency"
string=
"Actual Tax Currency"
/>
<field
optional=
"show"
name=
"actual_gst"
string=
"Actual GST"
widget=
"monetary"
options=
"{'currency_field': 'actual_currency_id'}"
/>
<field
optional=
"show"
name=
"actual_tax"
string=
"Actual Tax"
widget=
"monetary"
options=
"{'currency_field': 'actual_currency_id'}"
/>
<field
optional=
"hide"
name=
"actual_tax_date"
string=
"Actual Tax Date"
/>
<field
optional=
"show"
name=
"actual_vat"
string=
"Actual VAT"
widget=
"monetary"
options=
"{'currency_field': 'actual_currency_id'}"
/>
<field
optional=
"show"
name=
"actual_tax_tz"
string=
"Actual Tax Timezone"
/>
<field
optional=
"show"
name=
"is_cancel"
/>
<field
optional=
"hide"
name=
"cancel_reason"
string=
"Cancel Reason"
/>
<field
optional=
"hide"
name=
"next_provider_name"
string=
"Next Provider"
/>
</tree>
</field>
</record>
<record
model=
"ir.ui.view"
id=
"form_cc_history_ship_package_view"
>
<field
name=
"name"
>
form.cc.history.ship.package
</field>
<field
name=
"model"
>
cc.history.ship.package
</field>
<field
name=
"arch"
type=
"xml"
>
<form
string=
"Ship Package"
>
<header>
<field
name=
"state"
string=
"Progress Status"
widget=
"statusbar"
/>
</header>
<sheet>
<widget
name=
"web_ribbon"
bg_color=
"bg-warning"
title=
"Cancelled"
attrs=
"{'invisible': [('is_cancel', '=', False)]}"
/>
<label
for=
"tracking_no"
/>
<h1>
<field
name=
"tracking_no"
readonly=
"True"
/>
</h1>
<group>
<field
name=
"customer_id"
/>
<field
name=
"big_package_no"
string=
"Big Package No"
invisible=
"1"
/>
<field
name=
"big_package_id"
string=
"Big Package"
/>
<field
name=
"bl_id"
string=
"Bill of Loading"
/>
<field
name=
"next_provider_name"
string=
"Next Provider Name"
/>
<field
name=
"exception_info_ids"
readonly=
"1"
widget=
"many2many_tags"
/>
<field
name=
"process_time"
readonly=
"1"
/>
</group>
<group>
<group
string=
"base_info"
>
<field
name=
"tracking_no"
string=
"Tracking No."
/>
<field
name=
"trade_no"
/>
<field
name=
"user_track_note"
/>
<field
name=
"container_no"
/>
<field
name=
"customer_ref"
/>
<field
name=
"company_code"
string=
"Company Code"
/>
<field
name=
"internal_account_number"
/>
<field
name=
"logistic_order_no"
/>
<field
name=
"buyer_region"
string=
"Buyer Region"
/>
<field
name=
"node_exception_reason_id"
readonly=
"1"
attrs=
"{'invisible':[('node_exception_reason_id','=',False)]}"
/>
</group>
<group
string=
"CC info"
>
<field
name=
"gross_weight"
/>
<field
name=
"weight_unit"
/>
<field
name=
"currency_id"
invisible=
"1"
/>
<field
name=
"currency"
/>
<field
name=
"total_value"
string=
"TOTAL VALUE"
widget=
"monetary"
options=
"{'currency_field': 'currency_id'}"
/>
<separator/>
<field
name=
"actual_tax_currency"
string=
"Actual Tax Currency"
/>
<field
name=
"actual_currency_id"
invisible=
"1"
/>
<field
name=
"actual_gst"
string=
"Actual GST"
widget=
"monetary"
options=
"{'currency_field': 'actual_currency_id'}"
/>
<field
name=
"actual_tax"
string=
"Actual Tax"
widget=
"monetary"
options=
"{'currency_field': 'actual_currency_id'}"
/>
<field
name=
"actual_tax_date"
string=
"Actual Tax Date"
/>
<field
name=
"actual_vat"
string=
"Actual VAT"
widget=
"monetary"
options=
"{'currency_field': 'actual_currency_id'}"
/>
<field
name=
"actual_tax_tz"
string=
"Actual Tax Timezone"
/>
</group>
</group>
<group>
</group>
<notebook>
<page
string=
"Goods"
>
<field
name=
"good_ids"
string=
"Goods"
/>
</page>
<page
string=
"Invoice Attachments"
>
<field
name=
"invoice_attachment_ids"
string=
"Invoice Attachments"
widget=
"many2many_binary"
/>
</page>
<page
string=
"Sender Info"
>
<group>
<field
name=
"sender_name"
string=
"NAME"
/>
<field
name=
"sender_phone"
string=
"PHONE"
/>
<field
name=
"sender_vat_no"
string=
"VAT"
/>
<field
name=
"sender_postcode"
string=
"POSTCODE"
/>
<field
name=
"sender_country"
string=
"COUNTRY"
/>
<field
name=
"sender_state"
string=
"State"
/>
<field
name=
"sender_city"
string=
"CITY"
/>
<field
name=
"sender_add_1"
string=
"ADD 1"
/>
<field
name=
"sender_add_2"
string=
"ADD 2"
/>
<field
name=
"sender_add_3"
string=
"ADD 3"
/>
</group>
</page>
<page
string=
"Receiver Info"
>
<group>
<field
name=
"receiver_name"
string=
"NAME"
/>
<field
name=
"receiver_phone"
string=
"PHONE"
/>
<field
name=
"receiver_email"
string=
"EMAIL"
/>
<field
name=
"receiver_type"
string=
"TYPE"
/>
<field
name=
"receiver_vat_no"
string=
"VAT"
/>
<field
name=
"receiver_county"
string=
"COUNTY"
/>
<field
name=
"receiver_county_translate"
string=
"COUNTY(EN)"
/>
<field
name=
"receiver_city"
string=
"CITY"
/>
<field
name=
"receiver_postcode"
string=
"POSTCODE"
/>
<field
name=
"receiver_add_1"
string=
"ADD 1"
/>
<field
name=
"receiver_add_2"
string=
"ADD 2"
/>
<field
name=
"receiver_add_3"
string=
"ADD 3"
/>
</group>
</page>
<page
string=
"Other"
>
<group>
<field
name=
"is_cancel"
/>
<field
name=
"cancel_reason"
string=
"Cancel Reason"
/>
</group>
</page>
<page
string=
"Sync Log"
>
<field
name=
"sync_log_ids"
widget=
"one2many_list"
/>
</page>
</notebook>
</sheet>
<div
class=
"oe_chatter"
>
<field
name=
"message_follower_ids"
/>
<field
name=
"activity_ids"
/>
<field
name=
"message_ids"
options=
"{'post_refresh': 'recipients'}"
/>
</div>
</form>
</field>
</record>
<record
model=
"ir.ui.view"
id=
"search_cc_history_ship_package_view"
>
<field
name=
"name"
>
search.cc.history.ship.package
</field>
<field
name=
"model"
>
cc.history.ship.package
</field>
<field
name=
"arch"
type=
"xml"
>
<search
string=
"Ship Package"
>
<field
name=
"tracking_no"
string=
"Search"
filter_domain=
"['|', ('tracking_no', 'ilike', self), ('trade_no', 'ilike', self)]"
/>
<separator/>
<filter
string=
"Today's ship package"
domain=
"[('create_date', '>=', (datetime.datetime.combine(context_today(), datetime.time(0, 0, 0)).to_utc()).strftime('%Y-%m-%d %H:%M:%S'))
, ('create_date', '<', (datetime.datetime.combine(context_today(), datetime.time(0, 0, 0)).to_utc() + datetime.timedelta(days=1)).strftime('%Y-%m-%d %H:%M:%S'))]"
name=
"today_ship"
/>
<filter
string=
"Yesterday's ship package"
domain=
"[('create_date', '>=', (datetime.datetime.combine(context_today() - datetime.timedelta(days=1), datetime.time(0, 0, 0)).to_utc()).strftime('%Y-%m-%d %H:%M:%S')), ('create_date', '<', (datetime.datetime.combine(context_today(), datetime.time(0, 0, 0)).to_utc()).strftime('%Y-%m-%d %H:%M:%S'))]"
name=
"yesterday_ship"
/>
<filter
string=
"Last 7 days ship package"
domain=
"[('create_date', '>=', (datetime.datetime.combine(context_today() - datetime.timedelta(days=7), datetime.time(0, 0, 0)).to_utc()).strftime('%Y-%m-%d %H:%M:%S')),('create_date', '<', (datetime.datetime.combine(context_today(), datetime.time(0, 0, 0)).to_utc() + datetime.timedelta(days=1)).strftime('%Y-%m-%d %H:%M:%S'))]"
name=
"last_7d"
/>
<filter
string=
"This week ship package"
name=
"this_week_ship"
domain=
"[('create_date', '>=', (datetime.datetime.combine(context_today() + relativedelta(weeks=-1,days=1,weekday=0), datetime.time(0,0,0)).to_utc()).strftime('%Y-%m-%d %H:%M:%S')),
('create_date', '<', (datetime.datetime.combine(context_today() + relativedelta(days=1,weekday=0), datetime.time(0,0,0)).to_utc()).strftime('%Y-%m-%d %H:%M:%S'))]"
/>
<filter
string=
"Last week ship package"
name=
"last_week_ship"
domain=
"[('create_date', '>=', (datetime.datetime.combine(context_today() + relativedelta(weeks=-2,days=1,weekday=0), datetime.time(0,0,0)).to_utc()).strftime('%Y-%m-%d %H:%M:%S')),
('create_date', '<', (datetime.datetime.combine(context_today() + relativedelta(weeks=-1,days=1,weekday=0), datetime.time(0,0,0)).to_utc()).strftime('%Y-%m-%d %H:%M:%S'))]"
/>
<!-- <filter string="This month ship package"-->
<!-- domain="[('create_date', '>=', (datetime.datetime.combine(context_today(), datetime.time(0, 0, 0)).to_utc()).strftime('%Y-%m-01 00:00:00'))]"-->
<!-- name="this_month_ship"/>-->
<!-- <filter string=" Last month ship package"-->
<!-- domain="[('create_date','<', (context_today().replace(day=1)).strftime('%Y-%m-%d 00:00:00')),('create_date','>=',(context_today() -relativedelta(months=1)).replace(day=1).strftime('%Y-%m-%d 00:00:00'))]"-->
<!-- name="last_month_ship"/>-->
<filter
string=
"Last 30 days Ship Package"
domain=
"[('create_date', '>=', (datetime.datetime.combine(context_today() - datetime.timedelta(days=30), datetime.time(0, 0, 0)).to_utc()).strftime('%Y-%m-%d %H:%M:%S')),('create_date', '<', (datetime.datetime.combine(context_today(), datetime.time(0, 0, 0)).to_utc() + datetime.timedelta(days=1)).strftime('%Y-%m-%d %H:%M:%S'))]"
name=
"last_30d"
/>
<separator/>
<field
name=
"tracking_no"
string=
"Tracking No."
/>
<field
name=
"trade_no"
/>
<field
name=
"user_track_note"
/>
<field
name=
"container_no"
/>
<field
name=
"customer_ref"
/>
<field
name=
"company_code"
string=
"Company Code"
/>
<field
name=
"internal_account_number"
/>
<field
name=
"logistic_order_no"
/>
<field
name=
"buyer_region"
/>
<field
name=
"big_package_no"
string=
"Big Package No"
/>
<field
name=
"big_package_id"
string=
"Big Package"
/>
<field
name=
"bl_id"
string=
"Bill of Loading"
/>
<field
name=
"gross_weight"
/>
<field
name=
"weight_unit"
/>
<field
name=
"actual_currency_id"
/>
<field
name=
"currency_id"
/>
<field
name=
"currency"
/>
<field
name=
"total_value"
string=
"TOTAL VALUE"
/>
<field
name=
"sender_city"
/>
<field
name=
"sender_country"
/>
<field
name=
"sender_name"
/>
<field
name=
"sender_phone"
string=
"Sender PHONE"
/>
<field
name=
"sender_postcode"
/>
<field
name=
"sender_state"
/>
<field
name=
"sender_vat_no"
/>
<field
name=
"sender_add_1"
/>
<field
name=
"sender_add_2"
/>
<field
name=
"sender_add_3"
/>
<field
name=
"receiver_type"
/>
<field
name=
"receiver_vat_no"
/>
<field
name=
"receiver_name"
/>
<field
name=
"receiver_phone"
/>
<field
name=
"receiver_email"
/>
<field
name=
"receiver_city"
/>
<field
name=
"receiver_county"
/>
<field
name=
"receiver_county_translate"
/>
<field
name=
"receiver_postcode"
/>
<field
name=
"receiver_add_1"
/>
<field
name=
"receiver_add_2"
/>
<field
name=
"receiver_add_3"
/>
<field
name=
"actual_tax_currency"
string=
"Actual Tax Currency"
/>
<field
name=
"actual_gst"
string=
"Actual GST"
/>
<field
name=
"actual_tax"
string=
"Actual Tax"
/>
<field
name=
"actual_tax_date"
string=
"Actual Tax Date"
/>
<field
name=
"actual_vat"
string=
"Actual VAT"
/>
<field
name=
"actual_tax_tz"
string=
"Actual Tax Timezone"
/>
<field
name=
"state"
string=
"Progress Status"
/>
<field
name=
"is_cancel"
/>
<field
name=
"cancel_reason"
string=
"Cancel Reason"
/>
<field
name=
"next_provider_name"
string=
"Next Provider Name"
/>
<separator/>
<filter
name=
"filter_no_bl"
string=
"No Bill of Loading"
domain=
"[('bl_id','=',False)]"
/>
<separator/>
<!-- # 增加包裹货值大于135英镑的筛选条件-->
<filter
name=
"filter_value_gt_135"
string=
"Value > 135"
domain=
"[('total_value','>',135)]"
/>
<separator/>
<filter
name=
"filter_is_cancel"
string=
"Is Cancelled"
domain=
"[('is_cancel','=',True)]"
/>
<filter
name=
"filter_not_cancel"
string=
"Not Show Cancelled"
domain=
"[('is_cancel','=',False)]"
/>
<separator/>
<group
expand=
"0"
string=
"Group By"
>
<filter
domain=
"[]"
name=
"groupby_customer_id"
string=
"From Customer"
context=
"{'group_by': 'customer_id'}"
/>
<filter
domain=
"[]"
name=
"groupby_big_package_id"
string=
"Big Package"
context=
"{'group_by': 'big_package_id'}"
/>
<filter
domain=
"[]"
name=
"groupby_bl_id"
string=
"Bill of Loading"
context=
"{'group_by': 'bl_id'}"
/>
<filter
domain=
"[]"
name=
"groupby_actual_currency_id"
string=
"Currency"
context=
"{'group_by': 'actual_currency_id'}"
/>
<filter
domain=
"[]"
name=
"groupby_currency_id"
string=
"Currency"
context=
"{'group_by': 'currency_id'}"
/>
<filter
domain=
"[]"
name=
"groupby_receiver_type"
string=
"Receiver TYPE"
context=
"{'group_by': 'receiver_type'}"
/>
<filter
domain=
"[]"
name=
"groupby_state"
string=
"Progress state"
context=
"{'group_by': 'state'}"
/>
</group>
<searchpanel>
<field
icon=
"fa-users"
select=
"multi"
name=
"receiver_type"
/>
<field
icon=
"fa-users"
select=
"multi"
name=
"state"
/>
</searchpanel>
</search>
</field>
</record>
<record
model=
"ir.actions.act_window"
id=
"action_cc_history_ship_package"
>
<field
name=
"name"
>
History Ship Package
</field>
<field
name=
"res_model"
>
cc.history.ship.package
</field>
<field
name=
"view_mode"
>
tree,form,search,pivot,graph
</field>
<field
name=
"domain"
>
[]
</field>
<field
name=
"context"
>
{'search_default_last_30d':1}
</field>
<field
name=
"help"
type=
"html"
>
<p
class=
"o_view_nocontent_smiling_face"
>
[History Ship Package] Not yet! Click the Create button in the top left corner and the sofa is yours!
</p>
<p>
</p>
</field>
</record>
<!-- <record id="ship_package_add_exception_info_server_action" model="ir.actions.server">-->
<!-- <field name="name">Batch Add Package Exception Information</field>-->
<!-- <field name="model_id" ref="model_cc_ship_package"/>-->
<!-- <field name="binding_model_id" ref="model_cc_ship_package"/>-->
<!-- <field name="state">code</field>-->
<!-- <field name="binding_view_types">list</field>-->
<!-- <field name="groups_id" eval="[(4, ref('ccs_base.group_clearance_of_customs_manager'))]"/>-->
<!-- <field name="code">-->
<!-- if records:-->
<!-- action = records.action_package_exception_info()-->
<!-- </field>-->
<!-- </record>-->
</odoo>
\ No newline at end of file
ccs_base/views/menu_view.xml
浏览文件 @
e45e94d5
...
...
@@ -51,5 +51,15 @@
<menuitem
sequence=
"20"
name=
"Clearance Company"
id=
"menu_cc_clearance_company"
action=
"action_cc_is_clearance_company"
parent=
"menu_ccs_base_main"
/>
<menuitem
sequence=
"25"
name=
"History Data"
id=
"menu_cc_history_data"
/>
<menuitem
parent=
"menu_cc_history_data"
sequence=
"1"
name=
"History Big Package"
id=
"menu_cc_history_big_package"
action=
"action_cc_history_big_package"
/>
<menuitem
parent=
"menu_cc_history_data"
sequence=
"5"
name=
"History Package Goods"
id=
"menu_cc_history_package_good"
action=
"action_cc_history_package_good"
/>
<menuitem
parent=
"menu_cc_history_data"
sequence=
"3"
name=
"History Ship Package"
id=
"menu_cc_history_ship_package"
action=
"action_cc_history_ship_package"
/>
</data>
</odoo>
\ No newline at end of file
consumers/config.py
浏览文件 @
e45e94d5
...
...
@@ -13,6 +13,14 @@ redis_options = dict(
db
=
0
)
postgresql_options
=
dict
(
host
=
"127.0.0.1"
,
port
=
5431
,
database
=
"hh_ccs_test"
,
user
=
"odoo14"
,
password
=
"qq166349"
,
)
# 测试
# db_ip = "121.199.167.133"
# db_port = "8369"
...
...
consumers/history_data.py
0 → 100644
浏览文件 @
e45e94d5
# coding=utf-8
import
json
import
logging
import
psycopg2
import
redis
from
sqlalchemy
import
create_engine
import
config
from
datetime
import
timedelta
,
datetime
import
pandas
as
pd
# from line_profiler import LineProfiler
# 创建一个 LineProfiler 实例
# profiler = LineProfiler()
# 默认字符gbk
logging
.
basicConfig
(
filename
=
'logs/history_data_logger.log'
,
level
=
logging
.
INFO
)
# 设置文件字符为utf-8
# logging.basicConfig(handlers=[logging.FileHandler('logs/mail_push.log', 'a', 'utf-8')],
# format='%(asctime)s %(levelname)s %(message)s', level=logging.INFO)
class
Order_dispose
(
object
):
def
__init__
(
self
):
print
(
'new connection'
)
postgresql_options
=
config
.
postgresql_options
username
=
postgresql_options
[
'user'
]
password
=
postgresql_options
[
'password'
]
host
=
postgresql_options
[
'host'
]
port
=
postgresql_options
[
'port'
]
database
=
postgresql_options
[
'database'
]
db_url
=
'postgresql+psycopg2://{username}:{password}@{host}:{port}/{database}'
.
format
(
username
=
username
,
password
=
password
,
host
=
host
,
port
=
port
,
database
=
database
)
self
.
conn_engine
=
create_engine
(
db_url
)
self
.
pg_conn
=
psycopg2
.
connect
(
database
=
database
,
user
=
username
,
password
=
password
,
host
=
host
,
port
=
port
)
def
get_init_data
(
self
,
days
):
pg_conn
=
psycopg2
.
connect
(
**
config
.
postgresql_options
)
cursor
=
pg_conn
.
cursor
()
db_handle
=
self
.
conn_engine
current_date
=
datetime
.
today
()
# 计算180天之前的日期
past_date
=
current_date
-
timedelta
(
days
=
days
)
return
pg_conn
,
cursor
,
db_handle
,
past_date
def
history_big_package
(
self
,
db_handle
,
big_package_data
):
"""
创建历史大包数据
:param db_handle:
:param big_package_data: 原大包数据
:return: 历史大包id
"""
# 创建历史大包数据
big_package_vals
=
{
'origin_id'
:
big_package_data
.
id
,
'bl_id'
:
big_package_data
.
bl_id
,
'big_package_no'
:
big_package_data
.
big_package_no
,
'next_provider_name'
:
big_package_data
.
next_provider_name
,
'ship_package_qty'
:
big_package_data
.
ship_package_qty
,
'goods_qty'
:
big_package_data
.
goods_qty
,
'pallet_number'
:
big_package_data
.
pallet_number
,
'pallet_usage_date'
:
big_package_data
.
pallet_usage_date
,
'is_cancel'
:
big_package_data
.
is_cancel
,
'tally_state'
:
big_package_data
.
tally_state
,
'tally_user_id'
:
big_package_data
.
tally_user_id
,
'tally_time'
:
big_package_data
.
tally_time
,
'delivery_user_id'
:
big_package_data
.
delivery_user_id
,
'delivery_time'
:
big_package_data
.
delivery_time
,
# 'exception_info_ids': big_package_data.id,
# exception_info_ids
# goods_ids
# ship_package_ids
}
val_df
=
pd
.
DataFrame
(
big_package_vals
,
index
=
[
0
])
val_df
.
to_sql
(
'cc_history_big_package'
,
con
=
db_handle
,
if_exists
=
'append'
,
index
=
False
)
sql
=
"select id from cc_history_big_package where origin_id=
%
s;"
%
big_package_data
.
id
new_order
=
pd
.
read_sql
(
sql
,
con
=
db_handle
)
# logging.info("new_order:%s" % len(new_order))
history_big_package_id
=
new_order
.
to_dict
()[
'id'
][
0
]
insert_sql
=
'insert into history_bigpackage_exception_info_rel (cc_history_big_package_id, cc_exception_info_id) '
\
'select
%
s, cc_exception_info_id from bigpackage_exception_info_rel where '
\
'cc_big_package_id=
%
s;'
%
(
history_big_package_id
,
big_package_data
.
id
)
pd
.
read_sql
(
insert_sql
,
con
=
db_handle
,
chunksize
=
100
)
return
history_big_package_id
def
history_ship_package
(
self
,
db_handle
,
big_id
,
ship_package_data
):
"""
创建历史小包数据
:param db_handle:
:param ship_package_data: 原小包数据
:param big_id: 历史大包id
:return: 历史小包id
"""
# 创建历史小包数据
history_ship_package_vals
=
{
'customer_id'
:
ship_package_data
.
customer_id
,
'origin_id'
:
ship_package_data
.
id
,
'bl_id'
:
ship_package_data
.
bl_id
,
'big_package_id'
:
big_id
,
'logistic_order_no'
:
ship_package_data
.
logistic_order_no
,
'tracking_no'
:
ship_package_data
.
tracking_no
,
'customer_ref'
:
ship_package_data
.
customer_ref
,
'internal_account_number'
:
ship_package_data
.
internal_account_number
,
'user_track_note'
:
ship_package_data
.
user_track_note
,
'company_code'
:
ship_package_data
.
company_code
,
'trade_no'
:
ship_package_data
.
trade_no
,
'big_package_no'
:
ship_package_data
.
big_package_no
,
'container_no'
:
ship_package_data
.
container_no
,
'buyer_region'
:
ship_package_data
.
buyer_region
,
'next_provider_name'
:
ship_package_data
.
next_provider_name
,
'sender_name'
:
ship_package_data
.
sender_name
,
'sender_vat_no'
:
ship_package_data
.
sender_vat_no
,
'sender_phone'
:
ship_package_data
.
sender_phone
,
'sender_add_1'
:
ship_package_data
.
sender_add_1
,
'sender_add_2'
:
ship_package_data
.
sender_add_2
,
'sender_add_3'
:
ship_package_data
.
sender_add_3
,
'sender_city'
:
ship_package_data
.
sender_city
,
'sender_state'
:
ship_package_data
.
sender_state
,
'sender_postcode'
:
ship_package_data
.
sender_postcode
,
'sender_country'
:
ship_package_data
.
sender_country
,
'receiver_name'
:
ship_package_data
.
receiver_name
,
'receiver_type'
:
ship_package_data
.
receiver_type
,
'receiver_vat_no'
:
ship_package_data
.
receiver_vat_no
,
'receiver_add_1'
:
ship_package_data
.
receiver_add_1
,
'receiver_add_2'
:
ship_package_data
.
receiver_add_2
,
'receiver_add_3'
:
ship_package_data
.
receiver_add_3
,
'receiver_city'
:
ship_package_data
.
receiver_city
,
'receiver_county'
:
ship_package_data
.
receiver_county
,
'receiver_county_translate'
:
ship_package_data
.
receiver_county_translate
,
'receiver_postcode'
:
ship_package_data
.
receiver_postcode
,
'receiver_email'
:
ship_package_data
.
receiver_email
,
'receiver_phone'
:
ship_package_data
.
receiver_phone
,
'gross_weight'
:
ship_package_data
.
gross_weight
,
'weight_unit'
:
ship_package_data
.
weight_unit
,
'currency'
:
ship_package_data
.
currency
,
'currency_id'
:
ship_package_data
.
currency_id
,
'total_value'
:
ship_package_data
.
total_value
,
'shipping_fee'
:
ship_package_data
.
shipping_fee
,
'tax_mark'
:
ship_package_data
.
tax_mark
,
'actual_tax'
:
ship_package_data
.
actual_tax
,
'actual_vat'
:
ship_package_data
.
actual_vat
,
'actual_gst'
:
ship_package_data
.
actual_gst
,
'actual_tax_currency'
:
ship_package_data
.
actual_tax_currency
,
'actual_currency_id'
:
ship_package_data
.
actual_currency_id
,
'actual_tax_date'
:
ship_package_data
.
actual_tax_date
,
'actual_tax_tz'
:
ship_package_data
.
actual_tax_tz
,
'is_cancel'
:
ship_package_data
.
is_cancel
,
'state'
:
ship_package_data
.
state
,
'node_exception_reason_id'
:
ship_package_data
.
node_exception_reason_id
,
'process_time'
:
ship_package_data
.
process_time
,
'cancel_reason'
:
ship_package_data
.
cancel_reason
,
# 'exception_info_ids': ship_package_obj.exception_info_ids,ship_package_data.id
# 'invoice_attachment_ids': ship_package_obj.invoice_attachment_ids,ship_package_data.id
# exception_info_ids
# invoice_attachment_ids
# good_ids
# sync_log_ids
'operation_time'
:
ship_package_data
.
operation_time
,
'state_explain'
:
ship_package_data
.
state_explain
,
'is_sync'
:
ship_package_data
.
is_sync
,
'tk_code'
:
ship_package_data
.
tk_code
,
}
val_df
=
pd
.
DataFrame
(
history_ship_package_vals
,
index
=
[
0
])
val_df
.
to_sql
(
'cc_history_ship_package'
,
con
=
db_handle
,
if_exists
=
'append'
,
index
=
False
)
sql
=
"select id from cc_history_ship_package where origin_id=
%
s;"
%
ship_package_data
.
id
new_order
=
pd
.
read_sql
(
sql
,
con
=
db_handle
)
# logging.info("new_order:%s" % len(new_order))
history_ship_package_id
=
new_order
.
to_dict
()[
'id'
][
0
]
insert_sql
=
'insert into history_package_exception_info_rel (cc_history_ship_package_id, cc_exception_info_id) '
\
'select
%
s, cc_exception_info_id from shippackage_exception_info_rel where '
\
'cc_ship_package_id=
%
s;'
%
(
history_ship_package_id
,
ship_package_data
.
id
)
pd
.
read_sql
(
insert_sql
,
con
=
db_handle
,
chunksize
=
100
)
insert_sql
=
'insert into history_package_invoice_attachment_rel (cc_history_ship_package_id, ir_attachment_id) '
\
'select
%
s, ir_attachment_id from ship_package_invoice_attachment_rel where '
\
'cc_ship_package_id=
%
s;'
%
(
history_ship_package_id
,
ship_package_data
.
id
)
pd
.
read_sql
(
insert_sql
,
con
=
db_handle
,
chunksize
=
100
)
return
history_ship_package_id
def
history_sync_log
(
self
,
db_handle
,
history_ship_package_id
,
ship_package_id
):
"""
创建历史小包日志
:param db_handle:
:param history_ship_package_id: 历史小包id
:param ship_package_id: 原来小包id
:return:
"""
sync_sql
=
"SELECT id, sync_time, api_customer, process_code, operate_time, operate_remark, operate_user FROM cc_ship_package_sync_log WHERE package_id =
%
s;"
sync_log_result_arr
=
pd
.
read_sql
(
sync_sql
,
con
=
db_handle
,
params
=
(
ship_package_id
,))
sync_log_vals_list
=
[]
for
sync_log_result
in
sync_log_result_arr
.
itertuples
():
sync_log_data
=
sync_log_result
# 创建历史小包日志数据
sync_log_vals
=
{
'package_id'
:
history_ship_package_id
,
'sync_time'
:
sync_log_data
.
sync_time
,
'api_customer'
:
sync_log_data
.
api_customer
,
'process_code'
:
sync_log_data
.
process_code
,
'operate_time'
:
sync_log_data
.
operate_time
,
'operate_remark'
:
sync_log_data
.
operate_remark
,
'operate_user'
:
sync_log_data
.
operate_user
,
}
sync_log_vals_list
.
append
(
sync_log_vals
)
if
sync_log_vals_list
:
val_df
=
pd
.
DataFrame
(
sync_log_vals_list
)
val_df
.
to_sql
(
'cc_history_package_sync_log'
,
con
=
db_handle
,
if_exists
=
'append'
,
index
=
False
)
origin_log_ids
=
sync_log_result_arr
[
'id'
]
.
tolist
()
return
origin_log_ids
def
history_package_goods
(
self
,
db_handle
,
ship_package_id
,
history_ship_package_id
,
big_id
,
select_bl_id
):
"""
创建历史小包商品
:param db_handle:
:param ship_package_id: 原小包id
:param history_ship_package_id: 历史小包id
:param big_id: 历史大包id
:param select_bl_id: 原提单id
:return:
"""
# 商品
package_good_sql
=
"""select id, bl_line_id, big_package_id, bl_id, item_id, sku_id,
item_name_cn, item_name_en, export_hs_code, import_hs_code, weight,
quantity, quantity_unit, declare_price, freight, cod_amount, vat_rate,
item_vat, origin_country, item_type, item_total_price, item_link,
item_tax_status, actual_tax, actual_tax_rate, actual_tax_currency,
actual_vat, actual_vat_rate, actual_gst, actual_gst_rate, currency_id,
is_cancel from cc_package_good where bl_line_id=
%
s;"""
%
ship_package_id
package_good_result_arr
=
pd
.
read_sql
(
package_good_sql
,
con
=
db_handle
)
# origin_goods_ids = []
package_good_vals_list
=
[]
for
package_good_data
in
package_good_result_arr
.
itertuples
():
# 创建历史小包商品数据
package_good_vals
=
{
'origin_id'
:
package_good_data
.
id
,
'bl_line_id'
:
history_ship_package_id
,
'big_package_id'
:
big_id
,
'bl_id'
:
select_bl_id
,
'item_id'
:
package_good_data
.
item_id
,
'sku_id'
:
package_good_data
.
sku_id
,
'item_name_cn'
:
package_good_data
.
item_name_cn
,
'item_name_en'
:
package_good_data
.
item_name_en
,
'export_hs_code'
:
package_good_data
.
export_hs_code
,
'import_hs_code'
:
package_good_data
.
import_hs_code
,
'weight'
:
package_good_data
.
weight
,
'quantity'
:
package_good_data
.
quantity
,
'quantity_unit'
:
package_good_data
.
quantity_unit
,
'declare_price'
:
package_good_data
.
declare_price
,
'freight'
:
package_good_data
.
freight
,
'cod_amount'
:
package_good_data
.
cod_amount
,
'vat_rate'
:
package_good_data
.
vat_rate
,
'item_vat'
:
package_good_data
.
item_vat
,
'origin_country'
:
package_good_data
.
origin_country
,
'item_type'
:
package_good_data
.
item_type
,
'item_total_price'
:
package_good_data
.
item_total_price
,
'item_link'
:
package_good_data
.
item_link
,
'item_tax_status'
:
package_good_data
.
item_tax_status
,
'actual_tax'
:
package_good_data
.
actual_tax
,
'actual_tax_rate'
:
package_good_data
.
actual_tax_rate
,
'actual_tax_currency'
:
package_good_data
.
actual_tax_currency
,
'actual_vat'
:
package_good_data
.
actual_vat
,
'actual_vat_rate'
:
package_good_data
.
actual_vat_rate
,
'actual_gst'
:
package_good_data
.
actual_gst
,
'actual_gst_rate'
:
package_good_data
.
actual_gst_rate
,
'currency_id'
:
package_good_data
.
currency_id
,
'is_cancel'
:
package_good_data
.
is_cancel
,
}
package_good_vals_list
.
append
(
package_good_vals
)
if
package_good_vals_list
:
val_df
=
pd
.
DataFrame
(
package_good_vals_list
,
index
=
[
0
])
val_df
.
to_sql
(
'cc_history_package_good'
,
con
=
db_handle
,
if_exists
=
'append'
,
index
=
False
)
origin_goods_ids
=
package_good_result_arr
[
'id'
]
.
tolist
()
return
origin_goods_ids
def
delete_origin_data
(
self
):
pass
# @profiler
def
order_data
(
self
,
data
):
res_data
=
[]
try
:
data
=
json
.
loads
(
data
)
days
=
int
(
data
.
get
(
'history_days'
,
180
))
# 默认180天之前的数据
origin_delete
=
int
(
data
.
get
(
'origin_delete'
,
1
))
# 默认删除原数据
limit_num
=
int
(
data
.
get
(
'history_limit'
,
50
))
# 默认一次同步50个提单
pg_conn
,
cursor
,
db_handle
,
past_date
=
self
.
get_init_data
(
days
)
# 获取历史提单
sql
=
'select id,bl_no from cc_bl where (is_history=False or is_history is null) and create_date <
%
s order by create_date asc limit
%
s;'
result_arr
=
pd
.
read_sql
(
sql
,
con
=
db_handle
,
params
=
(
past_date
,
int
(
limit_num
)))
# sql = 'select id,bl_no from cc_bl where id = 14;'
# result_arr = pd.read_sql(sql, con=db_handle) # , params=(14,)
# 获取查询结果
# delete_order_ids = []
for
res
in
result_arr
.
itertuples
():
select_bl_id
=
res
.
id
# 原提单id
select_bl_no
=
res
.
bl_no
delete_big_ids
=
[]
delete_package_ids
=
[]
delete_good_ids
=
[]
delete_log_ids
=
[]
# 查提单下的所有大包
big_sql
=
'select id,bl_id,big_package_no,next_provider_name,ship_package_qty,goods_qty,'
\
'pallet_number,pallet_usage_date,is_cancel,tally_state,tally_user_id,tally_time,'
\
'delivery_user_id,delivery_time from cc_big_package where bl_id =
%
s;'
big_package_result_arr
=
pd
.
read_sql
(
big_sql
,
con
=
db_handle
,
params
=
(
select_bl_id
,))
for
big_package_data
in
big_package_result_arr
.
itertuples
():
origin_id
=
big_package_data
.
id
# 处理历史大包
history_big_id
=
self
.
history_big_package
(
db_handle
,
big_package_data
)
# 返回历史大包id
delete_big_ids
.
append
(
origin_id
)
# 添加删除大包
# 原大包中的小包
parcel_sql
=
"select * from cc_ship_package where big_package_id=
%
s;"
%
origin_id
ship_package_result_arr
=
pd
.
read_sql
(
parcel_sql
,
con
=
db_handle
)
# 原小包数据
for
ship_package_data
in
ship_package_result_arr
.
itertuples
():
# 处理历史小包
history_ship_package_id
=
self
.
history_ship_package
(
db_handle
,
history_big_id
,
ship_package_data
)
delete_package_ids
.
append
(
ship_package_data
.
id
)
# 添加删除小包
# 处理历史小包推送日志
origin_log_ids
=
self
.
history_sync_log
(
db_handle
,
history_ship_package_id
,
ship_package_data
.
id
)
delete_log_ids
+=
origin_log_ids
# 处理历史小包商品
origin_goods_ids
=
self
.
history_package_goods
(
db_handle
,
ship_package_data
.
id
,
history_ship_package_id
,
history_big_id
,
select_bl_id
)
delete_good_ids
+=
origin_goods_ids
update_sql
=
'update cc_bl set is_history=True where id=
%
s'
%
select_bl_id
pd
.
read_sql
(
update_sql
,
con
=
db_handle
,
chunksize
=
100
)
if
origin_delete
:
# print('delete data')
if
delete_big_ids
:
# 删除原大包
ids
=
'(
%
s)'
%
str
(
delete_big_ids
)[
1
:
-
1
]
delete_big_sql
=
'delete from cc_big_package where id in
%
s'
%
ids
pd
.
read_sql
(
delete_big_sql
,
con
=
db_handle
,
chunksize
=
100
)
if
delete_package_ids
:
# 删除原小包
ids
=
'(
%
s)'
%
str
(
delete_package_ids
)[
1
:
-
1
]
delete_package_sql
=
'delete from cc_ship_package where id in
%
s'
%
ids
pd
.
read_sql
(
delete_package_sql
,
con
=
db_handle
,
chunksize
=
100
)
if
delete_good_ids
:
# 删除原小包商品
ids
=
'(
%
s)'
%
str
(
delete_good_ids
)[
1
:
-
1
]
delete_goods_sql
=
'delete from cc_package_good where id in
%
s'
%
ids
pd
.
read_sql
(
delete_goods_sql
,
con
=
db_handle
,
chunksize
=
100
)
if
delete_log_ids
:
# 删除原小包tiktok日志
ids
=
'(
%
s)'
%
str
(
delete_log_ids
)[
1
:
-
1
]
delete_log_sql
=
'delete from cc_ship_package_sync_log where id in
%
s'
%
ids
pd
.
read_sql
(
delete_log_sql
,
con
=
db_handle
,
chunksize
=
100
)
logging
.
info
(
f
'同步提单:{select_bl_no},删除大包{len(delete_big_ids)}个,删除小包{len(delete_package_ids)}个,删除小包商品{len(delete_good_ids)}个,删除小包日志{len(delete_log_ids)}条'
)
except
Exception
as
ex
:
logging
.
error
(
'create_history_data error:
%
s'
%
str
(
ex
))
# profiler.print_stats(output_unit=1)
return
res_data
try
:
pool
=
redis
.
ConnectionPool
(
**
config
.
redis_options
)
r
=
redis
.
Redis
(
connection_pool
=
pool
)
logging
.
info
(
u'redis连接成功'
)
Order_dispose
=
Order_dispose
()
while
1
:
try
:
result
=
r
.
brpop
(
'history_data_list'
,
0
)
# print(result[1])
data1
=
result
[
1
]
response_data
=
Order_dispose
.
order_data
(
data1
)
except
Exception
as
e
:
logging
.
error
(
e
)
continue
except
Exception
as
e
:
logging
.
error
(
"登录失败:
%
s"
%
e
)
consumers/supervisord_conf/conf.d/history_data.conf
0 → 100644
浏览文件 @
e45e94d5
[
program
:
history_data_consumer_1
]
process_name
=%(
program_name
)
s_
%(
process_num
)
02
d
; 进程名称
directory
= /
mnt
/
extra
-
addons
; 程序的启动目录
command
= /
usr
/
bin
/
python3
/
mnt
/
extra
-
addons
/
history_data
.
py
; 启动命令
autostart
=
true
; 在
supervisord
启动的时候也自动启动
startsecs
=
5
; 启动
5
秒后没有异常退出,就当作已经正常启动了
autorestart
=
true
; 程序异常退出后自动重启
startretries
=
3
; 启动失败自动重试次数,默认是
3
user
=
root
; 用哪个用户启动
numprocs
=
1
; 进程数
redirect_stderr
=
true
; 把
stderr
重定向到
stdout
,默认
false
stdout_logfile_maxbytes
=
20
MB
;
stdout
日志文件大小,默认
50
MB
stdout_logfile_backups
=
20
;
stdout
日志文件备份数
;
stdout
日志文件,需要注意当指定目录不存在时无法正常启动,所以需要手动创建目录(
supervisord
会自动创建日志文件)
stdout_logfile
= /
var
/
log
/
supervisor
/
history_data
.
log
编写
预览
Markdown
格式
0%
重试
或
添加新文件
添加附件
取消
您添加了
0
人
到此讨论。请谨慎行事。
请先完成此评论的编辑!
取消
请
注册
或者
登录
后发表评论