mirror of
https://github.com/bringout/oca-warehouse.git
synced 2026-04-23 03:42:00 +02:00
127 lines
4.8 KiB
Python
127 lines
4.8 KiB
Python
# Copyright 2019 Sergio Teruel <sergio.teruel@tecnativa.com>
|
|
# License AGPL-3.0 or later (http://www.gnu.org/licenses/agpl.html).
|
|
from odoo import fields, models
|
|
|
|
|
|
class StockBarcodesOptionGroup(models.Model):
|
|
_name = "stock.barcodes.option.group"
|
|
_description = "Options group for barcode interface"
|
|
|
|
name = fields.Char()
|
|
code = fields.Char()
|
|
option_ids = fields.One2many(
|
|
comodel_name="stock.barcodes.option", inverse_name="option_group_id", copy=True
|
|
)
|
|
barcode_guided_mode = fields.Selection(
|
|
[("guided", "Guided")],
|
|
string="Mode",
|
|
help="When guided mode is selected, information will appear with the "
|
|
"movement to be processed",
|
|
)
|
|
manual_entry = fields.Boolean(
|
|
string="Manual entry",
|
|
help="Default value when open scan interface",
|
|
)
|
|
manual_entry_field_focus = fields.Char(
|
|
help="Set field to set focus when manual entry mode is enabled",
|
|
default="location_id",
|
|
)
|
|
confirmed_moves = fields.Boolean(
|
|
string="Confirmed moves",
|
|
help="It allows to work with movements without reservation "
|
|
"(Without detailed operations)",
|
|
)
|
|
show_pending_moves = fields.Boolean(
|
|
string="Show pending moves", help="Shows a list of movements to process"
|
|
)
|
|
source_pending_moves = fields.Selection(
|
|
[("move_line_ids", "Detailed operations"), ("move_ids", "Operations")],
|
|
default="move_line_ids",
|
|
help="Origin of the data to generate the movements to process",
|
|
)
|
|
ignore_filled_fields = fields.Boolean(
|
|
string="Ignore filled fields",
|
|
)
|
|
auto_put_in_pack = fields.Boolean(
|
|
string="Auto put in pack", help="Auto put in pack before picking validation"
|
|
)
|
|
is_manual_qty = fields.Boolean(
|
|
help="If it is checked, it always shows the product quantity field in edit mode"
|
|
)
|
|
is_manual_confirm = fields.Boolean(
|
|
help="If it is marked, the movement must always be confirmed from a button"
|
|
)
|
|
allow_negative_quant = fields.Boolean(
|
|
help="If it is checked, it will allow the creation of movements that "
|
|
"generate negative stock"
|
|
)
|
|
fill_fields_from_lot = fields.Boolean(
|
|
help="If checked, the fields in the interface will be filled from "
|
|
"the scanned lot"
|
|
)
|
|
ignore_quant_location = fields.Boolean(
|
|
help="If it is checked, quant location will be ignored when reading lot/package",
|
|
)
|
|
group_key_for_todo_records = fields.Char(
|
|
help="You can establish a list of fields that will act as a grouping "
|
|
"key to generate the movements to be process.\n"
|
|
"The object variable is used to refer to the source record\n"
|
|
"For example, object.location_id,object.product_id,object.lot_id"
|
|
)
|
|
auto_lot = fields.Boolean(
|
|
string="Get lots automatically",
|
|
help="If checked the lot will be set automatically with the same "
|
|
"removal startegy",
|
|
)
|
|
create_lot = fields.Boolean(
|
|
string="Create lots if not match",
|
|
help="If checked the lot will created automatically with the scanned barcode "
|
|
"if not exists ",
|
|
)
|
|
show_detailed_operations = fields.Boolean(
|
|
help="If checked the picking detailed operations are displayed",
|
|
)
|
|
keep_screen_values = fields.Boolean(
|
|
help="If checked the wizard values are kept until the pending move is completed",
|
|
)
|
|
accumulate_read_quantity = fields.Boolean(
|
|
help="If checked quantity will be accumulated to the existing record instead of "
|
|
"overwrite it with the new quantity value",
|
|
)
|
|
display_notification = fields.Boolean(
|
|
string="Display Odoo notifications",
|
|
)
|
|
use_location_dest_putaway = fields.Boolean(
|
|
string="Use location dest. putaway",
|
|
)
|
|
location_field_to_sort = fields.Selection(
|
|
selection=[
|
|
("location_id", "Origin Location"),
|
|
("location_dest_id", "Destination Location"),
|
|
]
|
|
)
|
|
display_read_quant = fields.Boolean(string="Read items on inventory mode")
|
|
|
|
def get_option_value(self, field_name, attribute):
|
|
option = self.option_ids.filtered(lambda op: op.field_name == field_name)[:1]
|
|
return option[attribute]
|
|
|
|
|
|
class StockBarcodesOption(models.Model):
|
|
_name = "stock.barcodes.option"
|
|
_description = "Options for barcode interface"
|
|
_order = "step, sequence, id"
|
|
|
|
sequence = fields.Integer(default=100)
|
|
name = fields.Char()
|
|
option_group_id = fields.Many2one(
|
|
comodel_name="stock.barcodes.option.group", ondelete="cascade"
|
|
)
|
|
field_name = fields.Char()
|
|
filled_default = fields.Boolean()
|
|
forced = fields.Boolean()
|
|
to_scan = fields.Boolean()
|
|
required = fields.Boolean()
|
|
clean_after_done = fields.Boolean()
|
|
message = fields.Char()
|
|
step = fields.Integer()
|