Repository
odoo/odoo · module folder
Module version
1.2
Category
Sales/Sales
Folder size
15.37 MB
License
LGPL-3
Application
No
Auto-installable
No
Website
None
Last tracking update
2026-08-20 16:11:46
Authors
Odoo S.A.
Maintainers
Odoo S.A.
Committers
Xavier ALT, Raphael Collet, Thibault Delavallée, Alexis de Lattre, odoo, Josse Colpaert, Odoo Translation Bot, Joren Van Onder, qdp-odoo, Aaron Bohy, Géry Debongnie, Laurent Smet, Alexandre Kühn, Arnold Moyaux, Julien Castiaux, Victor Feyens, Andrea Grazioso (agr-odoo), Julien Mougenot, Anh Thao Pham (pta), svs-odoo, Achraf (abz), Prakash Prajapati, Rémy Voet (ryv), Tiffany Chang (tic), Gorash, Mathieu Duckerts-Antoine, abd-msyukyu-odoo, Arnaud Joset, William Braeckman, Benoit Socias, Miquel Raïch, william-andre, Víctor Martínez, John Laterre (jol), Antoine Vandevenne (anv), Demesmaeker, Aurelien van Delft (avd), luvi, Valentin Chevalier, Renaud Thiry, Julien Banken, Pierrot (prro), jbw-odoo, Habib (ayh), Louis Wicket (wil), alsh-odoo, Maximilien (malb), Victor Piryns (pivi), Gauthier Wala (gawa), Pieter Claeys (clpi), Andrew Gavgavian, clesgow, pash-odoo, Levi Siuzdak (sile), Dylan Kiss (dyki), Antoine Dupuis (andu), Julien Alardot (jual), Valeriya(vchu), Anita (anko), Sarah Bellefroid, Arnaud Sibille, Nicolas Viseur (vin), Walid (wasa), stefanorigano (SRI), Quentin Wolfs, Louis (loti), jorv-odoo, Maxime de Neuville, reka-odoo, yosa-odoo, Mohamed GadAlrab, Julien Carion (juca), kcv-odoo, odoostan, Tanguy Quéguineur, dere-odoo, Lina (liew), Chrysanthe (chgo), sami odoo, Junqi Wu, mano-odoo, hatr-odoo, aamo-odoo, Mathieu Coutant, Patricia Daloze (pda), Xavier Luyckx (xlu), guce, Stéphane Diez, Ryan Cen, dhha-odoo, casp-odoo, Antoine (anso), Manushi Shah, Léo Gizard, Antoine Dupuis, Pierre Pulinckx (PIPU), Hesham Saleh, dija-odoo, Maira Salazar (srma), Smit Patel, st-yes, AhmedElemary57, Trinh Ngoc Hung, David Van Droogenbroeck (DROD), Mohammad Abdulmoneim (abdu), khsr-odoo, Pierre Lamotte (pila), Pierre Pulinckx, Anton Romanova (roan), Bastien PIERRE, Michaël Mattiello, Corentin Heinix (cohe), jeep-odoo, Corentin Lombard, ppat-odoo, Valeriya (vchu), zel-odoo, Shrey Mehta, Carmine, Sherif Gabr, Mahdi Alijani (malj), bona-odoo, plha-odoo, lse-odoo, Thomas Josse (THJO), Krzysztof Magusiak (krma), nipl-odoo, Omar (OSAH), Ajit Singh, Armin-FalDiS, krip-odoo, Basioni (basm), Maeva De Keyser (MDEK), utma-odoo, Tyler Landivar (tylan), nsirjacobs, bhra-odoo, bhna-odoo, defl, aksi-odoo, Lulu Grimalkin (lugr), Yash Pathak, rare-odoo, igbe, Lancelot Semal, Laurent Smet (LAS), path-odoo, Waleed Elgamal, Amr Elkhatieb, Nisarg (nipl), assh-odoo, cro, Elliot ELCO, Leila Kerroum Balaguer, Lionel Piraux (lipi), livaios, YoussefM890, jand-odoo, Merlin Guillaume, Mazen, saurabh, pkri-odoo, Zachary (zavan), Julien (jdeh), mson-odoo, Franco Leyes, Julien Hémono, khaj-odoo, chpa-odoo, Krishna Patel, Romain ROSANO (rros), dabo-odoo, Hembert Iregui, Laura (yanla)
Odoo dependencies
Python dependencies
None
System dependencies
None
Required by
account_banking_mandate_contact, account_invoice_crm_tag, account_invoice_overdue_warn_sale, account_invoice_pricelist_sale, account_invoice_section_sale_order, account_payment_base_oca_sale, account_payment_sale, contract_sale, delivery, ebill_postfinance, edi_sale_oca, l10n_br_sales, l10n_din5008_sale, l10n_ec_sale, l10n_fi_sale, l10n_in_sale, l10n_it_edi_doi, l10n_it_edi_sale, l10n_mx_cfdi_comex, l10n_ro_account_report_invoice, mass_mailing_sale, partner_invoicing_mode, partner_sale_pivot, partnership, pms_sale, portal_sale_list_extra_info, portal_sale_personal_data_only, product_brand, product_class, product_customerinfo_sale, product_form_sale_link, product_pricelist_item_list_view, product_state_sale, product_status, product_template_multi_link, product_variant_sale_price, purchase_sale_inter_company, sale_advance_payment, sale_analytic_tag, sale_automatic_workflow, sale_cancel_reason, sale_commercial_partner, sale_commission_oca, sale_confirm_group, sale_crm, sale_delivery_state, sale_edi_ubl, sale_exception, sale_financial_risk, sale_financial_risk_info, sale_fixed_discount, sale_force_invoiced, sale_fully_invoiced, sale_gelato, sale_global_discount, sale_invoice_blocking, sale_invoice_frequency, sale_invoice_to_partner, sale_line_name_option, sale_loyalty, sale_management, sale_operating_unit, sale_order_archive, sale_order_disable_user_autosubscribe, sale_order_general_discount, sale_order_invoice_amount, sale_order_invoicing_qty_percentage, sale_order_line_description, sale_order_line_menu, sale_order_line_no_print, sale_order_line_note, sale_order_line_position, sale_order_line_price_history, sale_order_line_price_source, sale_order_line_section, sale_order_line_tag, sale_order_price_recalculation, sale_order_report_hide_tax, sale_order_report_product_image, sale_order_report_without_price, sale_order_requested_delivery, sale_order_show_full_address, sale_order_split_strategy, sale_partner_address_restrict, sale_partner_company_group, sale_partner_primeship, sale_partner_selectable_option, sale_portal_debranding, sale_pricelist_display_surcharge, sale_product_matrix, sale_product_pack, sale_product_set, sale_purchase, sale_resource_booking, sale_shipping_info_helper, sale_sms, sale_stock, sale_tier_validation, sale_transaction_form_link, sale_variant_configurator, spreadsheet_dashboard_sale, stock_buffer_sales_analysis, storage_image_product, website_sale
Description
This module contains all the common features of Sales Management and eCommerce.
    

