Odoo18-Base/addons/website_sale/models/account_move.py
2025-01-06 10:57:38 +07:00

38 lines
1.5 KiB
Python

# Part of Odoo. See LICENSE file for full copyright and licensing details.
from odoo import api, fields, models
from odoo.tools.sql import column_exists, create_column
class AccountMove(models.Model):
_inherit = 'account.move'
website_id = fields.Many2one(
'website', compute='_compute_website_id', string='Website',
help='Website through which this invoice was created for eCommerce orders.',
store=True, readonly=True, tracking=True)
def _auto_init(self):
if not column_exists(self.env.cr, "account_move", "website_id"):
# Creating the column via `_auto_init` prevents a MemoryError in databases where many
# invoices exist when `website_sale` is installed, as it skips the computation of the
# `website_id` field.
create_column(self.env.cr, "account_move", "website_id", "int4")
super()._auto_init()
def preview_invoice(self):
action = super().preview_invoice()
if action['url'].startswith('/'):
# URL should always be relative, safety check
action['url'] = f'/@{action["url"]}'
return action
@api.depends('partner_id') # Dummy depends to trigger compute, will be dropped in master
def _compute_website_id(self):
for move in self:
source_websites = move.line_ids.sale_line_ids.order_id.website_id
if len(source_websites) == 1:
move.website_id = source_websites
else:
move.website_id = False