Files
stock-rma/rma_account/models/rma_operation.py

58 lines
2.0 KiB
Python

# Copyright 2017-22 ForgeFlow S.L.
# License LGPL-3.0 or later (https://www.gnu.org/licenses/lgpl.html)
from odoo import api, fields, models
class RmaOperation(models.Model):
_inherit = "rma.operation"
refund_policy = fields.Selection(
[
("no", "No refund"),
("ordered", "Based on Ordered Quantities"),
("delivered", "Based on Delivered Quantities"),
("received", "Based on Received Quantities"),
],
default="no",
)
refund_journal_id = fields.Many2one(
comodel_name="account.journal",
string="Refund Account Journal",
domain="[('id', 'in', valid_refund_journal_ids)]",
)
valid_refund_journal_ids = fields.Many2many(
comodel_name="account.journal",
compute="_compute_domain_valid_journal",
)
automated_refund = fields.Boolean(
help="In the scenario where a company uses anglo-saxon accounting, if "
"you receive products from a customer and don't expect to refund the customer "
"but send a replacement unit, mark this flag to be accounting consistent"
)
refund_free_of_charge = fields.Boolean(
help="In case of automated refund you should mark this option as long automated"
"refunds mean to compensate Stock Interim accounts only without hitting"
"Accounts receivable"
)
@api.onchange("type")
def _compute_domain_valid_journal(self):
for rec in self:
if rec.type == "customer":
rec.valid_refund_journal_ids = self.env["account.journal"].search(
[("type", "=", "sale")]
)
else:
rec.valid_refund_journal_ids = self.env["account.journal"].search(
[("type", "=", "purchase")]
)
@api.onchange("automated_refund")
def _onchange_automated_refund(self):
for rec in self:
if rec.automated_refund:
rec.refund_free_of_charge = True