Code Analysis

Views touched (73)
XML IDNameModelTypeStatus
account_invoice_form Account Invoice account.move form Inherits account.view_move_form
account_invoice_groupby_inherit account.move.groupby account.move Inherits account.view_account_invoice_filter
account_invoice_report_view_tree account.invoice.report.view.list.inherit.sale account.invoice.report list Inherits account.account_invoice_report_view_tree
account_invoice_view_tree account.move.list.inherit.sale account.move list Inherits account.view_invoice_tree
crm_team_salesteams_view_form crm.team.form crm.team form Inherits sales_team.crm_team_view_form
crm_team_view_kanban_dashboard crm.team.view.kanban.dashboard.inherit.sale crm.team kanban Inherits sales_team.crm_team_view_kanban_dashboard
document_tax_totals document_tax_totals ir.ui.view qweb Inherits account.document_tax_totals_template
mass_cancel_orders_view_form sale.mass.cancel.orders.form sale.mass.cancel.orders form New
payment_link_wizard_view_form payment.link.wizard.form payment.link.wizard form Inherits payment.payment_link_wizard_view_form
payment_provider_form payment.provider.form.inherit.sale payment.provider form Inherits payment.payment_provider_form
portal_my_home_menu_sale Portal layout : sales menu entries ir.ui.view qweb Inherits portal.portal_breadcrumbs
portal_my_home_sale Quotations / Sales Orders ir.ui.view qweb Inherits portal.portal_my_home
portal_my_orders My Sales Orders ir.ui.view qweb New
portal_my_quotations My Quotations ir.ui.view qweb New
product_document_form product.document.form.sale product.document form Inherits product.product_document_form
product_document_kanban product.document.kanban.sale product.document kanban Inherits product.product_document_kanban
product_document_list product.document.list.sale product.document list Inherits product.product_document_list
product_document_search product.document.search.sale product.document search Inherits product.product_document_search
product_form_view_sale_order_button product.product.sale.order product.product form Inherits product.product_normal_form_view
product_pricelist_item_form product.pricelist.item.view.form.inherit product.pricelist.item form Inherits product.product_pricelist_item_form_view
product_template_form_view product.template.form.view.inherit.sale product.template form Inherits product.product_template_form_view
product_template_form_view_sale_order_button product.template.sale.order.button product.template form Inherits product.product_template_only_form_view
product_template_view_form product.template.form.inherit.sale.product.configurator product.template form Inherits product.product_template_form_view
product_view_kanban_catalog product.view.kanban.catalog.inherit.sale product.product kanban Inherits product.product_view_kanban_catalog
product_view_search_catalog product.view.search.catalog.inherit.sale product.product search Inherits product.product_view_search_catalog
quote_document_layout_preview quote_document_layout_preview ir.ui.view qweb New
report_saleorder report_saleorder ir.ui.view qweb New
report_saleorder_document report_saleorder_document ir.ui.view qweb New
report_saleorder_pro_forma report_saleorder_pro_forma ir.ui.view qweb New
report_saleorder_raw report_saleorder_raw ir.ui.view qweb New
res_config_settings_view_form res.config.settings.view.form.inherit.sale res.config.settings form Inherits base.res_config_settings_view_form
res_config_settings_view_form_sale_inherit res.config.settings.view.form.inherit.sale res.config.settings form Inherits account.res_config_settings_view_form
res_partner_view_buttons res.partner.view.buttons res.partner form Inherits base.view_partner_form
res_partner_view_form_payment_defaultcreditcard res.partner.view.form.payment.defaultcreditcard res.partner form Inherits payment.view_partners_form_payment_defaultcreditcard
res_partner_view_form_property_inherit res.partner.view.form.property.inherit res.partner form Inherits account.view_partner_property_form
sale_order_kanban_upload sale.order.kanban.upload (orders) sale.order kanban Inherits view_sale_order_kanban
sale_order_line_view_form_readonly sale.order.line.form.readonly sale.order.line form New
sale_order_line_view_kanban sale.order.line.kanban sale.order.line kanban New
sale_order_line_wizard_form sale.order.discount.form sale.order.discount form New
sale_order_list_upload sale.order.tree.upload (orders) sale.order list Inherits view_order_tree
sale_order_portal_content Sales Order Portal Content ir.ui.view qweb New
sale_order_portal_content_totals_table sale_order_portal_content_totals_table ir.ui.view qweb New
sale_order_portal_pay_modal Sales Order Portal Pay Modal ir.ui.view qweb New
sale_order_portal_pay_modal_amount_selector Sales Order Portal Pay Modal Amounts Selector ir.ui.view qweb New
sale_order_portal_sign_modal Sales Order Portal Sign Modal ir.ui.view qweb New
sale_order_portal_template Sales Order ir.ui.view qweb Inherits portal.portal_sidebar
sale_order_tree sale.order.list sale.order list New
sale_order_view_activity sale.order.activity sale.order activity New
sale_order_view_search_inherit_quotation sale.order.search.inherit.quotation sale.order search Inherits sale.view_sales_order_filter
sale_order_view_search_inherit_sale sale.order.search.inherit.sale sale.order search Inherits sale.view_sales_order_filter
sale_report_graph_bar sale.report.graph.bar sale.report graph Inherits view_order_product_graph
sale_report_graph_pie sale.report.graph.pie sale.report graph Inherits view_order_product_graph
sale_report_view_tree sale.report.view.list sale.report list New
transaction_form_inherit_sale payment.transaction.form.inherit.sale.payment payment.transaction form Inherits payment.payment_transaction_form
utm_campaign_view_form utm.campaign.view.form utm.campaign form Inherits utm.utm_campaign_view_form
utm_campaign_view_kanban utm.campaign.view.kanban utm.campaign kanban Inherits utm.utm_campaign_view_kanban
view_account_invoice_report_search_inherit account.invoice.report.search.inherit account.invoice.report search Inherits account.view_account_invoice_report_search
view_order_form sale.order.form sale.order form New
view_order_line_tree sale.order.line.list sale.order.line list New
view_order_product_graph sale.report.graph sale.report graph New
view_order_product_pivot sale.report.pivot sale.report pivot New
view_order_product_search sale.report.search sale.report search New
view_order_tree sale.order.list (orders) sale.order list Inherits sale_order_tree
view_quotation_kanban_with_onboarding sale.order.kanban sale.order kanban Inherits view_sale_order_kanban
view_quotation_tree sale.order.list (quotes) sale.order list Inherits sale_order_tree
view_quotation_tree_with_onboarding sale.order.list sale.order list Inherits view_quotation_tree
view_sale_advance_payment_inv Invoice Orders sale.advance.payment.inv form New
view_sale_order_calendar sale.order.calendar sale.order calendar New
view_sale_order_graph sale.order.graph sale.order graph New
view_sale_order_kanban sale.order.kanban sale.order kanban New
view_sale_order_pivot sale.order.pivot sale.order pivot New
view_sales_order_filter sale.order.list.select sale.order search New
view_sales_order_line_filter sale.order.line.select sale.order.line search New
HTTP endpoints (14)
Route(s)HandlerAuthTypeMethodsFlags
/my/orders, /my/orders/page/<int:page> CustomerPortal.portal_my_orders user http ALL website
/my/quotes, /my/quotes/page/<int:page> CustomerPortal.portal_my_quotes user http ALL website
/my/orders/<int:order_id>/download_edi CustomerPortal.portal_my_sale_order_download_edi public http ALL website
/my/orders/<int:order_id> CustomerPortal.portal_order_page public http ALL website
/my/orders/<int:order_id>/accept CustomerPortal.portal_quote_accept public jsonrpc ALL sudo website
/my/orders/<int:order_id>/decline CustomerPortal.portal_quote_decline public http POST website
/my/orders/<int:order_id>/document/<int:document_id> CustomerPortal.portal_quote_document public http ALL sudo
/my/orders/<int:order_id>/transaction PaymentPortal.portal_order_transaction public jsonrpc ALL
(inherited route override) SaleComboConfiguratorController.sale_combo_configurator_get_data user jsonrpc ALL sudo
(inherited route override) SaleComboConfiguratorController.sale_combo_configurator_get_price user jsonrpc ALL
(inherited route override) SaleProductConfiguratorController.sale_product_configurator_create_product user jsonrpc POST
(inherited route override) SaleProductConfiguratorController.sale_product_configurator_get_optional_products user jsonrpc ALL
(inherited route override) SaleProductConfiguratorController.sale_product_configurator_get_values user jsonrpc ALL
(inherited route override) SaleProductConfiguratorController.sale_product_configurator_update_combination user jsonrpc POST
Models touched (28)

