Initial commit: Odoo 18.0-20251222 extra-addons
This commit is contained in:
37
sale_stock_picking_invoicing/models/sale_order.py
Normal file
37
sale_stock_picking_invoicing/models/sale_order.py
Normal file
@@ -0,0 +1,37 @@
|
||||
# Copyright (C) 2020-TODAY Akretion
|
||||
# @author Magno Costa <magno.costa@akretion.com.br>
|
||||
# License AGPL-3.0 or later (http://www.gnu.org/licenses/agpl).
|
||||
|
||||
from odoo import models
|
||||
from odoo.exceptions import UserError
|
||||
|
||||
|
||||
class SaleOrder(models.Model):
|
||||
_inherit = "sale.order"
|
||||
|
||||
def _get_invoiceable_lines(self, final=False):
|
||||
"""Return the invoiceable lines for order `self`."""
|
||||
lines = super()._get_invoiceable_lines(final)
|
||||
model = self.env.context.get("active_model")
|
||||
if (
|
||||
self.company_id.sale_invoicing_policy == "stock_picking"
|
||||
and model != "stock.picking"
|
||||
):
|
||||
new_lines = lines.filtered(
|
||||
lambda ln: not ln.product_id.is_storable and not ln.is_downpayment
|
||||
)
|
||||
if new_lines:
|
||||
# Case lines with Product Type 'service'
|
||||
lines = new_lines
|
||||
else:
|
||||
# Case only Products Type 'product'
|
||||
raise UserError(
|
||||
self.env._(
|
||||
"When 'Sale Invoicing Policy' is defined as"
|
||||
"'Stock Picking' the Invoice can only be created"
|
||||
" from the Stock Picking, if necessary you can change"
|
||||
" in the Company or Sale Settings."
|
||||
)
|
||||
)
|
||||
|
||||
return lines
|
||||
Reference in New Issue
Block a user