odoo16 销售中订单价格的设置
产品设置好销售价格后,在建销售订单时,却不显价格,需在设置中把价格表选上
不选客户时,价格表显示空白
每次如何设置默认价格呢,如你去改程序或其它法,就不对了,实际应用中,可以在客户中 进行设置,每个客户设定基要用的价格表,并且可以设置时间,不同时间段报价不同哟
今天没看到如何去除可选产品,
<notebook>
<page string="Order Lines" name="order_lines">
<field name="order_line" widget="section_and_note_one2many" mode="tree,kanban" attrs="{'readonly': [('state', 'in', ('done','cancel'))]}">
<form>
<field name="display_type" invisible="1"/>
<!--
We need the sequence field to be here for new lines to be added at the correct position.
TODO: at some point we want to fix this in the framework so that an invisible field is not required.
-->
<field name="sequence" invisible="1"/>
<field name="product_uom_category_id" invisible="1"/>
<group>
<group attrs="{'invisible': [('display_type', '!=', False)]}">
<field name="product_updatable" invisible="1"/>
<field name="product_id" domain="[('sale_ok', '=', True), '|', ('company_id', '=', False), ('company_id', '=', parent.company_id)]" context="{'partner_id':parent.partner_id, 'quantity':product_uom_qty, 'pricelist':parent.pricelist_id, 'uom':product_uom, 'company_id': parent.company_id}" attrs="{ 'readonly': [('product_updatable', '=', False)], 'required': [('display_type', '=', False)], }" force_save="1" widget="many2one_barcode"/>
<field name="product_type" invisible="1"/>
<field name="invoice_status" invisible="1"/>
<field name="qty_to_invoice" invisible="1"/>
<field name="qty_delivered_method" invisible="1"/>
<field name="price_total" invisible="1"/>
<field name="price_tax" invisible="1"/>
<field name="price_subtotal" invisible="1"/>
<field name="product_uom_readonly" invisible="1"/>
<label for="product_uom_qty"/>
<div class="o_row" name="ordered_qty">
<field context="{'partner_id':parent.partner_id, 'quantity':product_uom_qty, 'pricelist':parent.pricelist_id, 'uom':product_uom, 'uom_qty_change':True, 'company_id': parent.company_id}" name="product_uom_qty"/>
<field name="product_uom" invisible="1" groups="!uom.group_uom"/>
<field name="product_uom" force_save="1" groups="uom.group_uom" class="oe_no_button" attrs="{ 'readonly': [('product_uom_readonly', '=', True)], 'required': [('display_type', '=', False)], }"/>
</div>
<label for="qty_delivered" string="Delivered" attrs="{'invisible': [('parent.state', 'not in', ['sale', 'done'])]}"/>
<div name="delivered_qty" attrs="{'invisible': [('parent.state', 'not in', ['sale', 'done'])]}">
<field name="qty_delivered" attrs="{'readonly': [('qty_delivered_method', '!=', 'manual')]}"/>
</div>
<label for="qty_invoiced" string="Invoiced" attrs="{'invisible': [('parent.state', 'not in', ['sale', 'done'])]}"/>
<div name="invoiced_qty" attrs="{'invisible': [('parent.state', 'not in', ['sale', 'done'])]}">
<field name="qty_invoiced" attrs="{'invisible': [('parent.state', 'not in', ['sale', 'done'])]}"/>
</div>
<field name="product_packaging_id" attrs="{'invisible': [('product_id', '=', False)]}" context="{'default_product_id': product_id, 'tree_view_ref':'product.product_packaging_tree_view', 'form_view_ref':'product.product_packaging_form_view'}" groups="product.group_stock_packaging"/>
<field name="price_unit"/>
<field name="tax_id" widget="many2many_tags" options="{'no_create': True}" context="{'search_view_ref': 'account.account_tax_view_search'}" domain="[('type_tax_use','=','sale'), ('company_id','=',parent.company_id), ('country_id', '=', parent.tax_country_id)]" attrs="{'readonly': [('qty_invoiced', '>', 0)]}"/>
<label for="discount" groups="product.group_discount_per_so_line"/>
<div name="discount" groups="product.group_discount_per_so_line">
<field name="discount" class="oe_inline"/> %
</div>
<!--
We need the sequence field to be here
because we want to be able to overwrite the default sequence value in the JS
in order for new lines to be added at the correct position.
NOTE: at some point we want to fix this in the framework so that an invisible field is not required.
-->
<field name="sequence" invisible="1"/>
</group>
<group attrs="{'invisible': [('display_type', '!=', False)]}">
<label for="customer_lead"/>
<div name="lead">
<field name="customer_lead" class="oe_inline"/> days
</div>
<field name="analytic_distribution" widget="analytic_distribution" groups="analytic.group_analytic_accounting" options="{'product_field': 'product_id', 'business_domain': 'sale_order'}"/>
</group>
</group>
<label for="name" string="Description" attrs="{'invisible': [('display_type', '!=', False)]}"/>
<label for="name" string="Section Name (eg. Products, Services)" attrs="{'invisible': [('display_type', '!=', 'line_section')]}"/>
<label for="name" string="Note" attrs="{'invisible': [('display_type', '!=', 'line_note')]}"/>
<field name="name"/>
<div name="invoice_lines" groups="base.group_no_one" attrs="{'invisible': [('display_type', '!=', False)]}">
<label for="invoice_lines"/>
<field name="invoice_lines"/>
</div>
<field name="state" invisible="1"/>
<field name="company_id" invisible="1"/>
</form>
<tree string="Sales Order Lines" editable="bottom">
<control>
<create name="add_product_control" string="Add a product"/>
<create name="add_section_control" string="Add a section" context="{'default_display_type': 'line_section'}"/>
<create name="add_note_control" string="Add a note" context="{'default_display_type': 'line_note'}"/>
</control>
<field name="sequence" widget="handle"/>
<!-- We do not display the type because we don't want the user to be bothered with that information if he has no section or note. -->
<field name="display_type" invisible="1"/>
<field name="product_uom_category_id" invisible="1"/>
<field name="product_type" invisible="1"/>
<field name="product_updatable" invisible="1"/>
<field name="product_id" attrs="{ 'readonly': [('product_updatable', '=', False)], 'required': [('display_type', '=', False)], }" force_save="1" context="{ 'partner_id': parent.partner_id, 'quantity': product_uom_qty, 'pricelist': parent.pricelist_id, 'uom':product_uom, 'company_id': parent.company_id, 'default_lst_price': price_unit, 'default_description_sale': name }" options="{ 'no_open': True, }" domain="[('sale_ok', '=', True), '|', ('company_id', '=', False), ('company_id', '=', parent.company_id)]" widget="sol_product_many2one"/>
<field name="product_template_id" string="Product" invisible="1" attrs="{ 'readonly': [('product_updatable', '=', False)], 'required': [('display_type', '=', False)], }" context="{ 'partner_id': parent.partner_id, 'quantity': product_uom_qty, 'pricelist': parent.pricelist_id, 'uom':product_uom, 'company_id': parent.company_id, 'default_list_price': price_unit, 'default_description_sale': name }" options="{ 'no_open': True, }" domain="[('sale_ok', '=', True), '|', ('company_id', '=', False), ('company_id', '=', parent.company_id)]" widget="sol_product_many2one"/>
<field name="name" widget="section_and_note_text" optional="show"/>
<field name="analytic_distribution" widget="analytic_distribution" optional="hide" groups="analytic.group_analytic_accounting" options="{'product_field': 'product_id', 'business_domain': 'sale_order'}"/>
<field name="product_uom_qty" decoration-info="(not display_type and invoice_status == 'to invoice')" decoration-bf="(not display_type and invoice_status == 'to invoice')" context="{ 'partner_id': parent.partner_id, 'quantity': product_uom_qty, 'pricelist': parent.pricelist_id, 'uom': product_uom, 'company_id': parent.company_id }"/>
<field name="qty_delivered" decoration-info="(not display_type and invoice_status == 'to invoice')" decoration-bf="(not display_type and invoice_status == 'to invoice')" string="Delivered" attrs="{ 'column_invisible': [('parent.state', 'not in', ['sale', 'done'])], 'readonly': [('qty_delivered_method', '!=', 'manual')] }" optional="show"/>
<field name="qty_delivered_method" invisible="1"/>
<field name="qty_invoiced" decoration-info="(not display_type and invoice_status == 'to invoice')" decoration-bf="(not display_type and invoice_status == 'to invoice')" string="Invoiced" attrs="{'column_invisible': [('parent.state', 'not in', ['sale', 'done'])]}" optional="show"/>
<field name="qty_to_invoice" invisible="1"/>
<field name="product_uom_readonly" invisible="1"/>
<field name="product_uom" invisible="1" groups="!uom.group_uom"/>
<field name="product_uom" force_save="1" string="UoM" attrs="{ 'readonly': [('product_uom_readonly', '=', True)], 'required': [('display_type', '=', False)], }" context="{'company_id': parent.company_id}" groups="uom.group_uom" options="{"no_open": True}" optional="show"/>
<field name="customer_lead" optional="hide" attrs="{'readonly': [('parent.state', 'not in', ['draft', 'sent', 'sale'])]}"/>
<field name="product_packaging_qty" attrs="{'invisible': ['|', ('product_id', '=', False), ('product_packaging_id', '=', False)]}" groups="product.group_stock_packaging" optional="show"/>
<field name="product_packaging_id" attrs="{'invisible': [('product_id', '=', False)]}" context="{'default_product_id': product_id, 'tree_view_ref':'product.product_packaging_tree_view', 'form_view_ref':'product.product_packaging_form_view'}" groups="product.group_stock_packaging" optional="show"/>
<field name="price_unit" attrs="{'readonly': [('qty_invoiced', '>', 0)]}"/>
<field name="tax_id" optional="hide" widget="many2many_tags" options="{'no_create': True}" domain="[('type_tax_use','=','sale'),('company_id','=',parent.company_id), ('country_id', '=', parent.tax_country_id)]" context="{'active_test': True}" attrs="{'readonly': [('qty_invoiced', '>', 0)]}"/>
<field name="discount" string="Disc.%" groups="product.group_discount_per_so_line" optional="show" widget="sol_discount"/>
<field name="is_downpayment" invisible="1"/>
<field name="price_subtotal" widget="monetary" groups="account.group_show_line_subtotals_tax_excluded" attrs="{'invisible': [('is_downpayment', '=', True)]}"/>
<field name="price_total" widget="monetary" groups="account.group_show_line_subtotals_tax_included" attrs="{'invisible': [('is_downpayment', '=', True)]}"/>
<field name="state" invisible="1"/>
<field name="invoice_status" invisible="1"/>
<field name="currency_id" invisible="1"/>
<field name="price_tax" invisible="1"/>
<field name="company_id" invisible="1"/>
</tree>
<kanban class="o_kanban_mobile">
<field name="name"/>
<field name="product_id"/>
<field name="product_uom_qty"/>
<field name="product_uom"/>
<field name="price_subtotal"/>
<field name="price_total"/>
<field name="price_tax" invisible="1"/>
<field name="price_total" invisible="1"/>
<field name="price_unit"/>
<field name="display_type"/>
<field name="tax_id" invisible="1"/>
<field name="company_id" invisible="1"/>
<templates>
<t t-name="kanban-box">
<div t-attf-class="oe_kanban_card oe_kanban_global_click ps-0 pe-0 {{ record.display_type.raw_value ? 'o_is_' + record.display_type.raw_value : '' }}">
<t t-if="!record.display_type.raw_value">
<div class="row g-0">
<div class="col-2 pe-3">
<img t-att-src="kanban_image('product.product', 'image_128', record.product_id.raw_value)" t-att-title="record.product_id.value" t-att-alt="record.product_id.value" style="max-width: 100%;"/>
</div>
<div class="col-10">
<div class="row">
<div class="col">
<strong t-out="record.product_id.value"/>
</div>
<div class="col-auto">
<t t-set="line_price" t-value="record.price_subtotal.value" groups="account.group_show_line_subtotals_tax_excluded"/>
<t t-set="line_price" t-value="record.price_total.value" groups="account.group_show_line_subtotals_tax_included"/>
<strong class="float-end text-end" t-out="line_price"/>
</div>
</div>
<div class="row">
<div class="col-12 text-muted">
Quantity:
<t t-out="record.product_uom_qty.value"/> <t t-out="record.product_uom.value"/>
</div>
</div>
<div class="row">
<div class="col-12 text-muted">
Unit Price:
<t t-out="record.price_unit.value"/>
</div>
</div>
</div>
</div>
</t>
<t t-if="record.display_type.raw_value === 'line_section' || record.display_type.raw_value === 'line_note'">
<div class="row">
<div class="col-12">
<t t-out="record.name.value"/>
</div>
</div>
</t>
</div>
</t>
</templates>
</kanban>
</field>
<group name="note_group" col="6" class="mt-2 mt-md-0">
<!--<group colspan="4">-->
<!-- <field colspan="2" name="note" nolabel="1" placeholder="Terms and conditions..."/>-->
<!--</group>-->
<group class="oe_subtotal_footer oe_right" colspan="2" name="sale_total">
<field name="tax_totals" widget="account-tax-totals-field" nolabel="1" colspan="2" readonly="1"/>
</group>
<div class="clearfix"/>
</group>
</page>
<page invisible="1" string="Other Info" name="other_information">
<group>
<group name="sales_person" string="Sales">
<field name="user_id" widget="many2one_avatar_user"/>
<field name="team_id" kanban_view_ref="466" options="{'no_create': True}"/>
<field name="company_id" options="{'no_create': True}" groups="base.group_multi_company"/>
<label for="require_signature" string="Online confirmation"/>
<div>
<field name="require_signature" class="oe_inline"/>
<span>Signature</span>
<field name="require_payment" class="oe_inline ms-3"/>
<span>Payment</span>
</div>
<field name="reference" readonly="1" attrs="{'invisible': [('reference', '=', False)]}"/>
<field name="client_order_ref"/>
<field name="tag_ids" widget="many2many_tags" options="{'color_field': 'color', 'no_create_edit': True}"/>
</group>
<group name="sale_info" string="Invoicing and Payments">
<field name="show_update_fpos" invisible="1"/>
<label for="fiscal_position_id"/>
<div class="o_row">
<field name="fiscal_position_id" options="{'no_create': True}"/>
<button name="action_update_taxes" type="object" string=" Update Taxes" help="Recompute all taxes based on this fiscal position" class="btn-link mb-1 px-0" icon="fa-refresh" confirm="This will update all taxes based on the currently selected fiscal position." attrs="{'invisible': ['|', ('show_update_fpos', '=', False), ('state', 'in', ['sale', 'done','cancel'])]}"/>
</div>
<field name="partner_invoice_id" groups="!account.group_delivery_invoice_address" invisible="1"/>
<field name="analytic_account_id" context="{'default_partner_id':partner_invoice_id, 'default_name':name}" attrs="{'readonly': [('invoice_count','!=',0),('state','=','sale')]}" groups="analytic.group_analytic_accounting" force_save="1"/>
<field name="invoice_status" states="sale,done" groups="base.group_no_one"/>
<!-- test_event_configurator -->
<field name="invoice_status" invisible="1" groups="!base.group_no_one"/>
</group>
</group>
<group>
<group name="sale_shipping">
<label for="commitment_date" string="Delivery Date"/>
<div name="commitment_date_div" class="o_row">
<field name="commitment_date"/>
<span name="expected_date_span" class="text-muted">Expected: <field name="expected_date" class="oe_inline" widget="date"/></span>
</div>
</group>
<group string="Tracking" name="sale_reporting">
<group name="technical" colspan="2" class="mb-0">
<field name="origin"/>
</group>
<group name="utm_link" colspan="2" class="mt-0">
<field name="campaign_id" options="{'create_name_field': 'title', 'always_reload': True}"/>
<field name="medium_id"/>
<field name="source_id"/>
</group>
</group>
</group>
</page>
<!--<page groups="base.group_no_one" string="Customer Signature" name="customer_signature" attrs="{'invisible': [('require_signature', '=', False),('signed_by', '=', False), ('signature', '=', False), ('signed_on', '=', False)]}">-->
<!-- <group>-->
<!-- <field name="signed_by"/>-->
<!-- <field name="signed_on"/>-->
<!-- <field name="signature" widget="image"/>-->
<!-- </group>-->
<!--</page>-->
</notebook>
</sheet>
不常用的功能,因要在手机上显示,直接在数据页进行了修改,效果如上面图所示,简洁使用方便了