New fields (1)
  • business_domain Selection
    ondelete={'sale_order': 'cascade'} selection_add=[('sale_order', 'Sale Order')]
Public methods (0)

No public methods.

New fields (1)
  • so_line Many2one → sale.order.line
    domain=[('qty_delivered_method', '=', 'analytic')] index='btree_not_null' string='Sales Order Item' args: 'sale.order.line'
Public methods (0)

No public methods.

New fields (0)

No new fields.

Public methods (0)

No public methods.

New fields (1)
  • team_id Many2one → crm.team
    comodel_name='crm.team' string='Sales Team'
Public methods (0)

No public methods.

New fields (6)
  • campaign_id Many2one
    ondelete='set null'
  • medium_id Many2one
    ondelete='set null'
  • sale_order_count Integer
    compute='_compute_origin_so_count' compute_sudo=True string='Sale Order Count'
  • sale_warning_text Text
    compute='_compute_sale_warning_text' help='Internal warning for the partner or the products as set by the user.' args: 'Sale Warning'
  • source_id Many2one
    ondelete='set null'
  • team_id Many2one → crm.team
    compute='_compute_team_id' domain="['|', ('company_id', '=', False), ('company_id', '=', company_id)]" ondelete='set null' readonly=False store=True string='Sales Team' tracking=True args: 'crm.team'
Public methods (5)
  • action_post(self)
  • action_view_source_sale_orders(self)
  • button_cancel(self)
  • button_draft(self)
  • unlink(self)

New fields (3)
  • is_downpayment Boolean
  • sale_line_ids Many2many → sale.order.line
    copy=False readonly=True string='Sales Order Lines' args: 'sale.order.line', 'sale_order_line_invoice_rel', 'invoice_line_id', 'order_line_id'
  • sale_line_warn_msg Text
    compute='_compute_sale_line_warn_msg'
Public methods (0)

No public methods.

New fields (0)

No new fields.

Public methods (0)

No public methods.

New fields (3)
  • invoiced Float
    compute='_compute_invoiced' help='Invoice revenue for the current month. This is the amount the sales channel has invoiced this month. It is used to compute the progression ratio of the current and target revenue on the kanban view.' readonly=True string='Invoiced This Month'
  • invoiced_target Float
    help='Revenue Target for the current month (untaxed total of paid invoices).' string='Invoicing Target'
  • sale_order_count Integer
    compute='_compute_sale_order_count' string='# Sale Orders'
Public methods (2)
  • action_primary_channel_button(self)
  • update_invoiced_target(self, value)

New fields (0)

No new fields.

Public methods (0)

No public methods.

New fields (0)

No new fields.

Public methods (3)
  • create(self, vals_list)
    @api.model_create_multi
  • unlink(self)
  • write(self, vals)

New fields (3)
  • amount_paid Monetary
    readonly=True string='Already Paid'
  • confirmation_message Char
    compute='_compute_confirmation_message' string='Confirmation Message'
  • prepayment_amount Monetary
    currency_field='currency_id' string='Prepayment Amount'
Public methods (0)

No public methods.

New fields (1)
  • so_reference_type Selection
    default='so_name' help='You can set here the communication type that will appear on sales orders.The communication will be given to the customer when they choose the payment method.' selection=[('so_name', 'Based on Document Reference'), ('partner', 'Based on Customer ID')] string='Communication'
Public methods (0)

No public methods.

New fields (2)
  • sale_order_ids Many2many → sale.order
    copy=False readonly=True string='Sales Orders' args: 'sale.order', 'sale_order_transaction_rel', 'transaction_id', 'sale_order_id'
  • sale_order_ids_nbr Integer
    compute='_compute_sale_order_ids_nbr' string='# of Sales Orders'
Public methods (1)
  • action_view_sales_orders(self)
    @api.readonly

New fields (1)
  • sale_order_line_id Many2one → sale.order.line
    index='btree_not_null' ondelete='cascade' string='Sales Order Line' args: 'sale.order.line'
Public methods (0)

No public methods.

New fields (1)
  • attached_on_sale Selection
    default='hidden' groups='sales_team.group_sale_salesman' help='Allows you to share the document with your customers within a sale.\nOn quote: the document will be sent to and accessible by customers at any time.\ne.g. this option can be useful to share Product description files.\nOn order confirmation: the document will be sent to and accessible by customers.\ne.g. this option can be useful to share User Manual or digital content bought on ecommerce. ' required=True selection=[('hidden', 'Hidden'), ('quotation', 'On quote'), ('sale_order', 'On confirmed order')] string='Sale : Visible at'
Public methods (0)

No public methods.

New fields (0)

No new fields.

Public methods (0)

No public methods.

New fields (2)
  • product_catalog_product_is_in_sale_order Boolean
    compute='_compute_product_is_in_sale_order' search='_search_product_is_in_sale_order'
  • sales_count Float
    compute='_compute_sales_count' digits='Product Unit' string='Sold'
