Dre4m Shell
Server IP : 127.0.0.2  /  Your IP : 3.138.36.87
Web Server : Apache/2.4.18 (Ubuntu)
System :
User : www-data ( )
PHP Version : 7.0.33-0ubuntu0.16.04.16
Disable Function : disk_free_space,disk_total_space,diskfreespace,dl,exec,fpaththru,getmyuid,getmypid,highlight_file,ignore_user_abord,leak,listen,link,opcache_get_configuration,opcache_get_status,passthru,pcntl_alarm,pcntl_fork,pcntl_waitpid,pcntl_wait,pcntl_wifexited,pcntl_wifstopped,pcntl_wifsignaled,pcntl_wexitstatus,pcntl_wtermsig,pcntl_wstopsig,pcntl_signal,pcntl_signal_dispatch,pcntl_get_last_error,pcntl_strerror,pcntl_sigprocmask,pcntl_sigwaitinfo,pcntl_sigtimedwait,pcntl_exec,pcntl_getpriority,pcntl_setpriority,php_uname,phpinfo,posix_ctermid,posix_getcwd,posix_getegid,posix_geteuid,posix_getgid,posix_getgrgid,posix_getgrnam,posix_getgroups,posix_getlogin,posix_getpgid,posix_getpgrp,posix_getpid,posix,_getppid,posix_getpwnam,posix_getpwuid,posix_getrlimit,posix_getsid,posix_getuid,posix_isatty,posix_kill,posix_mkfifo,posix_setegid,posix_seteuid,posix_setgid,posix_setpgid,posix_setsid,posix_setuid,posix_times,posix_ttyname,posix_uname,pclose,popen,proc_open,proc_close,proc_get_status,proc_nice,proc_terminate,shell_exec,source,show_source,system,virtual
MySQL : OFF  |  cURL : ON  |  WGET : ON  |  Perl : ON  |  Python : ON  |  Sudo : ON  |  Pkexec : ON
Directory :  /opt/odoo/addons/sale/models/

Upload File :
current_dir [ Writeable ] document_root [ Writeable ]

 

Command :


[ HOME SHELL ]     

Current File : /opt/odoo/addons/sale/models/sale_config_settings.py
# -*- coding: utf-8 -*-
# Part of Odoo. See LICENSE file for full copyright and licensing details.

import logging

from odoo import api, fields, models

_logger = logging.getLogger(__name__)


