mirror of
https://github.com/bringout/oca-technical.git
synced 2026-04-20 08:12:03 +02:00
77 lines
2.7 KiB
Python
77 lines
2.7 KiB
Python
# Copyright 2016-20 ForgeFlow S.L. (http://www.forgeflow.com)
|
|
# Copyright 2016 Aleph Objects, Inc. (https://www.alephobjects.com/)
|
|
# License LGPL-3.0 or later (https://www.gnu.org/licenses/lgpl.html).
|
|
|
|
from odoo import api, fields, models
|
|
|
|
_REPLENISH_METHODS = [
|
|
("replenish", "Replenished"),
|
|
("replenish_override", "Replenished Override"),
|
|
("min_max", "Min-max"),
|
|
]
|
|
_ITEM_TYPES = [
|
|
("manufactured", "Manufactured"),
|
|
("purchased", "Purchased"),
|
|
("distributed", "Distributed"),
|
|
]
|
|
|
|
|
|
class StockBufferProfile(models.Model):
|
|
_name = "stock.buffer.profile"
|
|
_description = "Stock Buffer Profile"
|
|
|
|
@api.depends(
|
|
"item_type",
|
|
"lead_time_id",
|
|
"lead_time_id.name",
|
|
"lead_time_id.factor",
|
|
"variability_id",
|
|
"variability_id.name",
|
|
"variability_id.factor",
|
|
"distributed_reschedule_max_proc_time",
|
|
)
|
|
def _compute_name(self):
|
|
"""Get the right summary for this job."""
|
|
for rec in self:
|
|
name = "{} {}, {}({}), {}({})".format(
|
|
rec.replenish_method,
|
|
rec.item_type,
|
|
rec.lead_time_id.name,
|
|
rec.lead_time_id.factor,
|
|
rec.variability_id.name,
|
|
rec.variability_id.factor,
|
|
)
|
|
if rec.distributed_reschedule_max_proc_time > 0.0:
|
|
name += ", {}min".format(rec.distributed_reschedule_max_proc_time)
|
|
rec.name = name
|
|
|
|
name = fields.Char(compute="_compute_name", store=True)
|
|
replenish_method = fields.Selection(
|
|
string="Replenishment method", selection=_REPLENISH_METHODS, required=True
|
|
)
|
|
item_type = fields.Selection(selection=_ITEM_TYPES, required=True)
|
|
lead_time_id = fields.Many2one(
|
|
comodel_name="stock.buffer.profile.lead.time", string="Lead Time Factor"
|
|
)
|
|
variability_id = fields.Many2one(
|
|
comodel_name="stock.buffer.profile.variability", string="Variability Factor"
|
|
)
|
|
company_id = fields.Many2one(
|
|
"res.company",
|
|
"Company",
|
|
)
|
|
|
|
replenish_distributed_limit_to_free_qty = fields.Boolean(
|
|
string="Limit replenishment to free quantity",
|
|
default=False,
|
|
help="When activated, the recommended quantity will be maxed at "
|
|
"the quantity available in the replenishment source location.",
|
|
)
|
|
distributed_reschedule_max_proc_time = fields.Float(
|
|
string="Re-Schedule Procurement Max Proc. Time (minutes)",
|
|
default=0.0,
|
|
help="When you request procurement from a buffer, their scheduled"
|
|
" date is rescheduled to now + this procurement time (in minutes)."
|
|
" Their scheduled date represents the latest the transfers should"
|
|
" be done, and therefore, past this timestamp, considered late.",
|
|
)
|