Public methods (1)
  • action_view_sales(self)
    @api.readonly

New fields (7)
  • expense_policy Selection
    compute='_compute_expense_policy' default='no' help='Validated expenses, vendor bills, or stock pickings (set up to track costs) can be invoiced to the customer at either cost or sales price.' readonly=False selection=[('no', 'No'), ('cost', 'At cost'), ('sales_price', 'Sales price')] store=True string='Re-Invoice Costs'
  • invoice_policy Selection
    compute='_compute_invoice_policy' help='Ordered Quantity: Invoice quantities ordered by the customer.\nDelivered Quantity: Invoice quantities delivered to the customer.' precompute=True readonly=False selection=[('order', 'Ordered quantities'), ('delivery', 'Delivered quantities')] store=True string='Invoicing Policy' tracking=True
  • optional_product_ids Many2many → product.template
    check_company=True column1='src_id' column2='dest_id' comodel_name='product.template' help='Optional Products are suggested whenever the customer hits *Add to Cart* (cross-sell strategy, e.g. for computers: warranty, software, etc.).' relation='product_optional_rel' string='Optional Products'
  • sale_line_warn_msg Text
    string='Sales Order Line Warning'
  • sales_count Float
    compute='_compute_sales_count' digits='Product Unit' string='Sold'
  • service_type Selection
    compute='_compute_service_type' help='Manually set quantities on order: Invoice based on the manually entered quantity, without creating an analytic account.\nTimesheets on contract: Invoice based on the tracked hours on the related timesheet.\nCreate a task and track hours: Create a task on the sales order validation and track the work hours.' precompute=True readonly=False selection=[('manual', 'Manually set quantities on order')] store=True string='Track Service'
  • visible_expense_policy Boolean
    compute='_compute_visible_expense_policy' string='Re-Invoice Policy visible'
Public methods (3)
  • action_view_sales(self)
    @api.readonly
  • get_import_templates(self)
    @api.model
  • get_single_product_variant(self)
    Method used by the product configurator to check if the product is configurable or not. We need to open the product configurator if the product: - is configurable (see has_configurable_attributes) - has optional products

New fields (7)
  • downpayment_account_id Many2one → account.account
    comodel_name='account.account' domain=[('account_type', 'in', ('income', 'income_other', 'liability_current'))] help='This account will be used on Downpayment invoices.' string='Downpayment Account' tracking=True
  • portal_confirmation_pay Boolean
    string='Online Payment'
  • portal_confirmation_sign Boolean
    default=True string='Online Signature'
  • prepayment_percent Float
    default=1.0 help='The percentage of the amount needed to be paid to confirm quotations.' string='Prepayment percentage'
  • quotation_validity_days Integer
    default=30 help='Days between quotation proposal and expiration. 0 days means automatic expiration is disabled' string='Default Quotation Validity'
  • sale_discount_product_id Many2one → product.product
    check_company=True comodel_name='product.product' domain=[('type', '=', 'service'), ('invoice_policy', '=', 'order')] help='Default product used for discounts' string='Discount Product'
  • sale_onboarding_payment_method Selection
    selection=[('digital_signature', 'Sign online'), ('paypal', 'PayPal'), ('stripe', 'Stripe'), ('other', 'Pay with another payment provider'), ('manual', 'Manual Payment')] string='Sale onboarding selected payment method'
Public methods (0)

No public methods.

New fields (32)
  • automatic_invoice Boolean
    config_parameter='sale.automatic_invoice' help='The invoice is generated automatically and available in the customer portal when the transaction is confirmed by the payment provider.\nThe invoice is marked as paid and the payment is registered in the payment journal defined in the configuration of the payment provider.\nThis mode is advised if you issue the final invoice at the order and not after the delivery.' string='Automatic Invoice'
  • default_invoice_policy Selection
    default='order' default_model='product.template' selection=[('order', 'Invoice what is ordered'), ('delivery', 'Invoice what is delivered')] string='Invoicing Policy'
  • downpayment_account_id Many2one
    readonly=False related='company_id.downpayment_account_id'
  • group_auto_done_setting Boolean
    implied_group='sale.group_auto_done_setting' string='Lock Confirmed Sales'
  • group_discount_per_so_line Boolean
    implied_group='sale.group_discount_per_so_line' string='Discounts'
  • group_proforma_sales Boolean
    help='Allows you to send pro-forma invoice.' implied_group='sale.group_proforma_sales' string='Pro-Forma Invoice'
  • group_warning_sale Boolean
    implied_group='sale.group_warning_sale' string='Sale Order Warnings'
  • invoice_mail_template_id Many2one → mail.template
    comodel_name='mail.template' config_parameter='sale.default_invoice_email_template' domain=[('model', '=', 'account.move')] help='Email sent to the customer once the invoice is available.' string='Email Template'
  • module_delivery Boolean
    args: 'Delivery Methods'
  • module_delivery_bpost Boolean
    args: 'bpost Connector'
  • module_delivery_dhl Boolean
    args: 'DHL Express Connector'
  • module_delivery_easypost Boolean
    args: 'Easypost Connector'
  • module_delivery_envia Boolean
    args: 'Envia.com Connector'
  • module_delivery_fedex_rest Boolean
    args: 'FedEx Connector'
  • module_delivery_sendcloud Boolean
    args: 'Sendcloud Connector'
  • module_delivery_shiprocket Boolean
    args: 'Shiprocket Connector'
  • module_delivery_starshipit Boolean
    args: 'Starshipit Connector'
  • module_delivery_ups_rest Boolean
    args: 'UPS Connector'
  • module_delivery_usps_rest Boolean
    args: 'USPS Connector'
  • module_product_email_template Boolean
    args: 'Specific Email'
  • module_sale_amazon Boolean
    args: 'Amazon Sync'
  • module_sale_commission Boolean
    args: 'Commissions'
  • module_sale_gelato Boolean
    args: 'Gelato'
  • module_sale_loyalty Boolean
    args: 'Coupons & Loyalty'
  • module_sale_margin Boolean
    args: 'Margins'
  • module_sale_pdf_quote_builder Boolean
    args: 'PDF Quote builder'
  • module_sale_product_matrix Boolean
    args: 'Sales Grid Entry'
  • module_sale_shopee Boolean
    args: 'Shopee Sync'
  • portal_confirmation_pay Boolean
    readonly=False related='company_id.portal_confirmation_pay'
  • portal_confirmation_sign Boolean
    readonly=False related='company_id.portal_confirmation_sign'
  • prepayment_percent Float
    readonly=False related='company_id.prepayment_percent'
  • quotation_validity_days Integer
    readonly=False related='company_id.quotation_validity_days'
Public methods (2)
  • action_sale_start_payment_onboarding(self)
  • set_values(self)

