Initial commit: Odoo 18.0-20251222 extra-addons
This commit is contained in:
5
account_move_line_sale_info/models/__init__.py
Executable file
5
account_move_line_sale_info/models/__init__.py
Executable file
@@ -0,0 +1,5 @@
|
||||
# License AGPL-3.0 or later (https://www.gnu.org/licenses/agpl.html).
|
||||
|
||||
from . import account_move
|
||||
from . import sale_order_line
|
||||
from . import stock_move
|
||||
48
account_move_line_sale_info/models/account_move.py
Executable file
48
account_move_line_sale_info/models/account_move.py
Executable file
@@ -0,0 +1,48 @@
|
||||
# Copyright 2020-23 ForgeFlow S.L.
|
||||
# License AGPL-3.0 or later (https://www.gnu.org/licenses/agpl.html).
|
||||
|
||||
from odoo import fields, models
|
||||
|
||||
|
||||
class AccountMove(models.Model):
|
||||
_inherit = "account.move"
|
||||
|
||||
def _stock_account_prepare_anglo_saxon_out_lines_vals(self):
|
||||
res = super()._stock_account_prepare_anglo_saxon_out_lines_vals()
|
||||
for i, vals in enumerate(res):
|
||||
am = self.env["account.move"].browse(vals["move_id"])
|
||||
sale_line_id = am.invoice_line_ids.filtered(
|
||||
lambda il, vs=vals: il.product_id.id == vs["product_id"]
|
||||
and il.quantity == vs["quantity"]
|
||||
).mapped("sale_line_ids")
|
||||
if sale_line_id and len(sale_line_id) == 1:
|
||||
res[i]["sale_line_id"] = sale_line_id.id
|
||||
return res
|
||||
|
||||
|
||||
class AccountMoveLine(models.Model):
|
||||
_inherit = "account.move.line"
|
||||
|
||||
sale_line_id = fields.Many2one(
|
||||
comodel_name="sale.order.line",
|
||||
string="Sale Order Line",
|
||||
ondelete="set null",
|
||||
index=True,
|
||||
copy=False,
|
||||
)
|
||||
|
||||
sale_order_id = fields.Many2one(
|
||||
comodel_name="sale.order",
|
||||
related="sale_line_id.order_id",
|
||||
string="Sales Order",
|
||||
ondelete="set null",
|
||||
store=True,
|
||||
index=True,
|
||||
copy=False,
|
||||
)
|
||||
|
||||
def _copy_data_extend_business_fields(self, values):
|
||||
# Same way Odoo standard does for purchase_line_id field
|
||||
res = super()._copy_data_extend_business_fields(values)
|
||||
values["sale_line_id"] = self.sale_line_id.id
|
||||
return res
|
||||
25
account_move_line_sale_info/models/sale_order_line.py
Executable file
25
account_move_line_sale_info/models/sale_order_line.py
Executable file
@@ -0,0 +1,25 @@
|
||||
# Copyright 2020-23 ForgeFlow S.L.
|
||||
# License AGPL-3.0 or later (https://www.gnu.org/licenses/agpl.html).
|
||||
|
||||
from odoo import api, models
|
||||
|
||||
|
||||
class SaleOrderLine(models.Model):
|
||||
_inherit = "sale.order.line"
|
||||
|
||||
@api.depends()
|
||||
@api.depends_context("so_line_info")
|
||||
def _compute_display_name(self):
|
||||
if not self.env.context.get("so_line_info", False):
|
||||
return super()._compute_display_name()
|
||||
for line in self.sudo():
|
||||
name = (
|
||||
f"[{line.order_id.name}] {line.product_id.name} - "
|
||||
f"({line.order_id.state})"
|
||||
)
|
||||
line.display_name = name
|
||||
|
||||
def _prepare_invoice_line(self, **optional_values):
|
||||
res = super()._prepare_invoice_line(**optional_values)
|
||||
res["sale_line_id"] = self.id
|
||||
return res
|
||||
18
account_move_line_sale_info/models/stock_move.py
Executable file
18
account_move_line_sale_info/models/stock_move.py
Executable file
@@ -0,0 +1,18 @@
|
||||
# Copyright 2020-23 ForgeFlow S.L.
|
||||
# License AGPL-3.0 or later (https://www.gnu.org/licenses/agpl.html).
|
||||
from odoo import api, models
|
||||
|
||||
|
||||
class StockMove(models.Model):
|
||||
_inherit = "stock.move"
|
||||
|
||||
@api.model
|
||||
def _prepare_account_move_line(
|
||||
self, qty, cost, credit_account_id, debit_account_id, svl_id, description
|
||||
):
|
||||
res = super()._prepare_account_move_line(
|
||||
qty, cost, credit_account_id, debit_account_id, svl_id, description
|
||||
)
|
||||
for line in res:
|
||||
line[2]["sale_line_id"] = self.sale_line_id.id
|
||||
return res
|
||||
Reference in New Issue
Block a user