Files
Odoo-18.0-20251222/account_invoice_supplierinfo_update/models/account_move_line.py
tocmo0nlord adbe430761
Some checks failed
pre-commit / pre-commit (push) Has been cancelled
tests / Detect unreleased dependencies (push) Has been cancelled
tests / test with OCB (push) Has been cancelled
tests / test with Odoo (push) Has been cancelled
Initial commit: Odoo 18.0-20251222 extra-addons
2026-03-13 20:43:25 +00:00

51 lines
2.1 KiB
Python

# © 2016 Chafique DELLI @ Akretion
# License AGPL-3.0 or later (http://www.gnu.org/licenses/agpl.html).
from odoo import models
from odoo.tools import float_compare
class AccountMoveLine(models.Model):
_inherit = "account.move.line"
def _get_supplierinfo(self):
"""Given an invoice line, return the supplierinfo that matches
with product and supplier, if exist"""
self.ensure_one()
supplierinfos = self.product_id.seller_ids.filtered(
lambda seller: seller.partner_id == self.move_id.supplier_partner_id
)
return supplierinfos and supplierinfos[0] or False
def _is_matching_supplierinfo(self, supplierinfo):
"""Return True if the partner information matches with line information"""
self.ensure_one()
res = (
not self.product_uom_id or self.product_uom_id == supplierinfo.product_uom
) and not float_compare(
self.price_unit,
supplierinfo.price,
precision_rounding=self.move_id.currency_id.rounding,
)
precision = self.env["decimal.precision"].precision_get("Discount")
return res and not float_compare(
self.discount, supplierinfo.discount, precision_digits=precision
)
def _prepare_supplier_wizard_line(self, supplierinfo):
"""Prepare the value that will proposed to user in the wizard
to update supplierinfo"""
self.ensure_one()
return {
"product_id": self.product_id.id,
"supplierinfo_id": supplierinfo and supplierinfo.id or False,
"current_price": supplierinfo and supplierinfo.price or False,
"new_price": self.price_unit,
"current_uom_id": supplierinfo and supplierinfo.product_uom.id or False,
"new_uom_id": self.product_uom_id.id or self.product_id.uom_po_id.id,
"current_min_quantity": supplierinfo and supplierinfo.min_qty or False,
"new_min_quantity": supplierinfo and supplierinfo.min_qty or False,
"current_discount": supplierinfo and supplierinfo.discount,
"new_discount": self.discount,
}