New fields (3)
  • sale_order_count Integer
    compute='_compute_sale_order_count' groups='sales_team.group_sale_salesman' string='Sale Order Count'
  • sale_order_ids One2many → sale.order
    args: 'sale.order', 'partner_id', 'Sales Order'
  • sale_warn_msg Text
    args: 'Message for Sales Order'
Public methods (1)
  • can_edit_vat(self)
    Can't edit `vat` if there is (non draft) issued SO.

New fields (12)
  • advance_payment_method Selection
    default='delivered' help='A standard invoice is issued with all the order lines ready for invoicing,according to their invoicing policy (based on ordered or delivered quantity).' required=True selection=[('delivered', 'Regular invoice'), ('percentage', 'Down payment (percentage)'), ('fixed', 'Down payment (fixed amount)')] string='Create Invoice'
  • amount Float
    help='The percentage of amount to be invoiced in advance.' string='Down Payment'
  • amount_invoiced Monetary
    compute='_compute_invoice_amounts' help='Only confirmed down payments are considered.' string='Already invoiced'
  • company_id Many2one → res.company
    comodel_name='res.company' compute='_compute_company_id' store=True
  • consolidated_billing Boolean
    default=True help='Create one invoice for all orders related to same customer, same invoicing address and same delivery address.' string='Consolidated Billing'
  • count Integer
    compute='_compute_count' string='Order Count'
  • currency_id Many2one → res.currency
    comodel_name='res.currency' compute='_compute_currency_id' store=True
  • deduct_down_payments Boolean
    default=True string='Deduct down payments'
  • display_draft_invoice_warning Boolean
    compute='_compute_display_draft_invoice_warning'
  • fixed_amount Monetary
    help='The fixed amount to be invoiced in advance.' string='Down Payment Amount (Fixed)'
  • has_down_payments Boolean
    compute='_compute_has_down_payments' string='Has down payments'
  • sale_order_ids Many2many → sale.order
    default=<expr> args: 'sale.order'
Public methods (2)
  • create_invoices(self)
  • view_draft_invoices(self)

New fields (3)
  • has_confirmed_order Boolean
    compute='_compute_has_confirmed_order'
  • sale_order_ids Many2many → sale.order
    comodel_name='sale.order' default=<expr> relation='sale_order_mass_cancel_wizard_rel' string='Sale orders to cancel'
  • sale_orders_count Integer
    compute='_compute_sale_orders_count'
Public methods (1)
  • action_mass_cancel(self)

