1.销售新增审核状态,选项为已审核和待审核,销售模型新增权限规则:销售总监查看所有的订单,销售经理只能查看自己的订单

2.报价单Form视图新增审核按钮,该按钮只有销售总监可以看到,且确认按钮只有在销售经理审核完才可显示,报价Tree视图新增审核状态
This commit is contained in:
jinling.yang
2023-11-23 17:28:58 +08:00
parent 5292826c72
commit 45d04e1a05
9 changed files with 197 additions and 140 deletions

View File

@@ -35,6 +35,11 @@
<field name="type">功能刀具</field>
</record>
<record id="res_partner_bfm" model="res.partner">
<field name="name">业务平台</field>
<!-- <field name="company_id" ref="base.main_company"/>-->
</record>
<record id="product_functional_tool_sf" model="product.product">
<field name="name">功能刀具</field>
<field name="categ_id" ref="product_category_functional_tool_sf"/>

View File

@@ -6,8 +6,8 @@ import os
from odoo import models, fields, api, _
from odoo.exceptions import ValidationError
from odoo.modules import get_resource_path
# from OCC.Extend.DataExchange import read_step_file
# from OCC.Extend.DataExchange import write_stl_file
from OCC.Extend.DataExchange import read_step_file
from OCC.Extend.DataExchange import write_stl_file
@@ -819,9 +819,9 @@ class ResProductMo(models.Model):
# 将attach的datas内容转为glb文件
def transition_glb_file(self, report_path, code):
# shapes = read_step_file(report_path)
shapes = read_step_file(report_path)
output_file = os.path.join('/tmp', str(code) + '.stl')
# write_stl_file(shapes, output_file, 'binary', 0.03, 0.5)
write_stl_file(shapes, output_file, 'binary', 0.03, 0.5)
# 转化为glb
output_glb_file = os.path.join('/tmp', str(code) + '.glb')
util_path = get_resource_path('sf_base', 'static/util')

View File