class SaleConfiguration(models.TransientModel):
    _inherit = 'sale.config.settings'

    company_id = fields.Many2one('res.company', string='Company', required=True,
        default=lambda self: self.env.user.company_id)
    sale_note = fields.Text(related='company_id.sale_note', string="Default Terms and Conditions *")
    group_product_variant = fields.Selection([
        (0, "No variants on products"),
        (1, 'Products can have several attributes, defining variants (Example: size, color,...)')
        ], "Product Variants",
        help="""Work with product variant allows you to define some variant of the same products
                , an ease the product management in the ecommerce for example""",
        implied_group='product.group_product_variant')
    group_sale_pricelist = fields.Boolean("Use pricelists to adapt your price per customers",
        implied_group='product.group_sale_pricelist',
        help="""Allows to manage different prices based on rules per category of customers.
                Example: 10% for retailers, promotion of 5 EUR on this product, etc.""")
    group_pricelist_item = fields.Boolean("Show pricelists to customers",
        implied_group='product.group_pricelist_item')
    group_product_pricelist = fields.Boolean("Show pricelists On Products",
        implied_group='product.group_product_pricelist')
    group_uom = fields.Selection([
        (0, 'Products have only one unit of measure (easier)'),
        (1, 'Some products may be sold/purchased in different units of measure (advanced)')
        ], "Units of Measure",
        implied_group='product.group_uom',
        help="""Allows you to select and maintain different units of measure for products.""")
    group_discount_per_so_line = fields.Selection([
        (0, 'No discount on sales order lines, global discount only'),
        (1, 'Allow discounts on sales order lines')
        ], "Discount",
        implied_group='sale.group_discount_per_so_line')
    group_display_incoterm = fields.Selection([
        (0, 'No incoterm on reports'),
        (1, 'Show incoterms on sales orders and invoices')
        ], "Incoterms",
        implied_group='sale.group_display_incoterm',
        help="The printed reports will display the incoterms for the sales orders and the related invoices")
    module_sale_margin = fields.Selection([
        (0, 'Salespeople do not need to view margins when quoting'),
        (1, 'Display margins on quotations and sales orders')
        ], "Margins")
    group_sale_layout = fields.Selection([
        (0, 'Do not personalize sales orders and invoice reports'),
        (1, 'Personalize the sales orders and invoice report with categories, subtotals and page-breaks')
        ], "Sales Reports Layout", implied_group='sale.group_sale_layout')
    group_warning_sale = fields.Selection([
        (0, 'All the products and the customers can be used in sales orders'),
        (1, 'An informative or blocking warning can be set on a product or a customer')
        ], "Warning", implied_group='sale.group_warning_sale')
    module_website_quote = fields.Selection([
        (0, 'Print quotes or send by email'),
        (1, 'Send quotations your customer can approve & pay online (advanced)')
        ], "Online Quotations")
    group_sale_delivery_address = fields.Selection([
        (0, "Invoicing and shipping addresses are always the same (Example: services companies)"),
        (1, 'Display 3 fields on sales orders: customer, invoice address, delivery address')
        ], "Addresses", implied_group='sale.group_delivery_invoice_address')
    sale_pricelist_setting = fields.Selection([
        ('fixed', 'A single sale price per product'),
        ('percentage', 'Specific prices per customer segment, currency, etc.'),
        ('formula', 'Advanced pricing based on formulas (discounts, margins, rounding)')
        ], required=True,
        default='fixed',
        help='Fix Price: all price manage from products sale price.\n'
             'Different prices per Customer: you can assign price on buying of minimum quantity in products sale tab.\n'
             'Advanced pricing based on formula: You can have all the rights on pricelist')
    group_show_price_subtotal = fields.Boolean(
        "Show subtotal",
        implied_group='sale.group_show_price_subtotal',
        group='base.group_portal,base.group_user,base.group_public')
    group_show_price_total = fields.Boolean(
        "Show total",
        implied_group='sale.group_show_price_total',
        group='base.group_portal,base.group_user,base.group_public')
    sale_show_tax = fields.Selection([
        ('subtotal', 'Show line subtotals without taxes (B2B)'),
        ('total', 'Show line subtotals with taxes included (B2C)')], "Tax Display",
        default='subtotal',
        required=True)
    default_invoice_policy = fields.Selection([
        ('order', 'Invoice ordered quantities'),
        ('delivery', 'Invoice delivered quantities')
        ], 'Default Invoicing',
        default='order',
        default_model='product.template')
    deposit_product_id_setting = fields.Many2one(
        'product.product',
        'Deposit Product',
        domain="[('type', '=', 'service')]",
        help='Default product used for payment advances')
    auto_done_setting = fields.Selection([
        (0, "Allow to edit sales order from the 'Sales Order' menu (not from the Quotation menu)"),
        (1, "Never allow to modify a confirmed sales order")
        ], "Sale Order Modification")
    module_sale_contract = fields.Boolean("Manage subscriptions and recurring invoicing")
    module_website_sale_digital = fields.Boolean("Sell digital products - provide downloadable content on your customer portal")

    @api.multi
    def set_sale_defaults(self):
        return self.env['ir.values'].sudo().set_default(
            'sale.config.settings', 'sale_pricelist_setting', self.sale_pricelist_setting)

    @api.multi
    def set_deposit_product_id_defaults(self):
        return self.env['ir.values'].sudo().set_default(
            'sale.config.settings', 'deposit_product_id_setting', self.deposit_product_id_setting.id)

    @api.multi
    def set_auto_done_defaults(self):
        return self.env['ir.values'].sudo().set_default(
            'sale.config.settings', 'auto_done_setting', self.auto_done_setting)

    @api.onchange('sale_pricelist_setting')
    def _onchange_sale_price(self):
        if self.sale_pricelist_setting == 'percentage':
            self.update({
                'group_product_pricelist': True,
                'group_sale_pricelist': True,
                'group_pricelist_item': False,
            })
        elif self.sale_pricelist_setting == 'formula':
            self.update({
                'group_product_pricelist': False,
                'group_sale_pricelist': True,
                'group_pricelist_item': True,
            })
        else:
            self.update({
                'group_product_pricelist': False,
                'group_sale_pricelist': False,
                'group_pricelist_item': False,
            })

    @api.multi
    def set_sale_tax_defaults(self):
        return self.env['ir.values'].sudo().set_default(
            'sale.config.settings', 'sale_show_tax', self.sale_show_tax)

    @api.onchange('sale_show_tax')
    def _onchange_sale_tax(self):
        if self.sale_show_tax == "subtotal":
            self.update({
                'group_show_price_total': False,
                'group_show_price_subtotal': True,
            })
        else:
            self.update({
                'group_show_price_total': True,
                'group_show_price_subtotal': False,
            })

Anon7 - 2022
AnonSec Team