New fields (65)
  • amount_invoiced Monetary
    compute='_compute_amount_invoiced' string='Already invoiced'
  • amount_paid Float
    compute='_compute_amount_paid' compute_sudo=True help="Sum of transactions made in through the online payment form that are in the state 'done' or 'authorized' and linked to this order." string='Payment Transactions Amount'
  • amount_tax Monetary
    compute='_compute_amounts' store=True string='Taxes'
  • amount_to_invoice Monetary
    compute='_compute_amount_to_invoice' string='Un-invoiced Balance'
  • amount_total Monetary
    compute='_compute_amounts' store=True string='Total' tracking=4
  • amount_undiscounted Float
    compute='_compute_amount_undiscounted' digits=0 string='Amount Before Discount'
  • amount_untaxed Monetary
    compute='_compute_amounts' store=True string='Untaxed Amount' tracking=5
  • authorized_transaction_ids Many2many → payment.transaction
    comodel_name='payment.transaction' compute='_compute_authorized_transaction_ids' compute_sudo=True copy=False groups='account.group_account_invoice' string='Authorized Transactions'
  • campaign_id Many2one
    ondelete='set null'
  • client_order_ref Char
    copy=False string='Customer Reference'
  • commitment_date Datetime
    copy=False help='This is the delivery date promised to the customer. If set, the delivery order will be scheduled based on this date rather than product lead times.' string='Delivery Date'
  • company_id Many2one → res.company
    comodel_name='res.company' default=<expr> index=True required=True
  • company_price_include Selection
    related='company_id.account_price_include'
  • country_code Char
    related='company_id.account_fiscal_country_id.code' string='Country code'
  • create_date Datetime
    index=True readonly=True string='Creation Date'
  • currency_id Many2one → res.currency
    comodel_name='res.currency' compute='_compute_currency_id' ondelete='restrict' precompute=True store=True
  • currency_rate Float
    compute='_compute_currency_rate' digits=0 precompute=True store=True string='Currency Rate'
  • date_order Datetime
    copy=False default=fields.Datetime.now help='Creation date of draft/sent orders,\nConfirmation date of confirmed orders.' required=True string='Order Date'
  • duplicated_order_ids Many2many → sale.order
    comodel_name='sale.order' compute='_compute_duplicated_order_ids'
  • expected_date Datetime
    compute='_compute_expected_date' help='Delivery date you can promise to the customer, computed from the minimum lead time of the order lines.' store=False string='Expected Date'
  • fiscal_position_id Many2one → account.fiscal.position
    check_company=True comodel_name='account.fiscal.position' compute='_compute_fiscal_position_id' help='Fiscal positions are used to adapt taxes and accounts for particular customers or sales orders/invoices.The default value comes from the customer.' precompute=True readonly=False store=True string='Fiscal Position'
  • has_active_pricelist Boolean
    compute='_compute_has_active_pricelist'
  • has_archived_products Boolean
    compute='_compute_has_archived_products'
  • has_authorized_transaction_ids Boolean
    compute='_compute_authorized_transaction_ids' compute_sudo=True string='Has Authorized Transactions'
  • invoice_count Integer
    compute='_get_invoiced' string='Invoice Count'
  • invoice_ids Many2many → account.move
    comodel_name='account.move' compute='_get_invoiced' copy=False search='_search_invoice_ids' string='Invoices'
  • invoice_status Selection
    compute='_compute_invoice_status' selection=INVOICE_STATUS store=True string='Invoice Status'
  • is_expired Boolean
    compute='_compute_is_expired' string='Is Expired'
  • journal_id Many2one → account.journal
    check_company=True compute='_compute_journal_id' domain=[('type', '=', 'sale')] help='If set, the SO will invoice in this journal; otherwise the sales journal with the lowest sequence is used.' precompute=True readonly=False store=True string='Invoicing Journal' args: 'account.journal'
  • locked Boolean
    copy=False default=False help='Locked orders cannot be modified.' tracking=True
  • medium_id Many2one
    ondelete='set null'
  • name Char
    copy=False default=<expr> index='trigram' readonly=False required=True string='Order Reference'
  • note Html
    compute='_compute_note' precompute=True readonly=False store=True string='Terms and conditions'
  • order_line One2many → sale.order.line
    bypass_search_access=True comodel_name='sale.order.line' copy=True inverse_name='order_id' string='Order Lines'
  • origin Char
    help='Reference of the document that generated this sales order request' string='Source Document'
  • partner_credit_warning Text
    compute='_compute_partner_credit_warning'
  • partner_id Many2one → res.partner
    change_default=True check_company=True comodel_name='res.partner' index=True required=True string='Customer' tracking=1
  • partner_invoice_id Many2one → res.partner
    check_company=True comodel_name='res.partner' compute='_compute_partner_invoice_id' index='btree_not_null' precompute=True readonly=False required=True store=True string='Invoice Address'
  • partner_shipping_id Many2one → res.partner
    check_company=True comodel_name='res.partner' compute='_compute_partner_shipping_id' index='btree_not_null' precompute=True readonly=False required=True store=True string='Delivery Address'
  • payment_term_id Many2one → account.payment.term
    check_company=True comodel_name='account.payment.term' compute='_compute_payment_term_id' domain="['|', ('company_id', '=', False), ('company_id', '=', company_id)]" precompute=True readonly=False store=True string='Payment Terms'
  • pending_email_template_id Many2one → mail.template
    comodel_name='mail.template' ondelete='set null' readonly=True string='Pending Email Template'
  • preferred_payment_method_line_id Many2one → account.payment.method.line
    check_company=True comodel_name='account.payment.method.line' compute='_compute_preferred_payment_method_line_id' domain="[('payment_type', '=', 'inbound'), ('company_id', '=', company_id)]" precompute=True readonly=False store=True string='Payment Method'
  • prepayment_percent Float
    compute='_compute_prepayment_percent' help='The percentage of the amount needed that must be paid by the customer to confirm the order.' precompute=True readonly=False store=True string='Prepayment percentage'
  • pricelist_id Many2one → product.pricelist
    check_company=True comodel_name='product.pricelist' compute='_compute_pricelist_id' domain="['|', ('company_id', '=', False), ('company_id', '=', company_id)]" help='If you change the pricelist, only newly added lines will be affected.' precompute=True readonly=False store=True string='Pricelist' tracking=1
  • reference Char
    copy=False help='The payment communication of this sale order.' string='Payment Ref.'
  • require_payment Boolean
    compute='_compute_require_payment' help='Request a online payment from the customer to confirm the order.' precompute=True readonly=False store=True string='Online payment'
  • require_signature Boolean
    compute='_compute_require_signature' help='Request a online signature from the customer to confirm the order.' precompute=True readonly=False store=True string='Online signature'
  • sale_warning_text Text
    compute='_compute_sale_warning_text' help='Internal warning for the partner or the products as set by the user.' args: 'Sale Warning'
  • show_update_fpos Boolean
    store=False string='Has Fiscal Position Changed'
  • show_update_pricelist Boolean
    store=False string='Has Pricelist Changed'
  • signature Image
    attachment=True copy=False max_height=1024 max_width=1024 string='Signature'
  • signed_by Char
    copy=False string='Signed By'
  • signed_on Datetime
    copy=False string='Signed On'
  • source_id Many2one
    ondelete='set null'
  • state Selection
    copy=False default='draft' group_expand=True index=True readonly=True selection=SALE_ORDER_STATE string='Status' tracking=3
  • tag_ids Many2many → crm.tag
    column1='order_id' column2='tag_id' comodel_name='crm.tag' groups='sales_team.group_sale_salesman' relation='sale_order_tag_rel' string='Tags'
  • tax_calculation_rounding_method Selection
    depends=['company_id'] related='company_id.tax_calculation_rounding_method'
  • tax_country_id Many2one → res.country
    comodel_name='res.country' compute='_compute_tax_country_id' compute_sudo=True
  • tax_totals Binary
    compute='_compute_tax_totals' exportable=False
  • team_id Many2one → crm.team
    change_default=True check_company=True comodel_name='crm.team' compute='_compute_team_id' domain="['|', ('company_id', '=', False), ('company_id', '=', company_id)]" index=True ondelete='set null' precompute=True readonly=False store=True string='Sales Team' tracking=True
  • terms_type Selection
    related='company_id.terms_type'
  • transaction_ids Many2many → payment.transaction
    column1='sale_order_id' column2='transaction_id' comodel_name='payment.transaction' copy=False groups='account.group_account_invoice' readonly=True relation='sale_order_transaction_rel' string='Transactions'
  • type_name Char
    compute='_compute_type_name' string='Type Name'
  • user_id Many2one → res.users
    comodel_name='res.users' compute='_compute_user_id' domain=<expr> index=True precompute=True readonly=False store=True string='Salesperson' tracking=2
  • validity_date Date
    compute='_compute_validity_date' copy=False help='Validity of the order, after that you will not able to sign & pay the quotation.' precompute=True readonly=False store=True string='Expiration'
Public methods (24)
  • action_cancel(self)
    Cancel sales order and related draft invoices.
  • action_confirm(self)
    Confirm the given quotation(s) and set their confirmation date. If the corresponding setting is enabled, also locks the Sale Order. :return: True :rtype: bool :raise: UserError if trying to confirm cancelled SO's
  • action_draft(self)
  • action_lock(self)
  • action_open_business_doc(self)
    @api.readonly
  • action_open_discount_wizard(self)
    @api.readonly
  • action_preview_sale_order(self)
    @api.readonly
  • action_quotation_send(self)
    Opens a wizard to compose an email, with relevant mail template loaded by default
  • action_quotation_sent(self)
    Mark the given draft quotation(s) as sent. :raise: UserError if any given SO is not in draft state.
  • action_unlock(self)
  • action_update_prices(self)
  • action_update_taxes(self)
  • action_view_invoice(self, invoices=False)
    @api.readonly
  • copy_data(self, default=None)
  • create(self, vals_list)
    @api.model_create_multi
  • create_document_from_attachment(self, attachment_ids)
    Create the sale orders from given attachment_ids and redirect newly create order view. :param list attachment_ids: List of attachments process. :return: An action redirecting to related sale order view. :rtype: dict
  • get_empty_list_help(self, help_message)
    @api.model
  • get_import_templates(self)
    @api.model
  • get_portal_last_transaction(self)
  • message_post(self, **kwargs)
  • onchange(self, values, field_names, fields_spec)
  • payment_action_capture(self)
    Capture all transactions linked to this sale order.
  • payment_action_void(self)
    Void all transactions linked to this sale order.
  • write(self, vals)

New fields (6)
  • company_id Many2one
    related='sale_order_id.company_id'
  • currency_id Many2one
    related='sale_order_id.currency_id'
  • discount_amount Monetary
    string='Amount'
  • discount_percentage Float
    string='Percentage'
  • discount_type Selection
    default='sol_discount' selection=[('sol_discount', 'On All Order Lines'), ('so_discount', 'Global Discount'), ('amount', 'Fixed Amount')]
  • sale_order_id Many2one → sale.order
    default=<expr> required=True args: 'sale.order'
Public methods (1)
  • action_apply_discount(self)