@@ -10,7 +10,7 @@
""",
'category': 'sf',
'website': 'https://www.sf.jikimo.com',
'depends': ['sale', 'sale_management', 'web_widget_model_viewer', 'sf_base','sales_team'],
'depends': ['sale', 'sale_management', 'web_widget_model_viewer', 'sf_base'],
'data': [
'security/group_security.xml',
'security/ir.model.access.csv',

View File

@@ -5,8 +5,8 @@ import os
import json
from datetime import datetime
import requests
# from OCC.Extend.DataExchange import read_step_file
# from OCC.Extend.DataExchange import write_stl_file
from OCC.Extend.DataExchange import read_step_file
from OCC.Extend.DataExchange import write_stl_file
from odoo import models, fields, api
from odoo.modules import get_resource_path
from odoo.exceptions import ValidationError, UserError
@@ -93,9 +93,9 @@ class QuickEasyOrder(models.Model):
# 将attach的datas内容转为glb文件
def transition_glb_file(self, report_path, model_code):
# shapes = read_step_file(report_path)
shapes = read_step_file(report_path)
output_file = os.path.join('/tmp', str(model_code) + '.stl')
# write_stl_file(shapes, output_file, 'binary', 0.03, 0.5)
write_stl_file(shapes, output_file, 'binary', 0.03, 0.5)
# 转化为glb
output_glb_file = os.path.join('/tmp', str(model_code) + '.glb')
util_path = get_resource_path('sf_base', 'static/util')

View File

@@ -12,6 +12,8 @@ class ReSaleOrder(models.Model):
address_of_delivery = fields.Char('交货人地址')
payments_way = fields.Selection([('现结', '现结'), ('月结', '月结')], '结算方式', default='现结', tracking=True)
pay_way = fields.Selection([('转账', '转账'), ('微信', '微信'), ('支付宝', '支付宝')], '支付方式')
check_status = fields.Selection([('unchecked', '未审核'), ('checked', '已审核')], '审核状态', default='unchecked')
payment_term_id = fields.Many2one(
comodel_name='account.payment.term',
@@ -40,6 +42,10 @@ class ReSaleOrder(models.Model):
})
return order_id
# 审核
def action_check(self):
self.check_status = 'checked'
def get_customer(self):
customer = self.env['res.partner'].search([('name', '=', '业务平台')])
if customer:

View File

@@ -3,7 +3,7 @@
<record model="ir.rule" id="crm_team_rule_salemanager">
<field name="name">销售经理只可以查看本人所在的团队</field>
<field name="model_id" ref="model_crm_team"/>
<field name="domain_force">[(crm_team_member_ids.user_id,'=',user.id)]</field>
<field name="domain_force">[('crm_team_member_ids.user_id','=',user.id)]</field>
<field name="groups" eval="[(4, ref('sf_base.group_sale_salemanager'))]"/>
<field name="perm_read" eval="1"/>
<field name="perm_write" eval="0"/>
@@ -12,12 +12,31 @@
<record model="ir.rule" id="crm_team_rule_director">
<field name="name">销售总监</field>
<field name="model_id" ref="sales_team.model_crm_team"/>
<field name="model_id" ref="model_crm_team"/>
<field name="domain_force">[(1,'=',1)]</field>
<field name="groups" eval="[(4, ref('sf_base.group_sale_director'))]"/>
<field name="perm_read" eval="1"/>
<field name="perm_write" eval="1"/>
<field name="perm_create" eval="1"/>
</record>
<record model="ir.rule" id="sale_order_rule_director">
<field name="name">销售总监查看所有的订单</field>
<field name="model_id" ref="model_sale_order"/>
<field name="domain_force">[(1,'=',1)]</field>
<field name="groups" eval="[(4, ref('sf_base.group_sale_director'))]"/>
<field name="perm_read" eval="1"/>
<field name="perm_write" eval="1"/>
</record>
<record model="ir.rule" id="sale_order_rule_salemanager">
<field name="name">销售经理查看自己的订单</field>
<field name="model_id" ref="model_sale_order"/>
<field name="domain_force">['|',('partner_id','=',user.partner_id.id),('create_uid', '=',user.id)]</field>
<field name="groups" eval="[(4, ref('sf_base.group_sale_salemanager'))]"/>
<field name="perm_read" eval="1"/>
<field name="perm_write" eval="1"/>
<field name="perm_create" eval="1"/>
</record>
</data>
</odoo>

View File

@@ -1,12 +1,12 @@
id,name,model_id:id,group_id:id,perm_read,perm_write,perm_create,perm_unlink
access_quick_easy_order,quick_easy_order,model_quick_easy_order,base.group_system,1,1,1,1
access_sf_auto_quatotion_common,sf_auto_quatotion_common,model_sf_auto_quatotion_common,base.group_system,1,1,1,1
access_sale_order,sale_order,model_sale_order,sf_base.group_sale_salemanager,1,1,1,0
access_sale_order,sale_order,model_sale_order,sf_base.group_sale_director,1,1,1,0
access_sale_order_line,sale_order_line,model_sale_order_line,sf_base.group_sale_salemanager,1,1,1,0
access_sale_order_line,sale_order_line,model_sale_order_line,sf_base.group_sale_director,1,1,1,0
access_crm_team,crm_team,sales_team.model_crm_team,sf_base.group_sale_director,1,1,1,0
access_crm_team_member,crm_team_member,sales_team.model_crm_team_member,sf_base.group_sale_director,1,1,1,0
access_sale_order_manager,sale_order_manager,model_sale_order,sf_base.group_sale_salemanager,1,1,1,0
access_sale_order_director,sale_order_director,model_sale_order,sf_base.group_sale_director,1,1,1,0
access_sale_order_line_manager,sale_order_line_manager,model_sale_order_line,sf_base.group_sale_salemanager,1,1,1,0
access_sale_order_line_director,sale_order_line_director,model_sale_order_line,sf_base.group_sale_director,1,1,1,0
access_crm_team_member_manager,crm_team_manager,sales_team.model_crm_team,sf_base.group_sale_director,1,1,1,0
access_crm_team_member_director,crm_team_member_director,sales_team.model_crm_team_member,sf_base.group_sale_director,1,1,1,0
access_res_users,res_users,base.model_res_users,sf_base.group_sale_director,1,1,1,0
1 id name model_id:id group_id:id perm_read perm_write perm_create perm_unlink
2 access_quick_easy_order quick_easy_order model_quick_easy_order base.group_system 1 1 1 1
3 access_sf_auto_quatotion_common sf_auto_quatotion_common model_sf_auto_quatotion_common base.group_system 1 1 1 1
4 access_sale_order access_sale_order_manager sale_order sale_order_manager model_sale_order sf_base.group_sale_salemanager 1 1 1 0
5 access_sale_order access_sale_order_director sale_order sale_order_director model_sale_order sf_base.group_sale_director 1 1 1 0
6 access_sale_order_line access_sale_order_line_manager sale_order_line sale_order_line_manager model_sale_order_line sf_base.group_sale_salemanager 1 1 1 0
7 access_sale_order_line access_sale_order_line_director sale_order_line sale_order_line_director model_sale_order_line sf_base.group_sale_director 1 1 1 0
8 access_crm_team access_crm_team_member_manager crm_team crm_team_manager sales_team.model_crm_team sf_base.group_sale_director 1 1 1 0
9 access_crm_team_member access_crm_team_member_director crm_team_member crm_team_member_director sales_team.model_crm_team_member sf_base.group_sale_director 1 1 1 0
10 access_res_users res_users base.model_res_users sf_base.group_sale_director 1 1 1 0
11
12

View File

@@ -7,6 +7,25 @@
<field name="model">sale.order</field>
<field name="inherit_id" ref="sale.view_order_form"/>
<field name="arch" type="xml">
<xpath expr="//form/header/button[@name='action_confirm']" position="after">
<field name="check_status" invisible="1"/>
<button name="action_check" string="审核" type="object"
attrs="{'invisible': [('check_status','=', 'checked')]}"
class="oe_highlight"/>
</xpath>
<xpath expr="//form/header/button[@name='action_check']" position="attributes">
<attribute name="groups">sf_base.group_sale_director</attribute>
</xpath>
<xpath expr="//form/header/button[@name='action_confirm'][1]" position="attributes">
<attribute name="attrs">{'invisible': [('check_status', '=', 'unchecked'),('state', 'not in',
['sent'])]}
</attribute>
</xpath>
<xpath expr="//form/header/button[@name='action_confirm'][2]" position="attributes">
<attribute name="attrs">{'invisible': [('check_status', '=', 'unchecked'),('state', 'in',
['draft'])]}
</attribute>
</xpath>
<field name="payment_term_id" position="after">
<field name="deadline_of_delivery"/>
<field name="payments_way"/>
@@ -28,6 +47,7 @@
<field name="model">sale.order</field>
<field name="inherit_id" ref="sale_management.sale_order_form_quote"/>
<field name="arch" type="xml">
<field name="date_order" position="attributes">
<attribute name="string">下单日期</attribute>
</field>
@@ -57,6 +77,10 @@
<field name="create_date" position="attributes">
<attribute name="string">下单时间</attribute>
</field>
<field name="state" position="after">
<field name="check_status" widget="label_selection"
options="{'classes': {'unchecked':'warning','checked': 'success'}}"/>
</field>
</field>
</record>

View File

@@ -1,142 +1,145 @@
<?xml version="1.0" encoding="UTF-8"?>
<odoo>
<menuitem id="sale.sale_menu_root"
name="Sales"
web_icon="sale_management,static/description/icon.svg"
active="False"
sequence="30">
<menuitem id="sale_order_menu"
name="Orders"
sequence="10">
<menuitem id="menu_sale_quotations"
action="action_quotations_with_onboarding"
groups="sales_team.group_sale_salesman"
sequence="10"/>
<menuitem id="menu_sale_order"
name="Orders"
action="action_orders"
groups="sales_team.group_sale_salesman"
sequence="20"/>
<menuitem id="report_sales_team"
name="Sales Teams"
action="sales_team.crm_team_action_sales"
groups="sales_team.group_sale_manager"
sequence="30"/>
<menuitem id="res_partner_menu"
action="account.res_partner_action_customer"
groups="sales_team.group_sale_salesman"
sequence="40"/>
</menuitem>
<menuitem id="menu_sale_invoicing"
name="To Invoice"
groups="sales_team.group_sale_salesman"
sequence="20">
<menuitem id="menu_sale_order_invoice"
action="action_orders_to_invoice"
sequence="10"/>
<menuitem id="menu_sale_order_upselling"
action="action_orders_upselling"
sequence="20"/>
</menuitem>
<menuitem id="product_menu_catalog"
name="Products"
groups="sales_team.group_sale_salesman"
sequence="30">
<menuitem id="menu_product_template_action"
action="product_template_action"
sequence="10"/>
<menuitem id="menu_products"
action="product.product_normal_action_sell"
groups="product.group_product_variant"
sequence="20"/>
<menuitem id="menu_product_pricelist_main"
name="Pricelists"
action="product.product_pricelist_action2"
groups="product.group_product_pricelist"
sequence="30"/>
</menuitem>
<menuitem id="menu_sale_report"
name="Reporting"
action="action_order_report_all"
groups="sales_team.group_sale_manager"
sequence="40"/>
<menuitem id="menu_sale_config"
name="Configuration"
groups="sales_team.group_sale_manager"
sequence="50">
groups="sales_team.group_sale_manager,sf_base.group_sale_salemanager,sf_base.group_sale_director"
sequence="50"/>
<menuitem id="menu_sale_general_settings"
name="Settings"
sequence="10"
action="action_sale_config_settings"
groups="base.group_system"/>
<!-- <record id="sale.sale_menu_root" model="ir.ui.menu">-->
<!-- <field name="active" eval="True"/>-->
<!-- </record>-->
<menuitem id="sales_team_config"
name="Sales Teams"
action="sales_team.crm_team_action_config"
sequence="20"/>
<!-- <menuitem id="sale_order_menu"-->
<!-- name="Orders"-->
<!-- sequence="10">-->
<menuitem id="menu_sales_config"
sequence="30"
name="Sales Orders">
<!-- <menuitem id="menu_sale_quotations"-->
<!-- action="action_quotations_with_onboarding"-->
<!-- groups="sales_team.group_sale_salesman"-->
<!-- sequence="10"/>-->
<menuitem id="menu_tag_config"
name="Tags"
action="sales_team.sales_team_crm_tag_action"
sequence="10"/>
<!-- <menuitem id="menu_sale_order"-->
<!-- name="Orders"-->
<!-- action="action_orders"-->
<!-- groups="sales_team.group_sale_salesman"-->
<!-- sequence="20"/>-->
</menuitem>
<menuitem id="prod_config_main"
name="Products"
sequence="40">
<!-- <menuitem id="report_sales_team"-->
<!-- name="Sales Teams"-->
<!-- action="sales_team.crm_team_action_sales"-->
<!-- groups="sales_team.group_sale_manager"-->
<!-- sequence="30"/>-->
<menuitem id="menu_product_attribute_action"
action="product.attribute_action"
groups="product.group_product_variant"
sequence="10"/>
<!-- <menuitem id="res_partner_menu"-->
<!-- action="account.res_partner_action_customer"-->
<!-- groups="sales_team.group_sale_salesman"-->
<!-- sequence="40"/>-->
</menuitem>
<!-- </menuitem>-->
<menuitem id="next_id_16"
name="Units of Measure"
groups="uom.group_uom"
sequence="50">
<!-- <menuitem id="menu_sale_invoicing"-->
<!-- name="To Invoice"-->
<!-- groups="sales_team.group_sale_salesman"-->
<!-- sequence="20">-->
<menuitem id="menu_product_uom_form_action"
action="uom.product_uom_form_action"
groups="base.group_no_one"
sequence="10"/>
<!-- <menuitem id="menu_sale_order_invoice"-->
<!-- action="action_orders_to_invoice"-->
<!-- sequence="10"/>-->
<menuitem id="menu_product_uom_categ_form_action"
action="uom.product_uom_categ_form_action"
sequence="20"/>
<!-- <menuitem id="menu_sale_order_upselling"-->
<!-- action="action_orders_upselling"-->
<!-- sequence="20"/>-->
</menuitem>
<!-- </menuitem>-->
<menuitem id="sale_menu_config_activity_type"
action="mail_activity_type_action_config_sale"
groups="base.group_no_one"
sequence="60"
/>
</menuitem>
</menuitem>
<!-- <menuitem id="product_menu_catalog"-->
<!-- name="Products"-->
<!-- groups="sales_team.group_sale_salesman"-->
<!-- sequence="30">-->
<!-- <menuitem id="menu_product_template_action"-->
<!-- action="product_template_action"-->
<!-- sequence="10"/>-->
<!-- <menuitem id="menu_products"-->
<!-- action="product.product_normal_action_sell"-->
<!-- groups="product.group_product_variant"-->
<!-- sequence="20"/>-->
<!-- <menuitem id="menu_product_pricelist_main"-->
<!-- name="Pricelists"-->
<!-- action="product.product_pricelist_action2"-->
<!-- groups="product.group_product_pricelist"-->
<!-- sequence="30"/>-->
<!-- </menuitem>-->
<!-- <menuitem id="menu_sale_report"-->
<!-- name="Reporting"-->
<!-- action="action_order_report_all"-->
<!-- groups="sales_team.group_sale_manager"-->
<!-- sequence="40"/>-->
<!-- <menuitem id="menu_sale_config"-->
<!-- name="Configuration"-->
<!-- groups="sales_team.group_sale_manager"-->
<!-- sequence="50">-->
<!-- <menuitem id="menu_sale_general_settings"-->
<!-- name="Settings"-->
<!-- sequence="10"-->
<!-- action="action_sale_config_settings"-->
<!-- groups="base.group_system"/>-->
<!-- <menuitem id="sales_team_config"-->
<!-- name="Sales Teams"-->
<!-- action="sales_team.crm_team_action_config"-->
<!-- sequence="20"/>-->
<!-- <menuitem id="menu_sales_config"-->
<!-- sequence="30"-->
<!-- name="Sales Orders">-->
<!-- <menuitem id="menu_tag_config"-->
<!-- name="Tags"-->
<!-- action="sales_team.sales_team_crm_tag_action"-->
<!-- sequence="10"/>-->
<!-- </menuitem>-->
<!-- <menuitem id="prod_config_main"-->
<!-- name="Products"-->
<!-- sequence="40">-->
<!-- <menuitem id="menu_product_attribute_action"-->
<!-- action="product.attribute_action"-->
<!-- groups="product.group_product_variant"-->
<!-- sequence="10"/>-->
<!-- </menuitem>-->
<!-- <menuitem id="next_id_16"-->
<!-- name="Units of Measure"-->
<!-- groups="uom.group_uom"-->
<!-- sequence="50">-->
<!-- <menuitem id="menu_product_uom_form_action"-->
<!-- action="uom.product_uom_form_action"-->
<!-- groups="base.group_no_one"-->
<!-- sequence="10"/>-->
<!-- <menuitem id="menu_product_uom_categ_form_action"-->
<!-- action="uom.product_uom_categ_form_action"-->
<!-- sequence="20"/>-->
<!-- </menuitem>-->
<!-- <menuitem id="sale_menu_config_activity_type"-->
<!-- action="mail_activity_type_action_config_sale"-->
<!-- groups="base.group_no_one"-->
<!-- sequence="60"-->
<!-- />-->
<!-- </menuitem>-->
<!-- </menuitem>-->
</odoo>