mirror of
https://github.com/ForgeFlow/stock-rma.git
synced 2025-01-21 12:57:49 +02:00
99 lines
3.2 KiB
Python
99 lines
3.2 KiB
Python
# Copyright 2017-18 ForgeFlow
|
|
# License LGPL-3.0 or later (https://www.gnu.org/licenses/lgpl.html)
|
|
|
|
from odoo import api, fields, models
|
|
|
|
|
|
class RmaOperation(models.Model):
|
|
_name = "rma.operation"
|
|
_description = "RMA Operation"
|
|
|
|
@api.model
|
|
def _default_warehouse_id(self):
|
|
company_id = self.env.user.company_id.id
|
|
warehouse = self.env["stock.warehouse"].search(
|
|
[("company_id", "=", company_id)], limit=1
|
|
)
|
|
return warehouse
|
|
|
|
@api.model
|
|
def _default_customer_location_id(self):
|
|
return self.env.ref("stock.stock_location_customers") or False
|
|
|
|
@api.model
|
|
def _default_supplier_location_id(self):
|
|
return self.env.ref("stock.stock_location_suppliers") or False
|
|
|
|
@api.model
|
|
def _default_routes(self):
|
|
op_type = self.env.context.get("default_type")
|
|
if op_type == "customer":
|
|
return self.env.ref("rma.route_rma_customer")
|
|
elif op_type == "supplier":
|
|
return self.env.ref("rma.route_rma_supplier")
|
|
|
|
name = fields.Char("Description", required=True)
|
|
code = fields.Char("Code", required=True)
|
|
active = fields.Boolean(string="Active", default=True)
|
|
receipt_policy = fields.Selection(
|
|
[
|
|
("no", "Not required"),
|
|
("ordered", "Based on Ordered Quantities"),
|
|
("delivered", "Based on Delivered Quantities"),
|
|
],
|
|
string="Receipts Policy",
|
|
default="no",
|
|
)
|
|
delivery_policy = fields.Selection(
|
|
[
|
|
("no", "Not required"),
|
|
("ordered", "Based on Ordered Quantities"),
|
|
("received", "Based on Received Quantities"),
|
|
],
|
|
string="Delivery Policy",
|
|
default="no",
|
|
)
|
|
in_route_id = fields.Many2one(
|
|
comodel_name="stock.location.route",
|
|
string="Inbound Route",
|
|
domain=[("rma_selectable", "=", True)],
|
|
default=lambda self: self._default_routes(),
|
|
)
|
|
out_route_id = fields.Many2one(
|
|
comodel_name="stock.location.route",
|
|
string="Outbound Route",
|
|
domain=[("rma_selectable", "=", True)],
|
|
default=lambda self: self._default_routes(),
|
|
)
|
|
customer_to_supplier = fields.Boolean(
|
|
string="The customer will send to the supplier"
|
|
)
|
|
supplier_to_customer = fields.Boolean(
|
|
string="The supplier will send to the customer"
|
|
)
|
|
in_warehouse_id = fields.Many2one(
|
|
comodel_name="stock.warehouse",
|
|
string="Inbound Warehouse",
|
|
default=lambda self: self._default_warehouse_id(),
|
|
)
|
|
out_warehouse_id = fields.Many2one(
|
|
comodel_name="stock.warehouse",
|
|
string="Outbound Warehouse",
|
|
default=lambda self: self._default_warehouse_id(),
|
|
)
|
|
location_id = fields.Many2one("stock.location", "Send To This Company Location")
|
|
type = fields.Selection(
|
|
[("customer", "Customer"), ("supplier", "Supplier")],
|
|
string="Used in RMA of this type",
|
|
required=True,
|
|
)
|
|
rma_line_ids = fields.One2many(
|
|
comodel_name="rma.order.line", inverse_name="operation_id", string="RMA lines"
|
|
)
|
|
company_id = fields.Many2one(
|
|
comodel_name="res.company",
|
|
string="Company",
|
|
required=True,
|
|
default=lambda self: self.env.user.company_id,
|
|
)
|