New fields (67)
  • allowed_uom_ids Many2many → uom.uom
    compute='_compute_allowed_uom_ids' args: 'uom.uom'
  • amount_invoiced Monetary
    compute='_compute_amount_invoiced' compute_sudo=True string='Invoiced Amount'
  • amount_to_invoice Monetary
    compute='_compute_amount_to_invoice' compute_sudo=True string='Un-invoiced Balance'
  • amount_to_invoice_at_date Float
    compute='_compute_amount_to_invoice_at_date' string='Amount'
  • analytic_line_ids One2many → account.analytic.line
    comodel_name='account.analytic.line' inverse_name='so_line' string='Analytic lines'
  • categ_id Many2one
    related='product_id.categ_id'
  • collapse_composition Boolean
    copy=True default=False string='Collapse Composition'
  • collapse_prices Boolean
    copy=True default=False string='Collapse Prices'
  • combo_item_id Many2one → product.combo.item
    comodel_name='product.combo.item'
  • company_id Many2one
    index=True precompute=True related='order_id.company_id' store=True
  • company_price_include Selection
    related='company_id.account_price_include'
  • currency_id Many2one
    depends=['order_id.currency_id'] precompute=True related='order_id.currency_id' store=True
  • customer_lead Float
    compute='_compute_customer_lead' help='Number of days between the order confirmation and the shipping of the products to the customer' precompute=True readonly=False required=True store=True string='Lead Time'
  • discount Float
    compute='_compute_discount' digits='Discount' precompute=True readonly=False store=True string='Discount (%)'
  • display_type Selection
    default=False selection=[('line_section', 'Section'), ('line_subsection', 'Subsection'), ('line_note', 'Note')]
  • extra_tax_data Json
  • invoice_lines Many2many → account.move.line
    column1='order_line_id' column2='invoice_line_id' comodel_name='account.move.line' copy=False relation='sale_order_line_invoice_rel' string='Invoice Lines'
  • invoice_status Selection
    compute='_compute_invoice_status' selection=[('upselling', 'Upselling Opportunity'), ('invoiced', 'Fully Invoiced'), ('to invoice', 'To Invoice'), ('no', 'Nothing to Invoice')] store=True string='Invoice Status'
  • is_configurable_product Boolean
    depends=['product_template_id'] related='product_template_id.has_configurable_attributes' string='Is the product configurable?'
  • is_downpayment Boolean
    help='Down payments are made when creating invoices from a sales order. They are not copied when duplicating a sales order.' string='Is a down payment'
  • is_expense Boolean
    help='Is true if the sales order line comes from an expense or a vendor bills' string='Is expense'
  • is_product_archived Boolean
    compute='_compute_is_product_archived'
  • linked_line_id Many2one → sale.order.line
    comodel_name='sale.order.line' copy=False domain="[('order_id', '=', order_id)]" index=True ondelete='cascade' string='Linked Order Line'
  • linked_line_ids One2many → sale.order.line
    comodel_name='sale.order.line' inverse_name='linked_line_id' string='Linked Order Lines'
  • linked_virtual_id Char
  • name Text
    compute='_compute_name' precompute=True readonly=False required=True store=True string='Description'
  • order_id Many2one → sale.order
    comodel_name='sale.order' copy=False index=True ondelete='cascade' required=True string='Order Reference'
  • order_partner_id Many2one
    index=True precompute=True related='order_id.partner_id' store=True string='Customer'
  • parent_id Many2one → sale.order.line
    comodel_name='sale.order.line' compute='_compute_parent_id' string='Parent Section Line'
  • price_reduce_taxexcl Monetary
    compute='_compute_price_reduce_taxexcl' precompute=True store=True string='Price Reduce Tax excl'
  • price_reduce_taxinc Monetary
    compute='_compute_price_reduce_taxinc' precompute=True store=True string='Price Reduce Tax incl'
  • price_subtotal Monetary
    compute='_compute_amount' precompute=True store=True string='Subtotal'
  • price_tax Float
    compute='_compute_amount' precompute=True store=True string='Total Tax'
  • price_total Monetary
    compute='_compute_amount' precompute=True store=True string='Total'
  • price_unit Float
    compute='_compute_price_unit' min_display_digits='Product Price' precompute=True readonly=False required=True store=True string='Unit Price'
  • pricelist_item_id Many2one → product.pricelist.item
    comodel_name='product.pricelist.item' compute='_compute_pricelist_item_id'
  • product_custom_attribute_value_ids One2many → product.attribute.custom.value
    comodel_name='product.attribute.custom.value' compute='_compute_custom_attribute_values' copy=True inverse_name='sale_order_line_id' precompute=True readonly=False store=True string='Custom Values'
  • product_id Many2one → product.product
    change_default=True check_company=True comodel_name='product.product' domain=<expr> index='btree_not_null' ondelete='restrict' string='Product'
  • product_no_variant_attribute_value_ids Many2many → product.template.attribute.value
    comodel_name='product.template.attribute.value' compute='_compute_no_variant_attribute_values' ondelete='restrict' precompute=True readonly=False store=True string='Extra Values'
  • product_template_attribute_value_ids Many2many
    depends=['product_id'] related='product_id.product_template_attribute_value_ids'
  • product_template_id Many2one → product.template
    comodel_name='product.template' compute='_compute_product_template_id' domain=<expr> readonly=False search='_search_product_template_id' string='Product Template'
  • product_type Selection
    depends=['product_id'] related='product_id.type'
  • product_uom_id Many2one → uom.uom
    comodel_name='uom.uom' compute='_compute_product_uom_id' domain='[("id", "in", allowed_uom_ids)]' ondelete='restrict' precompute=True readonly=False store=True string='Unit'
  • product_uom_qty Float
    compute='_compute_product_uom_qty' default=1.0 digits='Product Unit' precompute=True readonly=False required=True store=True string='Quantity'
  • product_uom_readonly Boolean
    compute='_compute_product_uom_readonly'
  • product_updatable Boolean
    compute='_compute_product_updatable' string='Can Edit Product'
  • qty_delivered Float
    compute='_compute_qty_delivered' copy=False default=0.0 digits='Product Unit' readonly=False store=True string='Delivery Quantity'
  • qty_delivered_at_date Float
    compute='_compute_qty_delivered_at_date' digits='Product Unit' string='Delivered'
  • qty_delivered_method Selection
    compute='_compute_qty_delivered_method' help='According to product configuration, the delivered quantity can be automatically computed by mechanism:\n - Manual: the quantity is set manually on the line\n - Analytic From expenses: the quantity is the quantity sum from posted expenses\n - Timesheet: the quantity is the sum of hours recorded on tasks linked to this sale line\n - Stock Moves: the quantity comes from confirmed pickings\n' precompute=True selection=[('manual', 'Manual'), ('analytic', 'Analytic From Expenses')] store=True string='Method to update delivered qty'
  • qty_invoiced Float
    compute='_compute_qty_invoiced' digits='Product Unit' store=True string='Invoiced Quantity'
  • qty_invoiced_at_date Float
    compute='_compute_qty_invoiced_at_date' digits='Product Unit' string='Invoiced'
  • qty_invoiced_posted Float
    compute='_compute_qty_invoiced_posted' digits='Product Unit' string='Invoiced Quantity (posted)'
  • qty_to_invoice Float
    compute='_compute_qty_to_invoice' digits='Product Unit' store=True string='Quantity To Invoice'
  • sale_line_warn_msg Text
    compute='_compute_sale_line_warn_msg'
  • salesman_id Many2one
    precompute=True related='order_id.user_id' store=True string='Salesperson'
  • selected_combo_items Char
    store=False
  • sequence Integer
    default=10 string='Sequence'
  • service_tracking Selection
    depends=['product_id'] related='product_id.service_tracking'
  • state Selection
    copy=False precompute=True related='order_id.state' store=True string='Order Status'
  • tax_calculation_rounding_method Selection
    readonly=True related='company_id.tax_calculation_rounding_method' string='Tax calculation rounding method'
  • tax_country_id Many2one
    related='order_id.tax_country_id'
  • tax_ids Many2many → account.tax
    check_company=True comodel_name='account.tax' compute='_compute_tax_ids' context={'active_test': False, 'hide_original_tax_ids': True} domain="[('type_tax_use', '=', 'sale'), ('country_id', '=', tax_country_id)]" precompute=True readonly=False store=True string='Taxes'
  • technical_price_unit Float
  • translated_product_name Text
    compute='_compute_translated_product_name'
  • untaxed_amount_invoiced Monetary
    compute='_compute_untaxed_amount_invoiced' store=True string='Untaxed Invoiced Amount'
  • untaxed_amount_to_invoice Monetary
    compute='_compute_untaxed_amount_to_invoice' store=True string='Untaxed Amount To Invoice'
  • virtual_id Char
Public methods (6)
  • action_add_from_catalog(self)
    @api.readonly
  • compute_uom_qty(self, new_qty, stock_move, rounding=True)
  • create(self, vals_list)
    @api.model_create_multi
  • get_parent_section_line(self)
  • has_valued_move_ids(self)
  • write(self, vals)

New fields (39)
  • campaign_id Many2one → utm.campaign
    comodel_name='utm.campaign' readonly=True string='Campaign'
  • categ_id Many2one → product.category
    comodel_name='product.category' readonly=True string='Product Category'
  • commercial_partner_id Many2one → res.partner
    comodel_name='res.partner' readonly=True string='Customer Entity'
  • company_id Many2one → res.company
    comodel_name='res.company' readonly=True
  • country_id Many2one → res.country
    comodel_name='res.country' readonly=True string='Customer Country'
  • currency_id Many2one → res.currency
    comodel_name='res.currency' readonly=True
  • date Datetime
    readonly=True string='Order Date'
  • discount Float
    aggregator='avg' readonly=True string='Discount %'
  • discount_amount Monetary
    readonly=True string='Discount Amount'
  • industry_id Many2one → res.partner.industry
    comodel_name='res.partner.industry' readonly=True string='Customer Industry'
  • invoice_status Selection
    readonly=True selection=[('upselling', 'Upselling Opportunity'), ('invoiced', 'Fully Invoiced'), ('to invoice', 'To Invoice'), ('no', 'Nothing to Invoice')] string='Order Invoice Status'
  • line_invoice_status Selection
    readonly=True selection=[('upselling', 'Upselling Opportunity'), ('invoiced', 'Fully Invoiced'), ('to invoice', 'To Invoice'), ('no', 'Nothing to Invoice')] string='Invoice Status'
  • medium_id Many2one → utm.medium
    comodel_name='utm.medium' readonly=True string='Medium'
  • name Char
    readonly=True string='Order Reference'
  • nbr Integer
    readonly=True string='# of Lines'
  • order_reference Reference
    aggregator='count_distinct' selection=[('sale.order', 'Sales Order')] string='Order'
  • partner_id Many2one → res.partner
    comodel_name='res.partner' readonly=True string='Customer'
  • partner_zip Char
    readonly=True string='Customer ZIP'
  • price_subtotal Monetary
    readonly=True string='Untaxed Total'
  • price_total Monetary
    readonly=True string='Total'
  • price_unit Float
    aggregator='avg' readonly=True string='Unit Price'
  • pricelist_id Many2one → product.pricelist
    comodel_name='product.pricelist' readonly=True
  • product_id Many2one → product.product
    comodel_name='product.product' readonly=True string='Product Variant'
  • product_tmpl_id Many2one → product.template
    comodel_name='product.template' readonly=True string='Product'
  • product_uom_id Many2one → uom.uom
    comodel_name='uom.uom' readonly=True string='Unit'
  • product_uom_qty Float
    readonly=True string='Qty Ordered'
  • qty_delivered Float
    readonly=True string='Qty Delivered'
  • qty_invoiced Float
    readonly=True string='Qty Invoiced'
  • qty_to_deliver Float
    readonly=True string='Qty To Deliver'
  • qty_to_invoice Float
    readonly=True string='Qty To Invoice'
  • source_id Many2one → utm.source
    comodel_name='utm.source' readonly=True string='Source'
  • state Selection
    readonly=True selection=SALE_ORDER_STATE string='Status'
  • state_id Many2one → res.country.state
    comodel_name='res.country.state' readonly=True string='Customer State'
  • team_id Many2one → crm.team
    comodel_name='crm.team' readonly=True string='Sales Team'
  • untaxed_amount_invoiced Monetary
    readonly=True string='Untaxed Amount Invoiced'
  • untaxed_amount_to_invoice Monetary
    readonly=True string='Untaxed Amount To Invoice'
  • user_id Many2one → res.users
    comodel_name='res.users' readonly=True string='Salesperson'
  • volume Float
    readonly=True string='Volume'
  • weight Float
    readonly=True string='Gross Weight'
Public methods (1)
  • action_open_order(self)
    @api.readonly

New fields (4)
  • company_id Many2one → res.company
    default=<expr> string='Company' args: 'res.company'
  • currency_id Many2one → res.currency
    related='company_id.currency_id' string='Currency' args: 'res.currency'
  • invoiced_amount Integer
    compute='_compute_sale_invoiced_amount' compute_sudo=True groups='sales_team.group_sale_salesman' string='Revenues generated by the campaign'
  • quotation_count Integer
    compute='_compute_quotation_count' compute_sudo=True groups='sales_team.group_sale_salesman' args: 'Quotation Count'
Public methods (2)
  • action_redirect_to_invoiced(self)
  • action_redirect_to_quotations(self)

Loading…

Loading…

Loading…

Loading…

Loading…

Loading…

Loading…

Loading…

Loading…

Loading…

Loading…

Loading…

Loading…