Initial commit: Ventor Odoo packages (4 packages)
39
odoo-bringout-ventor-ventor_base/ventor_base/README.rst
Normal file
|
|
@ -0,0 +1,39 @@
|
|||
Ventor Base
|
||||
=========================
|
||||
|
||||
Base module that allow relation between Ventor modules
|
||||
|
||||
Changelog
|
||||
---------
|
||||
|
||||
16.0.1.4.0 (2023-11-04)
|
||||
***********************
|
||||
|
||||
* Added the setting "Check shipping information" to the Package Management menu
|
||||
* Added the setting "Scan destination location once" to the Warehouse Operations menu
|
||||
* Added the setting "Prohibition on updating inventory" to the Instant Inventory menu
|
||||
* Added "Hide product's quantity" and "Hide Apply button" settings in the Inventory Adjustments menu
|
||||
* Fixed tests
|
||||
|
||||
16.0.1.3.0 (2023-06-26)
|
||||
***********************
|
||||
|
||||
* Added the setting "Force pack" to the Package Management menu
|
||||
* Added the setting "Show quantity dialog first" to the Create SO and Create PO menus
|
||||
* Added Wave Picking Menu
|
||||
* Renamed the "Force destination package scan“ setting to “Confirm destination package“
|
||||
* Added setting “Use reusable packages“ to Cluster picking menu
|
||||
|
||||
16.0.1.2.0 (2023-03-06)
|
||||
***********************
|
||||
|
||||
* Added RFID menu
|
||||
* Added the barcode of the Sale order name to the Picking Operations report for outgoing transfers
|
||||
* Added "Order Recheck" menu
|
||||
|
||||
16.0.1.1.0 (2022-12-23)
|
||||
***********************
|
||||
|
||||
* Added the setting "Save transfer after exit" to the Internal Transfers menu
|
||||
* Added the setting "Allow creating new packages" to menus Instant Inventory, Batch Picking, Cluster Picking, Internal Transfers, and all Operation Types
|
||||
* Added the ability to move pallets
|
||||
59
odoo-bringout-ventor-ventor_base/ventor_base/__init__.py
Normal file
|
|
@ -0,0 +1,59 @@
|
|||
# Copyright 2020 VentorTech OU
|
||||
# License LGPL-3.0 or later (https://www.gnu.org/licenses/lgpl-3.0).
|
||||
|
||||
from . import models
|
||||
from . import report
|
||||
from odoo import api, SUPERUSER_ID
|
||||
|
||||
def _post_init_hook(cr, registry):
|
||||
"""
|
||||
This hook updates Ventor Settings in Operation Types
|
||||
And adds to all users to Ventor - Administrator Role
|
||||
"""
|
||||
env = api.Environment(cr, SUPERUSER_ID, {})
|
||||
|
||||
users_model = env['res.users']
|
||||
|
||||
values = [(4, user.id) for user in users_model.search([])]
|
||||
env.ref('ventor_base.ventor_role_admin').users = values
|
||||
|
||||
cr.execute(
|
||||
"""
|
||||
UPDATE stock_picking_type
|
||||
SET
|
||||
change_destination_location = True,
|
||||
show_next_product = CASE code when 'incoming' THEN False ELSE True END
|
||||
"""
|
||||
)
|
||||
|
||||
users = users_model.with_context(active_test=False).search(
|
||||
[
|
||||
('allowed_warehouse_ids', '=', False),
|
||||
('share', '=', False)
|
||||
]
|
||||
)
|
||||
warehouses = env['stock.warehouse'].with_context(active_test=False).search([])
|
||||
for user in users:
|
||||
user.allowed_warehouse_ids = [(6, 0, warehouses.ids)]
|
||||
|
||||
group_settings = env['res.config.settings'].default_get(
|
||||
[
|
||||
'group_stock_tracking_lot',
|
||||
]
|
||||
)
|
||||
|
||||
if group_settings.get('group_stock_tracking_lot'):
|
||||
ventor_packages_settings = env['ventor.option.setting'].search(
|
||||
[
|
||||
('technical_name', '=', 'manage_packages'),
|
||||
]
|
||||
)
|
||||
ventor_packages_settings.value = env.ref('ventor_base.bool_true')
|
||||
|
||||
if group_settings.get('group_stock_tracking_owner'):
|
||||
ventor_owner_settings = env['ventor.option.setting'].search(
|
||||
[
|
||||
('technical_name', '=', 'manage_product_owner'),
|
||||
]
|
||||
)
|
||||
ventor_owner_settings.value = env.ref('ventor_base.bool_true')
|
||||
40
odoo-bringout-ventor-ventor_base/ventor_base/__manifest__.py
Normal file
|
|
@ -0,0 +1,40 @@
|
|||
# Copyright 2020 VentorTech OU
|
||||
# License LGPL-3.0 or later (https://www.gnu.org/licenses/lgpl-3.0).
|
||||
|
||||
{
|
||||
'name': 'Ventor Base',
|
||||
'version': '16.0.1.4.0',
|
||||
'author': 'VentorTech',
|
||||
'website': 'https://ventor.tech/',
|
||||
'license': 'LGPL-3',
|
||||
'installable': True,
|
||||
'images': ['static/description/main_banner.png'],
|
||||
'summary': 'Base module that allow relation between Ventor modules',
|
||||
'depends': [
|
||||
'base',
|
||||
'stock',
|
||||
'stock_picking_batch',
|
||||
],
|
||||
'data': [
|
||||
'security/groups.xml',
|
||||
'security/ir.model.access.csv',
|
||||
'data/ventor_setting.xml',
|
||||
'data/ventor_option_setting.xml',
|
||||
'data/ventor_sequence_data.xml',
|
||||
'report/report_stockpicking_operations.xml',
|
||||
'views/res_config.xml',
|
||||
'views/res_users.xml',
|
||||
'views/stock_location.xml',
|
||||
'views/stock_picking.xml',
|
||||
'views/stock_quant.xml',
|
||||
'views/stock_warehouse.xml',
|
||||
'views/ventor_option_setting.xml',
|
||||
'views/pallet_transfer.xml',
|
||||
],
|
||||
'post_init_hook': '_post_init_hook',
|
||||
'assets': {
|
||||
'web.assets_backend': [
|
||||
'ventor_base/static/src/**/*',
|
||||
],
|
||||
}
|
||||
}
|
||||
|
|
@ -0,0 +1,15 @@
|
|||
<?xml version="1.0" encoding="utf-8"?>
|
||||
<odoo>
|
||||
<data noupdate="1">
|
||||
<!-- Sequences for Pallet Transfers-->
|
||||
<record id="sequence_pallet_transfer" model="ir.sequence">
|
||||
<field name="name">Pallet Transfers</field>
|
||||
<field name="code">pallet.transfer</field>
|
||||
<field name="prefix">PT/</field>
|
||||
<field name="padding">5</field>
|
||||
<field name="number_next">1</field>
|
||||
<field name="number_increment">1</field>
|
||||
<field name="company_id"></field>
|
||||
</record>
|
||||
</data>
|
||||
</odoo>
|
||||
|
|
@ -0,0 +1,52 @@
|
|||
<?xml version="1.0" encoding="utf-8"?>
|
||||
<odoo>
|
||||
<record id="bool_true" model="ventor.setting.value">
|
||||
<field name="setting_type">bool</field>
|
||||
<field name="setting_value">True</field>
|
||||
</record>
|
||||
|
||||
<record id="bool_false" model="ventor.setting.value">
|
||||
<field name="setting_type">bool</field>
|
||||
<field name="setting_value">False</field>
|
||||
</record>
|
||||
|
||||
<record id="always_create_backorder" model="ventor.setting.value">
|
||||
<field name="setting_type">behavior_on_backorder_creation</field>
|
||||
<field name="setting_value">Always Create Backorder</field>
|
||||
</record>
|
||||
|
||||
<record id="never_create_backorder" model="ventor.setting.value">
|
||||
<field name="setting_type">behavior_on_backorder_creation</field>
|
||||
<field name="setting_value">Never Create Backorder</field>
|
||||
</record>
|
||||
|
||||
<record id="ask_me_every_time" model="ventor.setting.value">
|
||||
<field name="setting_type">behavior_on_backorder_creation</field>
|
||||
<field name="setting_value">Ask Me Every Time</field>
|
||||
</record>
|
||||
|
||||
<record id="always_create_backorder_split" model="ventor.setting.value">
|
||||
<field name="setting_type">behavior_on_split_operation</field>
|
||||
<field name="setting_value">Always Split the Line</field>
|
||||
</record>
|
||||
|
||||
<record id="never_create_backorder_split" model="ventor.setting.value">
|
||||
<field name="setting_type">behavior_on_split_operation</field>
|
||||
<field name="setting_value">Always Move Less Items</field>
|
||||
</record>
|
||||
|
||||
<record id="ask_me_every_time_split" model="ventor.setting.value">
|
||||
<field name="setting_type">behavior_on_split_operation</field>
|
||||
<field name="setting_value">Ask Me Every Time</field>
|
||||
</record>
|
||||
|
||||
<record id="save_transfer" model="ventor.setting.value">
|
||||
<field name="setting_type">save_transfer_after_exit</field>
|
||||
<field name="setting_value">Save transfer</field>
|
||||
</record>
|
||||
|
||||
<record id="cancel_transfer" model="ventor.setting.value">
|
||||
<field name="setting_type">save_transfer_after_exit</field>
|
||||
<field name="setting_value">Cancel transfer</field>
|
||||
</record>
|
||||
</odoo>
|
||||
35
odoo-bringout-ventor-ventor_base/ventor_base/doc/index.rst
Normal file
|
|
@ -0,0 +1,35 @@
|
|||
Ventor Base
|
||||
===========
|
||||
|
||||
|
|
||||
|
||||
**Base module that allow relation between Ventor modules**
|
||||
|
||||
Change Log
|
||||
##########
|
||||
|
||||
|
|
||||
|
||||
* 16.0.1.4.0 (2023-11-04)
|
||||
- Added the setting "Check shipping information" to the Package Management menu
|
||||
- Added the setting "Scan destination location once" to the Warehouse Operations menu
|
||||
- Added the setting "Prohibition on updating inventory" to the Instant Inventory menu
|
||||
- Added "Hide product's quantity" and "Hide Apply button" settings in the Inventory Adjustments menu
|
||||
- Fixed tests
|
||||
|
||||
* 16.0.1.3.0 (2023-06-26)
|
||||
- Added the setting "Force pack" to the Package Management menu
|
||||
- Added the setting "Show quantity dialog first" to the Create SO and Create PO menus
|
||||
- Added Wave Picking Menu
|
||||
- Renamed the "Force destination package scan“ setting to “Confirm destination package“
|
||||
- Added setting “Use reusable packages“ to Cluster picking menu
|
||||
|
||||
* 16.0.1.2.0 (2023-03-06)
|
||||
- Added RFID menu
|
||||
- Added the barcode of the Sale order name to the Picking Operations report for outgoing transfers
|
||||
- Added "Order Recheck" menu
|
||||
|
||||
* 16.0.1.1.0 (2022-12-23)
|
||||
- Added the setting "Save transfer after exit" to the Internal Transfers menu
|
||||
- Added the setting "Allow creating new packages" to menus Instant Inventory, Batch Picking, Cluster Picking, Internal Transfers, and all Operation Types
|
||||
- Added the ability to move pallets
|
||||
741
odoo-bringout-ventor-ventor_base/ventor_base/i18n/bs.po
Normal file
|
|
@ -0,0 +1,741 @@
|
|||
# Translation of Odoo Server.
|
||||
# This file contains the translation of the following modules:
|
||||
# * ventor_base
|
||||
#
|
||||
msgid ""
|
||||
msgstr ""
|
||||
"Project-Id-Version: Odoo Server 15.0+e\n"
|
||||
"Report-Msgid-Bugs-To: \n"
|
||||
"POT-Creation-Date: 2022-08-18 13:43+0000\n"
|
||||
"PO-Revision-Date: 2022-08-18 13:43+0000\n"
|
||||
"Last-Translator: \n"
|
||||
"Language-Team: \n"
|
||||
"MIME-Version: 1.0\n"
|
||||
"Content-Type: text/plain; charset=UTF-8\n"
|
||||
"Content-Transfer-Encoding: \n"
|
||||
"Plural-Forms: \n"
|
||||
|
||||
#. module: ventor_base
|
||||
#: code:addons/ventor_base/models/stock_picking.py:0
|
||||
#, python-format
|
||||
msgid ""
|
||||
"'Autocomplete item quantity' is available only if 'Change destination "
|
||||
"location' is enabled"
|
||||
msgstr ""
|
||||
|
||||
#. module: ventor_base
|
||||
#: code:addons/ventor_base/models/stock_picking.py:0
|
||||
#, python-format
|
||||
msgid ""
|
||||
"'Change source location' is available only if 'Confirm source location' is "
|
||||
"enabled"
|
||||
msgstr ""
|
||||
|
||||
#. module: ventor_base
|
||||
#: model_terms:ir.ui.view,arch_db:ventor_base.view_stock_config_settings
|
||||
msgid "<span class=\"o_form_label\">Custom Build Name</span>"
|
||||
msgstr "<span class=\"o_form_label\">Custom Build Name</span>"
|
||||
|
||||
#. module: ventor_base
|
||||
#: model_terms:ir.ui.view,arch_db:ventor_base.view_stock_config_settings
|
||||
msgid "<span class=\"o_form_label\">Custom Mobile Logo</span>"
|
||||
msgstr "<span class=\"o_form_label\">Custom Mobile Logo</span>"
|
||||
|
||||
#. module: ventor_base
|
||||
#: model_terms:ir.ui.view,arch_db:ventor_base.view_stock_config_settings
|
||||
msgid "Add Outgoing Routing strategy options (sort locations)"
|
||||
msgstr "Add Outgoing Routing strategy options (sort locations)"
|
||||
|
||||
#. module: ventor_base
|
||||
#: model_terms:ir.ui.view,arch_db:ventor_base.view_stock_config_settings
|
||||
msgid "Additional Customisation"
|
||||
msgstr "Additional Customisation"
|
||||
|
||||
#. module: ventor_base
|
||||
#: model:res.groups,name:ventor_base.ventor_role_admin
|
||||
msgid "Administrator"
|
||||
msgstr "Administrator"
|
||||
|
||||
#. module: ventor_base
|
||||
#: model:ir.model.fields,help:ventor_base.field_stock_picking_type__manage_product_owner
|
||||
msgid ""
|
||||
"Allow scan product owner. You can specify product owner while moving items. "
|
||||
"Working only with 'Consignment' setting on Odoo side"
|
||||
msgstr ""
|
||||
|
||||
#. module: ventor_base
|
||||
#: model:ir.model.fields,field_description:ventor_base.field_res_users__allowed_warehouse_ids
|
||||
msgid "Allowed Warehouses"
|
||||
msgstr "Allowed Warehouses"
|
||||
|
||||
#. module: ventor_base
|
||||
#: model:ir.model.fields,help:ventor_base.field_stock_picking_type__transfer_more_items
|
||||
msgid "Allows moving more items than expected (for example kg of meat, etc)"
|
||||
msgstr "Allows moving more items than expected (for example kg of meat, etc)"
|
||||
|
||||
#. module: ventor_base
|
||||
#: model:ir.model.fields.selection,name:ventor_base.selection__stock_picking_type__behavior_on_backorder_creation__always_create_backorder
|
||||
msgid "Always Create Backorder"
|
||||
msgstr "Always Create Backorder"
|
||||
|
||||
#. module: ventor_base
|
||||
#: model:ir.model.fields.selection,name:ventor_base.selection__stock_picking_type__behavior_on_split_operation__always_move_less_items
|
||||
msgid "Always Move Less Items"
|
||||
msgstr "Always Move Less Items"
|
||||
|
||||
#. module: ventor_base
|
||||
#: model:ir.model.fields.selection,name:ventor_base.selection__stock_picking_type__behavior_on_split_operation__always_split_line
|
||||
msgid "Always Split the Line"
|
||||
msgstr "Always Split the Line"
|
||||
|
||||
#. module: ventor_base
|
||||
#: code:addons/ventor_base/models/res_company.py:0
|
||||
#, python-format
|
||||
msgid ""
|
||||
"Apparently, the logotype is not a .png file or the file was incorrectly "
|
||||
"converted to .png format"
|
||||
msgstr ""
|
||||
|
||||
#. module: ventor_base
|
||||
#: model:ir.model.fields,field_description:ventor_base.field_stock_picking_type__apply_default_lots
|
||||
msgid "Apply default lots and serials"
|
||||
msgstr "Apply default lots and serials"
|
||||
|
||||
#. module: ventor_base
|
||||
#: model:ir.model.fields,field_description:ventor_base.field_stock_picking_type__apply_quantity_automatically
|
||||
msgid "Apply quantity automatically"
|
||||
msgstr "Apply quantity automatically"
|
||||
|
||||
#. module: ventor_base
|
||||
#: model:ir.model.fields.selection,name:ventor_base.selection__stock_picking_type__behavior_on_backorder_creation__ask_me_every_time
|
||||
#: model:ir.model.fields.selection,name:ventor_base.selection__stock_picking_type__behavior_on_split_operation__ask_me_every_time
|
||||
msgid "Ask Me Every Time"
|
||||
msgstr "Ask Me Every Time"
|
||||
|
||||
#. module: ventor_base
|
||||
#: model:ir.model.fields,field_description:ventor_base.field_stock_picking_type__autocomplete_the_item_quantity_field
|
||||
msgid "Autocomplete item quantity"
|
||||
msgstr "Autocomplete item quantity"
|
||||
|
||||
#. module: ventor_base
|
||||
#: model:ir.model.fields,help:ventor_base.field_stock_picking_type__autocomplete_the_item_quantity_field
|
||||
msgid ""
|
||||
"Automatically insert expected quantity. No need to enter the quantity of "
|
||||
"goods using the keyboard or using scanning"
|
||||
msgstr ""
|
||||
|
||||
#. module: ventor_base
|
||||
#: model:ir.model.fields,help:ventor_base.field_stock_picking_type__apply_quantity_automatically
|
||||
msgid ""
|
||||
"Automatically validate the line after scanning a destination location. "
|
||||
"Warning: you have to insert QTY first before destination location"
|
||||
msgstr ""
|
||||
|
||||
#. module: ventor_base
|
||||
#: model:ir.model.fields,field_description:ventor_base.field_res_config_settings__base_version
|
||||
#: model_terms:ir.ui.view,arch_db:ventor_base.view_stock_config_settings
|
||||
msgid "Base Module Version"
|
||||
msgstr "Base Module Version"
|
||||
|
||||
#. module: ventor_base
|
||||
#: model:ir.actions.act_window,name:ventor_base.ventor_batch_picking_action
|
||||
#: model:ir.model.fields.selection,name:ventor_base.selection__ventor_option_setting__action_type__batch_picking
|
||||
#: model:ir.ui.menu,name:ventor_base.ventor_batch_picking_app_menu
|
||||
msgid "Batch Picking"
|
||||
msgstr "Batch Izbor"
|
||||
|
||||
#. module: ventor_base
|
||||
#: model:res.groups,name:ventor_base.merp_menu_picking_wave
|
||||
msgid "Batch Picking Menu"
|
||||
msgstr "Batch Izbor Menu"
|
||||
|
||||
#. module: ventor_base
|
||||
#: model:res.groups,name:ventor_base.merp_picking_wave_allow_done
|
||||
msgid "Batch Picking: Close batch picking"
|
||||
msgstr "Batch Izbor: Close batch picking"
|
||||
|
||||
#. module: ventor_base
|
||||
#: model:ir.model.fields,field_description:ventor_base.field_stock_picking_type__behavior_on_backorder_creation
|
||||
msgid "Behavior On Backorder Creation"
|
||||
msgstr "Behavior On Backorder Creation"
|
||||
|
||||
#. module: ventor_base
|
||||
#: model:ir.model.fields,field_description:ventor_base.field_stock_picking_type__behavior_on_split_operation
|
||||
msgid "Behavior On Split Operation"
|
||||
msgstr "Behavior On Split Operation"
|
||||
|
||||
#. module: ventor_base
|
||||
#: model:ir.model.fields.selection,name:ventor_base.selection__ventor_option_setting__value_type__bool
|
||||
msgid "Boolean"
|
||||
msgstr "Logički"
|
||||
|
||||
#. module: ventor_base
|
||||
#: model:ir.model.fields,field_description:ventor_base.field_stock_picking_type__change_destination_location
|
||||
msgid "Change destination location"
|
||||
msgstr "Change destination location"
|
||||
|
||||
#. module: ventor_base
|
||||
#: model:ir.model.fields,field_description:ventor_base.field_stock_picking_type__change_source_location
|
||||
msgid "Change source location"
|
||||
msgstr "Change source location"
|
||||
|
||||
#. module: ventor_base
|
||||
#: model:ir.model.fields,field_description:ventor_base.field_stock_picking_type__check_shipping_information
|
||||
msgid "Check shipping information"
|
||||
msgstr "Check shipping information"
|
||||
|
||||
#. module: ventor_base
|
||||
#: model:ir.model.fields,help:ventor_base.field_stock_picking_type__behavior_on_backorder_creation
|
||||
msgid ""
|
||||
"Choose how to process backorders. You can always create backorders, always "
|
||||
"ignore backorders or choose it all the time (default)"
|
||||
msgstr ""
|
||||
|
||||
#. module: ventor_base
|
||||
#: model:ir.model.fields,help:ventor_base.field_stock_picking_type__behavior_on_split_operation
|
||||
msgid ""
|
||||
"Choose how to process less product qty than initial. You can always split "
|
||||
"the line, always move less items or choose it all the time(default)"
|
||||
msgstr ""
|
||||
|
||||
#. module: ventor_base
|
||||
#: model:ir.actions.act_window,name:ventor_base.ventor_cluster_picking_action
|
||||
#: model:ir.model.fields.selection,name:ventor_base.selection__ventor_option_setting__action_type__cluster_picking
|
||||
#: model:ir.ui.menu,name:ventor_base.ventor_cluster_picking_app_menu
|
||||
msgid "Cluster Picking"
|
||||
msgstr "Cluster Izbor"
|
||||
|
||||
#. module: ventor_base
|
||||
#: model:ir.model,name:ventor_base.model_res_company
|
||||
msgid "Companies"
|
||||
msgstr "Kompanije"
|
||||
|
||||
#. module: ventor_base
|
||||
#: model:ir.model,name:ventor_base.model_res_config_settings
|
||||
msgid "Config Settings"
|
||||
msgstr "Postavke"
|
||||
|
||||
#. module: ventor_base
|
||||
#: model:ir.actions.act_window,name:ventor_base.ventor_configs_action
|
||||
msgid "Configuration"
|
||||
msgstr "Konfiguracija"
|
||||
|
||||
#. module: ventor_base
|
||||
#: model:ir.model.fields,field_description:ventor_base.field_stock_picking_type__confirm_destination_location
|
||||
msgid "Confirm destination location"
|
||||
msgstr "Confirm destination location"
|
||||
|
||||
#. module: ventor_base
|
||||
#: model:ir.model.fields,field_description:ventor_base.field_stock_picking_type__confirm_product
|
||||
msgid "Confirm product"
|
||||
msgstr "Confirm product"
|
||||
|
||||
#. module: ventor_base
|
||||
#: model:ir.model.fields,field_description:ventor_base.field_stock_picking_type__confirm_source_location
|
||||
msgid "Confirm source location"
|
||||
msgstr "Confirm source location"
|
||||
|
||||
#. module: ventor_base
|
||||
#: model:ir.model.fields,field_description:ventor_base.field_stock_picking_type__confirm_source_package
|
||||
msgid "Confirm source package"
|
||||
msgstr "Confirm source package"
|
||||
|
||||
#. module: ventor_base
|
||||
#: model:res.groups,name:ventor_base.merp_menu_create_purchase_order
|
||||
msgid "Create Purchase Order Menu"
|
||||
msgstr "Create Purchase Order Menu"
|
||||
|
||||
#. module: ventor_base
|
||||
#: model:res.groups,name:ventor_base.merp_menu_create_sales_order
|
||||
msgid "Create Sales Order Menu"
|
||||
msgstr "Create Sales Order Menu"
|
||||
|
||||
#. module: ventor_base
|
||||
#: model:ir.model.fields,field_description:ventor_base.field_res_config_settings__custom_package_name
|
||||
msgid "Custom package name"
|
||||
msgstr "Custom package name"
|
||||
|
||||
#. module: ventor_base
|
||||
#: model:res.groups,name:ventor_base.merp_debug
|
||||
msgid "Debug: Technical Features"
|
||||
msgstr "Debug: Technical Features"
|
||||
|
||||
#. module: ventor_base
|
||||
#: model:res.groups,comment:ventor_base.merp_manage_ventor_configuration_app
|
||||
msgid ""
|
||||
"Enable to see new root menu \"Ventor Configuration\" \n"
|
||||
" that will allow to define global Ventor settings \n"
|
||||
" from the Odoo interface."
|
||||
msgstr ""
|
||||
|
||||
#. module: ventor_base
|
||||
#: model:res.groups,name:ventor_base.merp_external_management
|
||||
msgid "External Transfers Menu"
|
||||
msgstr "External Transfers Menu"
|
||||
|
||||
#. module: ventor_base
|
||||
#: model:ir.model.fields,field_description:ventor_base.field_res_company__force_lot_validation_on_inventory_adjustment
|
||||
#: model:ir.model.fields,field_description:ventor_base.field_res_config_settings__force_lot_validation_on_inventory_adjustment
|
||||
msgid "Force Lot Validation on Inventory Adjustment"
|
||||
msgstr "Force Lot Važećiation on Inventory Adjustment"
|
||||
|
||||
#. module: ventor_base
|
||||
#: model:ir.model.fields,field_description:ventor_base.field_stock_picking_type__scan_destination_package
|
||||
msgid "Force destination package scan"
|
||||
msgstr "Force destination package scan"
|
||||
|
||||
#. module: ventor_base
|
||||
#: model:ir.model.fields,field_description:ventor_base.field_res_users__ventor_global_settings
|
||||
msgid "Global Settings"
|
||||
msgstr "Global Settings"
|
||||
|
||||
#. module: ventor_base
|
||||
#: model:ir.ui.menu,name:ventor_base.ventor_settings_app_menu
|
||||
msgid "Global Ventor Settings"
|
||||
msgstr "Global Ventor Settings"
|
||||
|
||||
#. module: ventor_base
|
||||
#: model_terms:ir.ui.view,arch_db:ventor_base.view_location_search
|
||||
msgid "Group by..."
|
||||
msgstr "Grupiši po..."
|
||||
|
||||
#. module: ventor_base
|
||||
#: model:res.groups,comment:ventor_base.merp_menu_allow_changing_settings
|
||||
msgid ""
|
||||
"If it's checked, the manual settings (defined on device by this user) \n"
|
||||
" will be used instead Global Ventor Settings in Odoo. \n"
|
||||
" If it's unchecked the user will not be able to modify settings on the \n"
|
||||
" device manually. Global Ventor Settings will be used instead."
|
||||
msgstr ""
|
||||
|
||||
#. module: ventor_base
|
||||
#: model:ir.model.fields,help:ventor_base.field_stock_picking_type__apply_default_lots
|
||||
msgid ""
|
||||
"If it's on, you don't need to scan lot number to confirm it. On receipts the"
|
||||
" app will create default Odoo lots and apply them to the product. On "
|
||||
"delivery zone you don't need to confirm lots and they will be taken Odoo by "
|
||||
"default"
|
||||
msgstr ""
|
||||
|
||||
#. module: ventor_base
|
||||
#: model:ir.model.fields,help:ventor_base.field_stock_picking_type__check_shipping_information
|
||||
msgid ""
|
||||
"If the setting is active the user can edit shipping information before "
|
||||
"validate OUT transfer"
|
||||
msgstr ""
|
||||
|
||||
#. module: ventor_base
|
||||
#: model:ir.model.fields,help:ventor_base.field_stock_picking_type__scan_destination_package
|
||||
msgid ""
|
||||
"If this active user has to scan a destination package (pallet) all the time"
|
||||
msgstr ""
|
||||
|
||||
#. module: ventor_base
|
||||
#: model:ir.model.fields,help:ventor_base.field_stock_picking_type__change_destination_location
|
||||
msgid ""
|
||||
"If this setting is active a user can change destination location while "
|
||||
"receiving to be placed at any available location"
|
||||
msgstr ""
|
||||
|
||||
#. module: ventor_base
|
||||
#: model:ir.actions.act_window,name:ventor_base.ventor_instant_inventory_action
|
||||
#: model:ir.model.fields.selection,name:ventor_base.selection__ventor_option_setting__action_type__instant_inventory
|
||||
#: model:ir.ui.menu,name:ventor_base.ventor_instant_inventory_app_menu
|
||||
msgid "Instant Inventory"
|
||||
msgstr "Instant Inventory"
|
||||
|
||||
#. module: ventor_base
|
||||
#: model:res.groups,name:ventor_base.merp_menu_instant_inventory
|
||||
msgid "Instant Inventory Menu"
|
||||
msgstr "Instant Inventory Menu"
|
||||
|
||||
#. module: ventor_base
|
||||
#: model:ir.actions.act_window,name:ventor_base.ventor_internal_transfers_action
|
||||
#: model:ir.model.fields.selection,name:ventor_base.selection__ventor_option_setting__action_type__internal_transfers
|
||||
#: model:ir.ui.menu,name:ventor_base.ventor_internal_transfers_app_menu
|
||||
msgid "Internal Transfers"
|
||||
msgstr "Interni prenosi"
|
||||
|
||||
#. module: ventor_base
|
||||
#: model:res.groups,name:ventor_base.merp_menu_instant_move
|
||||
msgid "Internal Transfers Menu"
|
||||
msgstr "Internal Transfers Menu"
|
||||
|
||||
#. module: ventor_base
|
||||
#: model:ir.model.fields.selection,name:ventor_base.selection__ventor_option_setting__action_type__inventory_adjustments
|
||||
msgid "Inventory Adjustments"
|
||||
msgstr "Inventure"
|
||||
|
||||
#. module: ventor_base
|
||||
#: model:res.groups,name:ventor_base.merp_menu_inventory_adjustments
|
||||
msgid "Inventory Adjustments Menu"
|
||||
msgstr "Inventory Adjustments Menu"
|
||||
|
||||
#. module: ventor_base
|
||||
#: model:res.groups,name:ventor_base.merp_inventory_allow_ready_state
|
||||
msgid "Inventory Adjustments: Waiting for Validation"
|
||||
msgstr "Inventory Adjustments: Waiting for Važećiation"
|
||||
|
||||
#. module: ventor_base
|
||||
#: model:ir.model,name:ventor_base.model_stock_location
|
||||
msgid "Inventory Locations"
|
||||
msgstr "Lokacije inventure"
|
||||
|
||||
#. module: ventor_base
|
||||
#: model_terms:ir.ui.view,arch_db:ventor_base.view_stock_config_settings
|
||||
msgid "Inventory settings"
|
||||
msgstr "Inventory settings"
|
||||
|
||||
#. module: ventor_base
|
||||
#: model:ir.model.fields,field_description:ventor_base.field_stock_picking_type__is_consignment_enabled
|
||||
msgid "Is Consignment Enabled"
|
||||
msgstr "Is Consignment Enabled"
|
||||
|
||||
#. module: ventor_base
|
||||
#: model:ir.model.fields,field_description:ventor_base.field_stock_warehouse__is_internal
|
||||
msgid "Is Internal Warehouse"
|
||||
msgstr "Is Internal Warehouse"
|
||||
|
||||
#. module: ventor_base
|
||||
#: model:ir.model.fields,field_description:ventor_base.field_stock_picking_type__is_package_tracking_enabled
|
||||
msgid "Is Package Tracking Enabled"
|
||||
msgstr "Is Paket Tracking Enabled"
|
||||
|
||||
#. module: ventor_base
|
||||
#: model:ir.model.fields,field_description:ventor_base.field_stock_picking_type__is_stock_production_lot_enabled
|
||||
msgid "Is Stock Production Lot Enabled"
|
||||
msgstr "Is Zalihe Production Lot Enabled"
|
||||
|
||||
#. module: ventor_base
|
||||
#: model:ir.model.fields,help:ventor_base.field_res_users__allowed_warehouse_ids
|
||||
msgid "List of all warehouses user has access to"
|
||||
msgstr "List of all warehouses user has access to"
|
||||
|
||||
#. module: ventor_base
|
||||
#: model:res.groups,name:ventor_base.merp_menu_manufacturing
|
||||
msgid "MO and WO management"
|
||||
msgstr "MO and WO management"
|
||||
|
||||
#. module: ventor_base
|
||||
#: model:res.groups,name:ventor_base.merp_manage_ventor_configuration_app
|
||||
msgid "Manage Ventor Configuration app"
|
||||
msgstr "Manage Ventor Configuration app"
|
||||
|
||||
#. module: ventor_base
|
||||
#: model:ir.model.fields,field_description:ventor_base.field_stock_picking_type__transfer_more_items
|
||||
msgid "Move more than planned"
|
||||
msgstr "Move more than planned"
|
||||
|
||||
#. module: ventor_base
|
||||
#: model_terms:ir.ui.view,arch_db:ventor_base.res_user_form
|
||||
msgid "Multi Warehouses"
|
||||
msgstr "Multi Warehouses"
|
||||
|
||||
#. module: ventor_base
|
||||
#: model:ir.model.fields.selection,name:ventor_base.selection__stock_picking_type__behavior_on_backorder_creation__never_create_backorder
|
||||
msgid "Never Create Backorder"
|
||||
msgstr "Never Create Backorder"
|
||||
|
||||
#. module: ventor_base
|
||||
#: model:ir.model.fields,field_description:ventor_base.field_res_config_settings__module_outgoing_routing
|
||||
msgid "Outgoing Routing"
|
||||
msgstr "Outgoing Routing"
|
||||
|
||||
#. module: ventor_base
|
||||
#: model:ir.actions.act_window,name:ventor_base.ventor_package_management_action
|
||||
#: model:ir.model.fields.selection,name:ventor_base.selection__ventor_option_setting__action_type__package_management
|
||||
#: model:ir.ui.menu,name:ventor_base.ventor_package_management_app_menu
|
||||
msgid "Package Management"
|
||||
msgstr "Paket Management"
|
||||
|
||||
#. module: ventor_base
|
||||
#: model:res.groups,name:ventor_base.merp_package_management
|
||||
msgid "Package Management Menu"
|
||||
msgstr "Paket Management Menu"
|
||||
|
||||
#. module: ventor_base
|
||||
#: model:ir.model,name:ventor_base.model_stock_picking_type
|
||||
msgid "Picking Type"
|
||||
msgstr "Vrsta dokumenta"
|
||||
|
||||
#. module: ventor_base
|
||||
#: model:ir.model.fields,help:ventor_base.field_stock_picking_type__show_next_product
|
||||
msgid ""
|
||||
"Product field will show the next product to be picked. Use the setting "
|
||||
"during picking and delivery. It is recommended to disable the setting for "
|
||||
"the reception area"
|
||||
msgstr ""
|
||||
|
||||
#. module: ventor_base
|
||||
#: model:ir.actions.act_window,name:ventor_base.ventor_putaway_action
|
||||
#: model:ir.model.fields.selection,name:ventor_base.selection__ventor_option_setting__action_type__putaway
|
||||
#: model:ir.ui.menu,name:ventor_base.ventor_putaway_app_menu
|
||||
msgid "Putaway"
|
||||
msgstr "Putaway"
|
||||
|
||||
#. module: ventor_base
|
||||
#: model:res.groups,name:ventor_base.merp_putaway
|
||||
msgid "Putaway Menu"
|
||||
msgstr "Putaway Menu"
|
||||
|
||||
#. module: ventor_base
|
||||
#: model:ir.model,name:ventor_base.model_stock_quant
|
||||
msgid "Quants"
|
||||
msgstr "Količine"
|
||||
|
||||
#. module: ventor_base
|
||||
#: model:ir.model.fields.selection,name:ventor_base.selection__ventor_option_setting__action_type__quick_info
|
||||
msgid "Quick Info"
|
||||
msgstr "Quick Info"
|
||||
|
||||
#. module: ventor_base
|
||||
#: model:res.groups,name:ventor_base.merp_menu_info
|
||||
msgid "Quick Info Menu"
|
||||
msgstr "Quick Info Menu"
|
||||
|
||||
#. module: ventor_base
|
||||
#: model:res.groups,name:ventor_base.merp_menu_allow_update_product_on_hand
|
||||
msgid "Quick Info: Update product on hand"
|
||||
msgstr "Quick Info: Update product on hand"
|
||||
|
||||
#. module: ventor_base
|
||||
#: model:ir.actions.act_window,name:ventor_base.ventor_quick_info_action
|
||||
#: model:ir.ui.menu,name:ventor_base.ventor_quick_info_app_menu
|
||||
msgid "Quick info"
|
||||
msgstr "Quick info"
|
||||
|
||||
#. module: ventor_base
|
||||
#: model:ir.model.fields,help:ventor_base.field_stock_picking_type__manage_packages
|
||||
msgid ""
|
||||
"Scan source (destination) packages right after scanning source (destination) location. Use it if you move from one package to another or pick items from packages or pallets. Works only if package management settings is active on Odoo side.\n"
|
||||
"\n"
|
||||
" If you want to use Show packages fields, you must turn on setting 'Packages' in inventory settings"
|
||||
msgstr ""
|
||||
|
||||
#. module: ventor_base
|
||||
#: model:ir.ui.menu,name:ventor_base.ventor_app_settings
|
||||
msgid "Settings"
|
||||
msgstr "Postavke"
|
||||
|
||||
#. module: ventor_base
|
||||
#: model:ir.model.fields,field_description:ventor_base.field_stock_picking_type__show_print_attachment_button
|
||||
msgid "Show Print attachments button"
|
||||
msgstr "Show Štampaj attachments button"
|
||||
|
||||
#. module: ventor_base
|
||||
#: model:ir.model.fields,field_description:ventor_base.field_stock_picking_type__manage_product_owner
|
||||
msgid "Show Product Owner field"
|
||||
msgstr "Show Product Owner field"
|
||||
|
||||
#. module: ventor_base
|
||||
#: model:ir.model.fields,field_description:ventor_base.field_stock_picking_type__show_put_in_pack_button
|
||||
msgid "Show Put in pack button"
|
||||
msgstr "Show Put in pack button"
|
||||
|
||||
#. module: ventor_base
|
||||
#: model:ir.model.fields,field_description:ventor_base.field_stock_picking_type__show_next_product
|
||||
msgid "Show next product"
|
||||
msgstr "Show next product"
|
||||
|
||||
#. module: ventor_base
|
||||
#: model:ir.model.fields,field_description:ventor_base.field_stock_picking_type__manage_packages
|
||||
msgid "Show packages fields"
|
||||
msgstr "Show packages fields"
|
||||
|
||||
#. module: ventor_base
|
||||
#: model:ir.model.fields,field_description:ventor_base.field_res_config_settings__add_barcode_on_view
|
||||
msgid "Show the Location barcode field on the form"
|
||||
msgstr "Show the Location barcode field on the form"
|
||||
|
||||
#. module: ventor_base
|
||||
#: model:ir.model.fields,help:ventor_base.field_stock_picking_type__show_print_attachment_button
|
||||
msgid ""
|
||||
"Showing the Print attachments button in the toolbar instead of keeping it in"
|
||||
" the hidden menu"
|
||||
msgstr ""
|
||||
|
||||
#. module: ventor_base
|
||||
#: model:ir.model.fields,help:ventor_base.field_stock_picking_type__show_put_in_pack_button
|
||||
msgid ""
|
||||
"Showing the Put in pack button in the toolbar instead of keeping it in the "
|
||||
"hidden menu"
|
||||
msgstr ""
|
||||
|
||||
#. module: ventor_base
|
||||
#: model:ir.model.fields,help:ventor_base.field_stock_picking_type__confirm_destination_location
|
||||
msgid ""
|
||||
"The dot next to the field gets yellow color means user has to confirm it. "
|
||||
"User has to scan a barcode of destination location"
|
||||
msgstr ""
|
||||
|
||||
#. module: ventor_base
|
||||
#: model:ir.model.fields,help:ventor_base.field_stock_picking_type__confirm_product
|
||||
msgid ""
|
||||
"The dot next to the field gets yellow color means user has to confirm it. "
|
||||
"User has to scan a barcode of product."
|
||||
msgstr ""
|
||||
|
||||
#. module: ventor_base
|
||||
#: model:ir.model.fields,help:ventor_base.field_stock_picking_type__confirm_source_location
|
||||
msgid ""
|
||||
"The dot next to the field gets yellow color means user has to confirm it. "
|
||||
"User has to scan a barcode of source location"
|
||||
msgstr ""
|
||||
|
||||
#. module: ventor_base
|
||||
#: model:res.groups,comment:ventor_base.merp_user_validate_inventory_adjustment
|
||||
msgid "The group allows Inventory/User to validate inventory"
|
||||
msgstr "The group allows Inventory/User to validate inventory"
|
||||
|
||||
#. module: ventor_base
|
||||
#: code:addons/ventor_base/models/res_company.py:0
|
||||
#, python-format
|
||||
msgid "The logotype can't be less than {}x{} px."
|
||||
msgstr "The logotype can't be less than {}x{} px."
|
||||
|
||||
#. module: ventor_base
|
||||
#: model_terms:ir.ui.view,arch_db:ventor_base.view_stock_config_settings
|
||||
msgid "Use it to activate barcodes for the Community version"
|
||||
msgstr "Use it to activate barcodes for the Community version"
|
||||
|
||||
#. module: ventor_base
|
||||
#: model:res.groups,name:ventor_base.merp_menu_allow_changing_settings
|
||||
msgid "Use local user device settings"
|
||||
msgstr "Use local user device settings"
|
||||
|
||||
#. module: ventor_base
|
||||
#: model:ir.model.fields,field_description:ventor_base.field_res_users__ventor_user_settings
|
||||
#: model:ir.ui.menu,name:ventor_base.ventor_app_user_settings_menu
|
||||
msgid "User Settings"
|
||||
msgstr "Korisničke postavke"
|
||||
|
||||
#. module: ventor_base
|
||||
#: model:ir.model.fields,help:ventor_base.field_stock_picking_type__change_source_location
|
||||
msgid ""
|
||||
"User can change default source location to pick item from another location. "
|
||||
"Works only if 'Confirm source location' setting is active"
|
||||
msgstr ""
|
||||
|
||||
#. module: ventor_base
|
||||
#: model:ir.model.fields,help:ventor_base.field_stock_picking_type__confirm_source_package
|
||||
msgid ""
|
||||
"User has to scan a barcode of source package. The dot next to the field gets"
|
||||
" yellow color means user has to confirm it"
|
||||
msgstr ""
|
||||
|
||||
#. module: ventor_base
|
||||
#: model:ir.model,name:ventor_base.model_res_users
|
||||
msgid "Users"
|
||||
msgstr "Korisnici"
|
||||
|
||||
#. module: ventor_base
|
||||
#: model:res.groups,name:ventor_base.merp_user_validate_inventory_adjustment
|
||||
msgid "Validate Inventory"
|
||||
msgstr "Vrednovanje zaliha"
|
||||
|
||||
#. module: ventor_base
|
||||
#: model:ir.module.category,name:ventor_base.module_category_merp_access_application
|
||||
msgid "Ventor Access Rights"
|
||||
msgstr "Ventor Access Rights"
|
||||
|
||||
#. module: ventor_base
|
||||
#: model:ir.model.fields,field_description:ventor_base.field_res_company__logotype_file
|
||||
#: model:ir.model.fields,field_description:ventor_base.field_res_config_settings__logotype_file
|
||||
msgid "Ventor Application Logo File"
|
||||
msgstr "Ventor Application Logo File"
|
||||
|
||||
#. module: ventor_base
|
||||
#: model_terms:ir.ui.view,arch_db:ventor_base.view_stock_config_settings
|
||||
msgid "Ventor Application modules"
|
||||
msgstr "Ventor Application modules"
|
||||
|
||||
#. module: ventor_base
|
||||
#: model:ir.model.fields,field_description:ventor_base.field_res_users__ventor_base_version
|
||||
msgid "Ventor Base Version"
|
||||
msgstr "Ventor Base Version"
|
||||
|
||||
#. module: ventor_base
|
||||
#: model:ir.ui.menu,name:ventor_base.ventor_app_base_menu
|
||||
#: model_terms:ir.ui.view,arch_db:ventor_base.ventor_stock_picking_form
|
||||
#: model_terms:ir.ui.view,arch_db:ventor_base.view_stock_config_settings
|
||||
msgid "Ventor Configuration"
|
||||
msgstr "Ventor Configuration"
|
||||
|
||||
#. module: ventor_base
|
||||
#: model:ir.module.category,name:ventor_base.module_category_merp_menu_application
|
||||
msgid "Ventor Menu Management"
|
||||
msgstr "Ventor Menu Management"
|
||||
|
||||
#. module: ventor_base
|
||||
#: model:ir.model,name:ventor_base.model_ventor_option_setting
|
||||
msgid "Ventor Option Setting"
|
||||
msgstr "Ventor Option Setting"
|
||||
|
||||
#. module: ventor_base
|
||||
#: model_terms:ir.ui.view,arch_db:ventor_base.res_user_form
|
||||
msgid "Ventor Preferences"
|
||||
msgstr "Ventor Preferences"
|
||||
|
||||
#. module: ventor_base
|
||||
#: model:ir.module.category,name:ventor_base.module_category_ventor_roles
|
||||
msgid "Ventor Roles"
|
||||
msgstr "Ventor Roles"
|
||||
|
||||
#. module: ventor_base
|
||||
#: model:ir.model,name:ventor_base.model_ventor_setting_value
|
||||
msgid "Ventor Setting Value"
|
||||
msgstr "Ventor Setting Value"
|
||||
|
||||
#. module: ventor_base
|
||||
#: model:ir.model,name:ventor_base.model_stock_warehouse
|
||||
#: model:ir.model.fields,field_description:ventor_base.field_stock_location__warehouse_id
|
||||
#: model_terms:ir.ui.view,arch_db:ventor_base.view_location_search
|
||||
msgid "Warehouse"
|
||||
msgstr "Skladište"
|
||||
|
||||
#. module: ventor_base
|
||||
#: model:ir.actions.act_window,name:ventor_base.ventor_stock_picking_action
|
||||
#: model:ir.ui.menu,name:ventor_base.ventor_wh_operations_app_menu
|
||||
msgid "Warehouse Operations"
|
||||
msgstr "Warehouse Operations"
|
||||
|
||||
#. module: ventor_base
|
||||
#: model:res.groups,name:ventor_base.merp_menu_warehouse_operations
|
||||
msgid "Warehouse Operations Menu"
|
||||
msgstr "Warehouse Operations Menu"
|
||||
|
||||
#. module: ventor_base
|
||||
#: model:res.groups,name:ventor_base.merp_allow_applying_all_qty_of_product
|
||||
msgid "Warehouse Operations: Allow applying all qty of product"
|
||||
msgstr "Warehouse Operations: Allow applying all qty of product"
|
||||
|
||||
#. module: ventor_base
|
||||
#: model:res.groups,name:ventor_base.ventor_role_wh_manager
|
||||
msgid "Warehouse manager"
|
||||
msgstr "Warehouse manager"
|
||||
|
||||
#. module: ventor_base
|
||||
#: model:res.groups,name:ventor_base.ventor_role_wh_worker
|
||||
msgid "Warehouse worker"
|
||||
msgstr "Warehouse worker"
|
||||
|
||||
#. module: ventor_base
|
||||
#: code:addons/ventor_base/models/stock_picking.py:0
|
||||
#: code:addons/ventor_base/models/stock_picking.py:0
|
||||
#, python-format
|
||||
msgid "Warning"
|
||||
msgstr "Upozorenje"
|
||||
|
||||
#. module: ventor_base
|
||||
#: model_terms:ir.ui.view,arch_db:ventor_base.res_user_form
|
||||
msgid ""
|
||||
"Warning! If the user is Inventory / Administrator, \n"
|
||||
" the Allowed Warehouses configuration is ignored and \n"
|
||||
" the user will still be able to see all warehouses"
|
||||
msgstr ""
|
||||
|
||||
#. module: ventor_base
|
||||
#: code:addons/ventor_base/models/stock_quant.py:0
|
||||
#, python-format
|
||||
msgid "You need to supply a Lot/Serial number for product: %s"
|
||||
msgstr "You need to supply a Lot/Serial number for product: %s"
|
||||
|
|
@ -0,0 +1,741 @@
|
|||
# Translation of Odoo Server.
|
||||
# This file contains the translation of the following modules:
|
||||
# * ventor_base
|
||||
#
|
||||
msgid ""
|
||||
msgstr ""
|
||||
"Project-Id-Version: Odoo Server 15.0+e\n"
|
||||
"Report-Msgid-Bugs-To: \n"
|
||||
"POT-Creation-Date: 2022-08-18 13:43+0000\n"
|
||||
"PO-Revision-Date: 2022-08-18 13:43+0000\n"
|
||||
"Last-Translator: \n"
|
||||
"Language-Team: \n"
|
||||
"MIME-Version: 1.0\n"
|
||||
"Content-Type: text/plain; charset=UTF-8\n"
|
||||
"Content-Transfer-Encoding: \n"
|
||||
"Plural-Forms: \n"
|
||||
|
||||
#. module: ventor_base
|
||||
#: code:addons/ventor_base/models/stock_picking.py:0
|
||||
#, python-format
|
||||
msgid ""
|
||||
"'Autocomplete item quantity' is available only if 'Change destination "
|
||||
"location' is enabled"
|
||||
msgstr ""
|
||||
|
||||
#. module: ventor_base
|
||||
#: code:addons/ventor_base/models/stock_picking.py:0
|
||||
#, python-format
|
||||
msgid ""
|
||||
"'Change source location' is available only if 'Confirm source location' is "
|
||||
"enabled"
|
||||
msgstr ""
|
||||
|
||||
#. module: ventor_base
|
||||
#: model_terms:ir.ui.view,arch_db:ventor_base.view_stock_config_settings
|
||||
msgid "<span class=\"o_form_label\">Custom Build Name</span>"
|
||||
msgstr ""
|
||||
|
||||
#. module: ventor_base
|
||||
#: model_terms:ir.ui.view,arch_db:ventor_base.view_stock_config_settings
|
||||
msgid "<span class=\"o_form_label\">Custom Mobile Logo</span>"
|
||||
msgstr ""
|
||||
|
||||
#. module: ventor_base
|
||||
#: model_terms:ir.ui.view,arch_db:ventor_base.view_stock_config_settings
|
||||
msgid "Add Outgoing Routing strategy options (sort locations)"
|
||||
msgstr ""
|
||||
|
||||
#. module: ventor_base
|
||||
#: model_terms:ir.ui.view,arch_db:ventor_base.view_stock_config_settings
|
||||
msgid "Additional Customisation"
|
||||
msgstr ""
|
||||
|
||||
#. module: ventor_base
|
||||
#: model:res.groups,name:ventor_base.ventor_role_admin
|
||||
msgid "Administrator"
|
||||
msgstr ""
|
||||
|
||||
#. module: ventor_base
|
||||
#: model:ir.model.fields,help:ventor_base.field_stock_picking_type__manage_product_owner
|
||||
msgid ""
|
||||
"Allow scan product owner. You can specify product owner while moving items. "
|
||||
"Working only with 'Consignment' setting on Odoo side"
|
||||
msgstr ""
|
||||
|
||||
#. module: ventor_base
|
||||
#: model:ir.model.fields,field_description:ventor_base.field_res_users__allowed_warehouse_ids
|
||||
msgid "Allowed Warehouses"
|
||||
msgstr ""
|
||||
|
||||
#. module: ventor_base
|
||||
#: model:ir.model.fields,help:ventor_base.field_stock_picking_type__transfer_more_items
|
||||
msgid "Allows moving more items than expected (for example kg of meat, etc)"
|
||||
msgstr ""
|
||||
|
||||
#. module: ventor_base
|
||||
#: model:ir.model.fields.selection,name:ventor_base.selection__stock_picking_type__behavior_on_backorder_creation__always_create_backorder
|
||||
msgid "Always Create Backorder"
|
||||
msgstr ""
|
||||
|
||||
#. module: ventor_base
|
||||
#: model:ir.model.fields.selection,name:ventor_base.selection__stock_picking_type__behavior_on_split_operation__always_move_less_items
|
||||
msgid "Always Move Less Items"
|
||||
msgstr ""
|
||||
|
||||
#. module: ventor_base
|
||||
#: model:ir.model.fields.selection,name:ventor_base.selection__stock_picking_type__behavior_on_split_operation__always_split_line
|
||||
msgid "Always Split the Line"
|
||||
msgstr ""
|
||||
|
||||
#. module: ventor_base
|
||||
#: code:addons/ventor_base/models/res_company.py:0
|
||||
#, python-format
|
||||
msgid ""
|
||||
"Apparently, the logotype is not a .png file or the file was incorrectly "
|
||||
"converted to .png format"
|
||||
msgstr ""
|
||||
|
||||
#. module: ventor_base
|
||||
#: model:ir.model.fields,field_description:ventor_base.field_stock_picking_type__apply_default_lots
|
||||
msgid "Apply default lots and serials"
|
||||
msgstr ""
|
||||
|
||||
#. module: ventor_base
|
||||
#: model:ir.model.fields,field_description:ventor_base.field_stock_picking_type__apply_quantity_automatically
|
||||
msgid "Apply quantity automatically"
|
||||
msgstr ""
|
||||
|
||||
#. module: ventor_base
|
||||
#: model:ir.model.fields.selection,name:ventor_base.selection__stock_picking_type__behavior_on_backorder_creation__ask_me_every_time
|
||||
#: model:ir.model.fields.selection,name:ventor_base.selection__stock_picking_type__behavior_on_split_operation__ask_me_every_time
|
||||
msgid "Ask Me Every Time"
|
||||
msgstr ""
|
||||
|
||||
#. module: ventor_base
|
||||
#: model:ir.model.fields,field_description:ventor_base.field_stock_picking_type__autocomplete_the_item_quantity_field
|
||||
msgid "Autocomplete item quantity"
|
||||
msgstr ""
|
||||
|
||||
#. module: ventor_base
|
||||
#: model:ir.model.fields,help:ventor_base.field_stock_picking_type__autocomplete_the_item_quantity_field
|
||||
msgid ""
|
||||
"Automatically insert expected quantity. No need to enter the quantity of "
|
||||
"goods using the keyboard or using scanning"
|
||||
msgstr ""
|
||||
|
||||
#. module: ventor_base
|
||||
#: model:ir.model.fields,help:ventor_base.field_stock_picking_type__apply_quantity_automatically
|
||||
msgid ""
|
||||
"Automatically validate the line after scanning a destination location. "
|
||||
"Warning: you have to insert QTY first before destination location"
|
||||
msgstr ""
|
||||
|
||||
#. module: ventor_base
|
||||
#: model:ir.model.fields,field_description:ventor_base.field_res_config_settings__base_version
|
||||
#: model_terms:ir.ui.view,arch_db:ventor_base.view_stock_config_settings
|
||||
msgid "Base Module Version"
|
||||
msgstr ""
|
||||
|
||||
#. module: ventor_base
|
||||
#: model:ir.actions.act_window,name:ventor_base.ventor_batch_picking_action
|
||||
#: model:ir.model.fields.selection,name:ventor_base.selection__ventor_option_setting__action_type__batch_picking
|
||||
#: model:ir.ui.menu,name:ventor_base.ventor_batch_picking_app_menu
|
||||
msgid "Batch Picking"
|
||||
msgstr ""
|
||||
|
||||
#. module: ventor_base
|
||||
#: model:res.groups,name:ventor_base.merp_menu_picking_wave
|
||||
msgid "Batch Picking Menu"
|
||||
msgstr ""
|
||||
|
||||
#. module: ventor_base
|
||||
#: model:res.groups,name:ventor_base.merp_picking_wave_allow_done
|
||||
msgid "Batch Picking: Close batch picking"
|
||||
msgstr ""
|
||||
|
||||
#. module: ventor_base
|
||||
#: model:ir.model.fields,field_description:ventor_base.field_stock_picking_type__behavior_on_backorder_creation
|
||||
msgid "Behavior On Backorder Creation"
|
||||
msgstr ""
|
||||
|
||||
#. module: ventor_base
|
||||
#: model:ir.model.fields,field_description:ventor_base.field_stock_picking_type__behavior_on_split_operation
|
||||
msgid "Behavior On Split Operation"
|
||||
msgstr ""
|
||||
|
||||
#. module: ventor_base
|
||||
#: model:ir.model.fields.selection,name:ventor_base.selection__ventor_option_setting__value_type__bool
|
||||
msgid "Boolean"
|
||||
msgstr ""
|
||||
|
||||
#. module: ventor_base
|
||||
#: model:ir.model.fields,field_description:ventor_base.field_stock_picking_type__change_destination_location
|
||||
msgid "Change destination location"
|
||||
msgstr ""
|
||||
|
||||
#. module: ventor_base
|
||||
#: model:ir.model.fields,field_description:ventor_base.field_stock_picking_type__change_source_location
|
||||
msgid "Change source location"
|
||||
msgstr ""
|
||||
|
||||
#. module: ventor_base
|
||||
#: model:ir.model.fields,field_description:ventor_base.field_stock_picking_type__check_shipping_information
|
||||
msgid "Check shipping information"
|
||||
msgstr ""
|
||||
|
||||
#. module: ventor_base
|
||||
#: model:ir.model.fields,help:ventor_base.field_stock_picking_type__behavior_on_backorder_creation
|
||||
msgid ""
|
||||
"Choose how to process backorders. You can always create backorders, always "
|
||||
"ignore backorders or choose it all the time (default)"
|
||||
msgstr ""
|
||||
|
||||
#. module: ventor_base
|
||||
#: model:ir.model.fields,help:ventor_base.field_stock_picking_type__behavior_on_split_operation
|
||||
msgid ""
|
||||
"Choose how to process less product qty than initial. You can always split "
|
||||
"the line, always move less items or choose it all the time(default)"
|
||||
msgstr ""
|
||||
|
||||
#. module: ventor_base
|
||||
#: model:ir.actions.act_window,name:ventor_base.ventor_cluster_picking_action
|
||||
#: model:ir.model.fields.selection,name:ventor_base.selection__ventor_option_setting__action_type__cluster_picking
|
||||
#: model:ir.ui.menu,name:ventor_base.ventor_cluster_picking_app_menu
|
||||
msgid "Cluster Picking"
|
||||
msgstr ""
|
||||
|
||||
#. module: ventor_base
|
||||
#: model:ir.model,name:ventor_base.model_res_company
|
||||
msgid "Companies"
|
||||
msgstr ""
|
||||
|
||||
#. module: ventor_base
|
||||
#: model:ir.model,name:ventor_base.model_res_config_settings
|
||||
msgid "Config Settings"
|
||||
msgstr ""
|
||||
|
||||
#. module: ventor_base
|
||||
#: model:ir.actions.act_window,name:ventor_base.ventor_configs_action
|
||||
msgid "Configuration"
|
||||
msgstr ""
|
||||
|
||||
#. module: ventor_base
|
||||
#: model:ir.model.fields,field_description:ventor_base.field_stock_picking_type__confirm_destination_location
|
||||
msgid "Confirm destination location"
|
||||
msgstr ""
|
||||
|
||||
#. module: ventor_base
|
||||
#: model:ir.model.fields,field_description:ventor_base.field_stock_picking_type__confirm_product
|
||||
msgid "Confirm product"
|
||||
msgstr ""
|
||||
|
||||
#. module: ventor_base
|
||||
#: model:ir.model.fields,field_description:ventor_base.field_stock_picking_type__confirm_source_location
|
||||
msgid "Confirm source location"
|
||||
msgstr ""
|
||||
|
||||
#. module: ventor_base
|
||||
#: model:ir.model.fields,field_description:ventor_base.field_stock_picking_type__confirm_source_package
|
||||
msgid "Confirm source package"
|
||||
msgstr ""
|
||||
|
||||
#. module: ventor_base
|
||||
#: model:res.groups,name:ventor_base.merp_menu_create_purchase_order
|
||||
msgid "Create Purchase Order Menu"
|
||||
msgstr ""
|
||||
|
||||
#. module: ventor_base
|
||||
#: model:res.groups,name:ventor_base.merp_menu_create_sales_order
|
||||
msgid "Create Sales Order Menu"
|
||||
msgstr ""
|
||||
|
||||
#. module: ventor_base
|
||||
#: model:ir.model.fields,field_description:ventor_base.field_res_config_settings__custom_package_name
|
||||
msgid "Custom package name"
|
||||
msgstr ""
|
||||
|
||||
#. module: ventor_base
|
||||
#: model:res.groups,name:ventor_base.merp_debug
|
||||
msgid "Debug: Technical Features"
|
||||
msgstr ""
|
||||
|
||||
#. module: ventor_base
|
||||
#: model:res.groups,comment:ventor_base.merp_manage_ventor_configuration_app
|
||||
msgid ""
|
||||
"Enable to see new root menu \"Ventor Configuration\" \n"
|
||||
" that will allow to define global Ventor settings \n"
|
||||
" from the Odoo interface."
|
||||
msgstr ""
|
||||
|
||||
#. module: ventor_base
|
||||
#: model:res.groups,name:ventor_base.merp_external_management
|
||||
msgid "External Transfers Menu"
|
||||
msgstr ""
|
||||
|
||||
#. module: ventor_base
|
||||
#: model:ir.model.fields,field_description:ventor_base.field_res_company__force_lot_validation_on_inventory_adjustment
|
||||
#: model:ir.model.fields,field_description:ventor_base.field_res_config_settings__force_lot_validation_on_inventory_adjustment
|
||||
msgid "Force Lot Validation on Inventory Adjustment"
|
||||
msgstr ""
|
||||
|
||||
#. module: ventor_base
|
||||
#: model:ir.model.fields,field_description:ventor_base.field_stock_picking_type__scan_destination_package
|
||||
msgid "Force destination package scan"
|
||||
msgstr ""
|
||||
|
||||
#. module: ventor_base
|
||||
#: model:ir.model.fields,field_description:ventor_base.field_res_users__ventor_global_settings
|
||||
msgid "Global Settings"
|
||||
msgstr ""
|
||||
|
||||
#. module: ventor_base
|
||||
#: model:ir.ui.menu,name:ventor_base.ventor_settings_app_menu
|
||||
msgid "Global Ventor Settings"
|
||||
msgstr ""
|
||||
|
||||
#. module: ventor_base
|
||||
#: model_terms:ir.ui.view,arch_db:ventor_base.view_location_search
|
||||
msgid "Group by..."
|
||||
msgstr ""
|
||||
|
||||
#. module: ventor_base
|
||||
#: model:res.groups,comment:ventor_base.merp_menu_allow_changing_settings
|
||||
msgid ""
|
||||
"If it's checked, the manual settings (defined on device by this user) \n"
|
||||
" will be used instead Global Ventor Settings in Odoo. \n"
|
||||
" If it's unchecked the user will not be able to modify settings on the \n"
|
||||
" device manually. Global Ventor Settings will be used instead."
|
||||
msgstr ""
|
||||
|
||||
#. module: ventor_base
|
||||
#: model:ir.model.fields,help:ventor_base.field_stock_picking_type__apply_default_lots
|
||||
msgid ""
|
||||
"If it's on, you don't need to scan lot number to confirm it. On receipts the"
|
||||
" app will create default Odoo lots and apply them to the product. On "
|
||||
"delivery zone you don't need to confirm lots and they will be taken Odoo by "
|
||||
"default"
|
||||
msgstr ""
|
||||
|
||||
#. module: ventor_base
|
||||
#: model:ir.model.fields,help:ventor_base.field_stock_picking_type__check_shipping_information
|
||||
msgid ""
|
||||
"If the setting is active the user can edit shipping information before "
|
||||
"validate OUT transfer"
|
||||
msgstr ""
|
||||
|
||||
#. module: ventor_base
|
||||
#: model:ir.model.fields,help:ventor_base.field_stock_picking_type__scan_destination_package
|
||||
msgid ""
|
||||
"If this active user has to scan a destination package (pallet) all the time"
|
||||
msgstr ""
|
||||
|
||||
#. module: ventor_base
|
||||
#: model:ir.model.fields,help:ventor_base.field_stock_picking_type__change_destination_location
|
||||
msgid ""
|
||||
"If this setting is active a user can change destination location while "
|
||||
"receiving to be placed at any available location"
|
||||
msgstr ""
|
||||
|
||||
#. module: ventor_base
|
||||
#: model:ir.actions.act_window,name:ventor_base.ventor_instant_inventory_action
|
||||
#: model:ir.model.fields.selection,name:ventor_base.selection__ventor_option_setting__action_type__instant_inventory
|
||||
#: model:ir.ui.menu,name:ventor_base.ventor_instant_inventory_app_menu
|
||||
msgid "Instant Inventory"
|
||||
msgstr ""
|
||||
|
||||
#. module: ventor_base
|
||||
#: model:res.groups,name:ventor_base.merp_menu_instant_inventory
|
||||
msgid "Instant Inventory Menu"
|
||||
msgstr ""
|
||||
|
||||
#. module: ventor_base
|
||||
#: model:ir.actions.act_window,name:ventor_base.ventor_internal_transfers_action
|
||||
#: model:ir.model.fields.selection,name:ventor_base.selection__ventor_option_setting__action_type__internal_transfers
|
||||
#: model:ir.ui.menu,name:ventor_base.ventor_internal_transfers_app_menu
|
||||
msgid "Internal Transfers"
|
||||
msgstr ""
|
||||
|
||||
#. module: ventor_base
|
||||
#: model:res.groups,name:ventor_base.merp_menu_instant_move
|
||||
msgid "Internal Transfers Menu"
|
||||
msgstr ""
|
||||
|
||||
#. module: ventor_base
|
||||
#: model:ir.model.fields.selection,name:ventor_base.selection__ventor_option_setting__action_type__inventory_adjustments
|
||||
msgid "Inventory Adjustments"
|
||||
msgstr ""
|
||||
|
||||
#. module: ventor_base
|
||||
#: model:res.groups,name:ventor_base.merp_menu_inventory_adjustments
|
||||
msgid "Inventory Adjustments Menu"
|
||||
msgstr ""
|
||||
|
||||
#. module: ventor_base
|
||||
#: model:res.groups,name:ventor_base.merp_inventory_allow_ready_state
|
||||
msgid "Inventory Adjustments: Waiting for Validation"
|
||||
msgstr ""
|
||||
|
||||
#. module: ventor_base
|
||||
#: model:ir.model,name:ventor_base.model_stock_location
|
||||
msgid "Inventory Locations"
|
||||
msgstr ""
|
||||
|
||||
#. module: ventor_base
|
||||
#: model_terms:ir.ui.view,arch_db:ventor_base.view_stock_config_settings
|
||||
msgid "Inventory settings"
|
||||
msgstr ""
|
||||
|
||||
#. module: ventor_base
|
||||
#: model:ir.model.fields,field_description:ventor_base.field_stock_picking_type__is_consignment_enabled
|
||||
msgid "Is Consignment Enabled"
|
||||
msgstr ""
|
||||
|
||||
#. module: ventor_base
|
||||
#: model:ir.model.fields,field_description:ventor_base.field_stock_warehouse__is_internal
|
||||
msgid "Is Internal Warehouse"
|
||||
msgstr ""
|
||||
|
||||
#. module: ventor_base
|
||||
#: model:ir.model.fields,field_description:ventor_base.field_stock_picking_type__is_package_tracking_enabled
|
||||
msgid "Is Package Tracking Enabled"
|
||||
msgstr ""
|
||||
|
||||
#. module: ventor_base
|
||||
#: model:ir.model.fields,field_description:ventor_base.field_stock_picking_type__is_stock_production_lot_enabled
|
||||
msgid "Is Stock Production Lot Enabled"
|
||||
msgstr ""
|
||||
|
||||
#. module: ventor_base
|
||||
#: model:ir.model.fields,help:ventor_base.field_res_users__allowed_warehouse_ids
|
||||
msgid "List of all warehouses user has access to"
|
||||
msgstr ""
|
||||
|
||||
#. module: ventor_base
|
||||
#: model:res.groups,name:ventor_base.merp_menu_manufacturing
|
||||
msgid "MO and WO management"
|
||||
msgstr ""
|
||||
|
||||
#. module: ventor_base
|
||||
#: model:res.groups,name:ventor_base.merp_manage_ventor_configuration_app
|
||||
msgid "Manage Ventor Configuration app"
|
||||
msgstr ""
|
||||
|
||||
#. module: ventor_base
|
||||
#: model:ir.model.fields,field_description:ventor_base.field_stock_picking_type__transfer_more_items
|
||||
msgid "Move more than planned"
|
||||
msgstr ""
|
||||
|
||||
#. module: ventor_base
|
||||
#: model_terms:ir.ui.view,arch_db:ventor_base.res_user_form
|
||||
msgid "Multi Warehouses"
|
||||
msgstr ""
|
||||
|
||||
#. module: ventor_base
|
||||
#: model:ir.model.fields.selection,name:ventor_base.selection__stock_picking_type__behavior_on_backorder_creation__never_create_backorder
|
||||
msgid "Never Create Backorder"
|
||||
msgstr ""
|
||||
|
||||
#. module: ventor_base
|
||||
#: model:ir.model.fields,field_description:ventor_base.field_res_config_settings__module_outgoing_routing
|
||||
msgid "Outgoing Routing"
|
||||
msgstr ""
|
||||
|
||||
#. module: ventor_base
|
||||
#: model:ir.actions.act_window,name:ventor_base.ventor_package_management_action
|
||||
#: model:ir.model.fields.selection,name:ventor_base.selection__ventor_option_setting__action_type__package_management
|
||||
#: model:ir.ui.menu,name:ventor_base.ventor_package_management_app_menu
|
||||
msgid "Package Management"
|
||||
msgstr ""
|
||||
|
||||
#. module: ventor_base
|
||||
#: model:res.groups,name:ventor_base.merp_package_management
|
||||
msgid "Package Management Menu"
|
||||
msgstr ""
|
||||
|
||||
#. module: ventor_base
|
||||
#: model:ir.model,name:ventor_base.model_stock_picking_type
|
||||
msgid "Picking Type"
|
||||
msgstr ""
|
||||
|
||||
#. module: ventor_base
|
||||
#: model:ir.model.fields,help:ventor_base.field_stock_picking_type__show_next_product
|
||||
msgid ""
|
||||
"Product field will show the next product to be picked. Use the setting "
|
||||
"during picking and delivery. It is recommended to disable the setting for "
|
||||
"the reception area"
|
||||
msgstr ""
|
||||
|
||||
#. module: ventor_base
|
||||
#: model:ir.actions.act_window,name:ventor_base.ventor_putaway_action
|
||||
#: model:ir.model.fields.selection,name:ventor_base.selection__ventor_option_setting__action_type__putaway
|
||||
#: model:ir.ui.menu,name:ventor_base.ventor_putaway_app_menu
|
||||
msgid "Putaway"
|
||||
msgstr ""
|
||||
|
||||
#. module: ventor_base
|
||||
#: model:res.groups,name:ventor_base.merp_putaway
|
||||
msgid "Putaway Menu"
|
||||
msgstr ""
|
||||
|
||||
#. module: ventor_base
|
||||
#: model:ir.model,name:ventor_base.model_stock_quant
|
||||
msgid "Quants"
|
||||
msgstr ""
|
||||
|
||||
#. module: ventor_base
|
||||
#: model:ir.model.fields.selection,name:ventor_base.selection__ventor_option_setting__action_type__quick_info
|
||||
msgid "Quick Info"
|
||||
msgstr ""
|
||||
|
||||
#. module: ventor_base
|
||||
#: model:res.groups,name:ventor_base.merp_menu_info
|
||||
msgid "Quick Info Menu"
|
||||
msgstr ""
|
||||
|
||||
#. module: ventor_base
|
||||
#: model:res.groups,name:ventor_base.merp_menu_allow_update_product_on_hand
|
||||
msgid "Quick Info: Update product on hand"
|
||||
msgstr ""
|
||||
|
||||
#. module: ventor_base
|
||||
#: model:ir.actions.act_window,name:ventor_base.ventor_quick_info_action
|
||||
#: model:ir.ui.menu,name:ventor_base.ventor_quick_info_app_menu
|
||||
msgid "Quick info"
|
||||
msgstr ""
|
||||
|
||||
#. module: ventor_base
|
||||
#: model:ir.model.fields,help:ventor_base.field_stock_picking_type__manage_packages
|
||||
msgid ""
|
||||
"Scan source (destination) packages right after scanning source (destination) location. Use it if you move from one package to another or pick items from packages or pallets. Works only if package management settings is active on Odoo side.\n"
|
||||
"\n"
|
||||
" If you want to use Show packages fields, you must turn on setting 'Packages' in inventory settings"
|
||||
msgstr ""
|
||||
|
||||
#. module: ventor_base
|
||||
#: model:ir.ui.menu,name:ventor_base.ventor_app_settings
|
||||
msgid "Settings"
|
||||
msgstr ""
|
||||
|
||||
#. module: ventor_base
|
||||
#: model:ir.model.fields,field_description:ventor_base.field_stock_picking_type__show_print_attachment_button
|
||||
msgid "Show Print attachments button"
|
||||
msgstr ""
|
||||
|
||||
#. module: ventor_base
|
||||
#: model:ir.model.fields,field_description:ventor_base.field_stock_picking_type__manage_product_owner
|
||||
msgid "Show Product Owner field"
|
||||
msgstr ""
|
||||
|
||||
#. module: ventor_base
|
||||
#: model:ir.model.fields,field_description:ventor_base.field_stock_picking_type__show_put_in_pack_button
|
||||
msgid "Show Put in pack button"
|
||||
msgstr ""
|
||||
|
||||
#. module: ventor_base
|
||||
#: model:ir.model.fields,field_description:ventor_base.field_stock_picking_type__show_next_product
|
||||
msgid "Show next product"
|
||||
msgstr ""
|
||||
|
||||
#. module: ventor_base
|
||||
#: model:ir.model.fields,field_description:ventor_base.field_stock_picking_type__manage_packages
|
||||
msgid "Show packages fields"
|
||||
msgstr ""
|
||||
|
||||
#. module: ventor_base
|
||||
#: model:ir.model.fields,field_description:ventor_base.field_res_config_settings__add_barcode_on_view
|
||||
msgid "Show the Location barcode field on the form"
|
||||
msgstr ""
|
||||
|
||||
#. module: ventor_base
|
||||
#: model:ir.model.fields,help:ventor_base.field_stock_picking_type__show_print_attachment_button
|
||||
msgid ""
|
||||
"Showing the Print attachments button in the toolbar instead of keeping it in"
|
||||
" the hidden menu"
|
||||
msgstr ""
|
||||
|
||||
#. module: ventor_base
|
||||
#: model:ir.model.fields,help:ventor_base.field_stock_picking_type__show_put_in_pack_button
|
||||
msgid ""
|
||||
"Showing the Put in pack button in the toolbar instead of keeping it in the "
|
||||
"hidden menu"
|
||||
msgstr ""
|
||||
|
||||
#. module: ventor_base
|
||||
#: model:ir.model.fields,help:ventor_base.field_stock_picking_type__confirm_destination_location
|
||||
msgid ""
|
||||
"The dot next to the field gets yellow color means user has to confirm it. "
|
||||
"User has to scan a barcode of destination location"
|
||||
msgstr ""
|
||||
|
||||
#. module: ventor_base
|
||||
#: model:ir.model.fields,help:ventor_base.field_stock_picking_type__confirm_product
|
||||
msgid ""
|
||||
"The dot next to the field gets yellow color means user has to confirm it. "
|
||||
"User has to scan a barcode of product."
|
||||
msgstr ""
|
||||
|
||||
#. module: ventor_base
|
||||
#: model:ir.model.fields,help:ventor_base.field_stock_picking_type__confirm_source_location
|
||||
msgid ""
|
||||
"The dot next to the field gets yellow color means user has to confirm it. "
|
||||
"User has to scan a barcode of source location"
|
||||
msgstr ""
|
||||
|
||||
#. module: ventor_base
|
||||
#: model:res.groups,comment:ventor_base.merp_user_validate_inventory_adjustment
|
||||
msgid "The group allows Inventory/User to validate inventory"
|
||||
msgstr ""
|
||||
|
||||
#. module: ventor_base
|
||||
#: code:addons/ventor_base/models/res_company.py:0
|
||||
#, python-format
|
||||
msgid "The logotype can't be less than {}x{} px."
|
||||
msgstr ""
|
||||
|
||||
#. module: ventor_base
|
||||
#: model_terms:ir.ui.view,arch_db:ventor_base.view_stock_config_settings
|
||||
msgid "Use it to activate barcodes for the Community version"
|
||||
msgstr ""
|
||||
|
||||
#. module: ventor_base
|
||||
#: model:res.groups,name:ventor_base.merp_menu_allow_changing_settings
|
||||
msgid "Use local user device settings"
|
||||
msgstr ""
|
||||
|
||||
#. module: ventor_base
|
||||
#: model:ir.model.fields,field_description:ventor_base.field_res_users__ventor_user_settings
|
||||
#: model:ir.ui.menu,name:ventor_base.ventor_app_user_settings_menu
|
||||
msgid "User Settings"
|
||||
msgstr ""
|
||||
|
||||
#. module: ventor_base
|
||||
#: model:ir.model.fields,help:ventor_base.field_stock_picking_type__change_source_location
|
||||
msgid ""
|
||||
"User can change default source location to pick item from another location. "
|
||||
"Works only if 'Confirm source location' setting is active"
|
||||
msgstr ""
|
||||
|
||||
#. module: ventor_base
|
||||
#: model:ir.model.fields,help:ventor_base.field_stock_picking_type__confirm_source_package
|
||||
msgid ""
|
||||
"User has to scan a barcode of source package. The dot next to the field gets"
|
||||
" yellow color means user has to confirm it"
|
||||
msgstr ""
|
||||
|
||||
#. module: ventor_base
|
||||
#: model:ir.model,name:ventor_base.model_res_users
|
||||
msgid "Users"
|
||||
msgstr ""
|
||||
|
||||
#. module: ventor_base
|
||||
#: model:res.groups,name:ventor_base.merp_user_validate_inventory_adjustment
|
||||
msgid "Validate Inventory"
|
||||
msgstr ""
|
||||
|
||||
#. module: ventor_base
|
||||
#: model:ir.module.category,name:ventor_base.module_category_merp_access_application
|
||||
msgid "Ventor Access Rights"
|
||||
msgstr ""
|
||||
|
||||
#. module: ventor_base
|
||||
#: model:ir.model.fields,field_description:ventor_base.field_res_company__logotype_file
|
||||
#: model:ir.model.fields,field_description:ventor_base.field_res_config_settings__logotype_file
|
||||
msgid "Ventor Application Logo File"
|
||||
msgstr ""
|
||||
|
||||
#. module: ventor_base
|
||||
#: model_terms:ir.ui.view,arch_db:ventor_base.view_stock_config_settings
|
||||
msgid "Ventor Application modules"
|
||||
msgstr ""
|
||||
|
||||
#. module: ventor_base
|
||||
#: model:ir.model.fields,field_description:ventor_base.field_res_users__ventor_base_version
|
||||
msgid "Ventor Base Version"
|
||||
msgstr ""
|
||||
|
||||
#. module: ventor_base
|
||||
#: model:ir.ui.menu,name:ventor_base.ventor_app_base_menu
|
||||
#: model_terms:ir.ui.view,arch_db:ventor_base.ventor_stock_picking_form
|
||||
#: model_terms:ir.ui.view,arch_db:ventor_base.view_stock_config_settings
|
||||
msgid "Ventor Configuration"
|
||||
msgstr ""
|
||||
|
||||
#. module: ventor_base
|
||||
#: model:ir.module.category,name:ventor_base.module_category_merp_menu_application
|
||||
msgid "Ventor Menu Management"
|
||||
msgstr ""
|
||||
|
||||
#. module: ventor_base
|
||||
#: model:ir.model,name:ventor_base.model_ventor_option_setting
|
||||
msgid "Ventor Option Setting"
|
||||
msgstr ""
|
||||
|
||||
#. module: ventor_base
|
||||
#: model_terms:ir.ui.view,arch_db:ventor_base.res_user_form
|
||||
msgid "Ventor Preferences"
|
||||
msgstr ""
|
||||
|
||||
#. module: ventor_base
|
||||
#: model:ir.module.category,name:ventor_base.module_category_ventor_roles
|
||||
msgid "Ventor Roles"
|
||||
msgstr ""
|
||||
|
||||
#. module: ventor_base
|
||||
#: model:ir.model,name:ventor_base.model_ventor_setting_value
|
||||
msgid "Ventor Setting Value"
|
||||
msgstr ""
|
||||
|
||||
#. module: ventor_base
|
||||
#: model:ir.model,name:ventor_base.model_stock_warehouse
|
||||
#: model:ir.model.fields,field_description:ventor_base.field_stock_location__warehouse_id
|
||||
#: model_terms:ir.ui.view,arch_db:ventor_base.view_location_search
|
||||
msgid "Warehouse"
|
||||
msgstr ""
|
||||
|
||||
#. module: ventor_base
|
||||
#: model:ir.actions.act_window,name:ventor_base.ventor_stock_picking_action
|
||||
#: model:ir.ui.menu,name:ventor_base.ventor_wh_operations_app_menu
|
||||
msgid "Warehouse Operations"
|
||||
msgstr ""
|
||||
|
||||
#. module: ventor_base
|
||||
#: model:res.groups,name:ventor_base.merp_menu_warehouse_operations
|
||||
msgid "Warehouse Operations Menu"
|
||||
msgstr ""
|
||||
|
||||
#. module: ventor_base
|
||||
#: model:res.groups,name:ventor_base.merp_allow_applying_all_qty_of_product
|
||||
msgid "Warehouse Operations: Allow applying all qty of product"
|
||||
msgstr ""
|
||||
|
||||
#. module: ventor_base
|
||||
#: model:res.groups,name:ventor_base.ventor_role_wh_manager
|
||||
msgid "Warehouse manager"
|
||||
msgstr ""
|
||||
|
||||
#. module: ventor_base
|
||||
#: model:res.groups,name:ventor_base.ventor_role_wh_worker
|
||||
msgid "Warehouse worker"
|
||||
msgstr ""
|
||||
|
||||
#. module: ventor_base
|
||||
#: code:addons/ventor_base/models/stock_picking.py:0
|
||||
#: code:addons/ventor_base/models/stock_picking.py:0
|
||||
#, python-format
|
||||
msgid "Warning"
|
||||
msgstr ""
|
||||
|
||||
#. module: ventor_base
|
||||
#: model_terms:ir.ui.view,arch_db:ventor_base.res_user_form
|
||||
msgid ""
|
||||
"Warning! If the user is Inventory / Administrator, \n"
|
||||
" the Allowed Warehouses configuration is ignored and \n"
|
||||
" the user will still be able to see all warehouses"
|
||||
msgstr ""
|
||||
|
||||
#. module: ventor_base
|
||||
#: code:addons/ventor_base/models/stock_quant.py:0
|
||||
#, python-format
|
||||
msgid "You need to supply a Lot/Serial number for product: %s"
|
||||
msgstr ""
|
||||
|
|
@ -0,0 +1,13 @@
|
|||
from odoo import SUPERUSER_ID, _, api
|
||||
|
||||
|
||||
def migrate(cr, version):
|
||||
|
||||
env = api.Environment(cr, SUPERUSER_ID, {})
|
||||
|
||||
lot_for_location_setting = env.ref("ventor_base.lot_for_location_int_transfers")
|
||||
lot_for_location_setting.write(
|
||||
{
|
||||
"description": "If it is active, you can select only lots from source location"
|
||||
}
|
||||
)
|
||||
|
|
@ -0,0 +1,16 @@
|
|||
from odoo import SUPERUSER_ID, _, api
|
||||
|
||||
|
||||
def migrate(cr, version):
|
||||
|
||||
env = api.Environment(cr, SUPERUSER_ID, {})
|
||||
|
||||
ventor_roles_warehouse_worker = env.ref('ventor_base.ventor_role_wh_worker')
|
||||
ventor_roles_warehouse_worker.write(
|
||||
{
|
||||
'implied_ids': [
|
||||
(4, env.ref('ventor_base.merp_order_recheck_menu').id),
|
||||
(4, env.ref('ventor_base.merp_rfid_menu').id),
|
||||
]
|
||||
}
|
||||
)
|
||||
|
|
@ -0,0 +1,15 @@
|
|||
from odoo import SUPERUSER_ID, _, api
|
||||
|
||||
|
||||
def migrate(cr, version):
|
||||
|
||||
env = api.Environment(cr, SUPERUSER_ID, {})
|
||||
|
||||
ventor_roles_warehouse_worker = env.ref('ventor_base.ventor_role_wh_worker')
|
||||
ventor_roles_warehouse_worker.write(
|
||||
{
|
||||
'implied_ids': [
|
||||
(4, env.ref('ventor_base.merp_wave_picking_menu').id),
|
||||
]
|
||||
}
|
||||
)
|
||||
|
|
@ -0,0 +1,34 @@
|
|||
from odoo import SUPERUSER_ID, _, api
|
||||
|
||||
|
||||
def migrate(cr, version):
|
||||
|
||||
env = api.Environment(cr, SUPERUSER_ID, {})
|
||||
|
||||
allow_validate_less = env.ref("ventor_base.allow_validate_less")
|
||||
allow_validate_less.write(
|
||||
{
|
||||
"name": "Validate uncompleted orders",
|
||||
"description": "User will be able to validate the order even if not all items were found"
|
||||
}
|
||||
)
|
||||
|
||||
value = {
|
||||
"name": "Confirm destination package",
|
||||
"description": "User has to scan a barcode of destination package. "
|
||||
"The dot next to the field gets yellow color means user has to confirm it"
|
||||
}
|
||||
|
||||
scan_destination_package_batch_picking = env.ref(
|
||||
"ventor_base.scan_destination_package_batch_picking",
|
||||
False,
|
||||
)
|
||||
scan_destination_package_cluster_picking = env.ref(
|
||||
"ventor_base.scan_destination_package_cluster_picking",
|
||||
False,
|
||||
)
|
||||
|
||||
if scan_destination_package_batch_picking:
|
||||
scan_destination_package_batch_picking.write(value)
|
||||
if scan_destination_package_cluster_picking:
|
||||
scan_destination_package_cluster_picking.write(value)
|
||||
|
|
@ -0,0 +1,12 @@
|
|||
# Copyright 2020 VentorTech OU
|
||||
# License LGPL-3.0 or later (https://www.gnu.org/licenses/lgpl-3.0).
|
||||
|
||||
from . import stock_location
|
||||
from . import stock_picking
|
||||
from . import stock_quant
|
||||
from . import res_company
|
||||
from . import res_config
|
||||
from . import res_users
|
||||
from . import stock_warehouse
|
||||
from . import ventor_option_setting
|
||||
from . import pallet_transfer
|
||||
|
|
@ -0,0 +1,37 @@
|
|||
# Copyright 2022 VentorTech OU
|
||||
# License LGPL-3.0 or later (https://www.gnu.org/licenses/lgpl-3.0).
|
||||
|
||||
# Odoo:
|
||||
from odoo import _, api, fields, models
|
||||
|
||||
|
||||
class PalletTransfer(models.Model):
|
||||
_name = "pallet.transfer"
|
||||
_description = "All Pallet Transfers"
|
||||
|
||||
name = fields.Char(
|
||||
string="Transfer Name",
|
||||
required=True,
|
||||
default="New",
|
||||
)
|
||||
pallet_name = fields.Char(string="Pallet Name")
|
||||
pallet_id = fields.Many2one("stock.location", string="Pallets")
|
||||
source_location_id = fields.Many2one("stock.location", string="Source Location")
|
||||
destination_location_id = fields.Many2one("stock.location", string="Destination Location")
|
||||
|
||||
def update_value(self):
|
||||
self.write(
|
||||
{
|
||||
"name": self.env["ir.sequence"].next_by_code("pallet.transfer"),
|
||||
"pallet_name": self.pallet_id.name,
|
||||
"source_location_id": self.pallet_id.location_id,
|
||||
}
|
||||
)
|
||||
self.pallet_id.location_id = self.destination_location_id
|
||||
|
||||
@api.model_create_multi
|
||||
def create(self, vals_list):
|
||||
res = super().create(vals_list)
|
||||
if res:
|
||||
res.update_value()
|
||||
return res
|
||||
|
|
@ -0,0 +1,58 @@
|
|||
# Copyright 2020 VentorTech OU
|
||||
# License LGPL-3.0 or later (https://www.gnu.org/licenses/lgpl-3.0).
|
||||
|
||||
from odoo import _, models, fields
|
||||
from odoo.exceptions import UserError
|
||||
|
||||
import io
|
||||
import base64
|
||||
from PIL import Image
|
||||
|
||||
|
||||
LOGOTYPE_W = 500
|
||||
LOGOTYPE_H = 500
|
||||
|
||||
|
||||
class Company(models.Model):
|
||||
_inherit = 'res.company'
|
||||
|
||||
barcode_on_picking_document = fields.Boolean(
|
||||
string='Show Sales Order Barcode on Picking document',
|
||||
help='Showing a barcode of the related sales order on all printed picking documents',
|
||||
)
|
||||
|
||||
force_lot_validation_on_inventory_adjustment = fields.Boolean(
|
||||
string='Force Lot Validation on Inventory Adjustment',
|
||||
)
|
||||
|
||||
logotype_file = fields.Binary('Ventor Application Logo File', default=False)
|
||||
|
||||
def _validate_logotype(self, vals):
|
||||
if not vals.get('logotype_file'):
|
||||
return False
|
||||
|
||||
dat = base64.decodebytes(vals.get('logotype_file'))
|
||||
|
||||
image = Image.open(io.BytesIO(dat))
|
||||
if image.format.lower() != 'png':
|
||||
raise UserError(
|
||||
_(
|
||||
'Apparently, the logotype is not a .png file'
|
||||
' or the file was incorrectly converted to .png format'
|
||||
)
|
||||
)
|
||||
|
||||
if int(image.width) < LOGOTYPE_W or int(image.height) < LOGOTYPE_H:
|
||||
raise UserError(
|
||||
_(
|
||||
'The logotype can\'t be less than {}x{} px.'.format(LOGOTYPE_W, LOGOTYPE_H)
|
||||
)
|
||||
)
|
||||
|
||||
return True
|
||||
|
||||
def write(self, vals):
|
||||
if 'logotype_file' in vals:
|
||||
self._validate_logotype(vals)
|
||||
res = super(Company, self).write(vals)
|
||||
return res
|
||||
|
|
@ -0,0 +1,182 @@
|
|||
# Copyright 2020 VentorTech OU
|
||||
# License LGPL-3.0 or later (https://www.gnu.org/licenses/lgpl-3.0).
|
||||
|
||||
from odoo import models, fields, api
|
||||
import logging
|
||||
|
||||
_logger = logging.getLogger(__name__)
|
||||
|
||||
|
||||
class VentorConfigSettings(models.TransientModel):
|
||||
_inherit = 'res.config.settings'
|
||||
|
||||
logotype_file = fields.Binary(
|
||||
string='Ventor Application Logo File',
|
||||
related='company_id.logotype_file',
|
||||
readonly=False
|
||||
)
|
||||
|
||||
module_outgoing_routing = fields.Boolean(
|
||||
string='Outgoing Routing'
|
||||
)
|
||||
|
||||
add_barcode_on_view = fields.Boolean(
|
||||
string='Show the Location barcode field on the form',
|
||||
)
|
||||
|
||||
base_version = fields.Char(
|
||||
string='Base Module Version',
|
||||
compute='_compute_base_version',
|
||||
store=False,
|
||||
)
|
||||
|
||||
barcode_on_picking_document = fields.Boolean(
|
||||
string='Show Sales Order Barcode on Picking document',
|
||||
readonly=False,
|
||||
related='company_id.barcode_on_picking_document',
|
||||
)
|
||||
|
||||
force_lot_validation_on_inventory_adjustment = fields.Boolean(
|
||||
string='Force Lot Validation on Inventory Adjustment',
|
||||
readonly=False,
|
||||
related='company_id.force_lot_validation_on_inventory_adjustment',
|
||||
)
|
||||
|
||||
custom_package_name = fields.Char(
|
||||
string='Custom package name',
|
||||
config_parameter='ventor_base.custom_package_name',
|
||||
)
|
||||
|
||||
@api.depends('company_id')
|
||||
def _compute_base_version(self):
|
||||
self.env.cr.execute(
|
||||
"SELECT latest_version FROM ir_module_module WHERE name='ventor_base'"
|
||||
)
|
||||
result = self.env.cr.fetchone()
|
||||
full_version = result and result[0]
|
||||
split_value = full_version and full_version.split('.')
|
||||
self.base_version = split_value and '.'.join(split_value[-3:])
|
||||
|
||||
@api.model
|
||||
def get_values(self):
|
||||
res = super(VentorConfigSettings, self).get_values()
|
||||
|
||||
view_with_barcode = self.env.ref(
|
||||
'ventor_base.view_location_form_inherit_additional_barcode',
|
||||
raise_if_not_found=False
|
||||
)
|
||||
if view_with_barcode:
|
||||
res['add_barcode_on_view'] = view_with_barcode.active
|
||||
|
||||
return res
|
||||
|
||||
def _set_apply_default_lots(self, previous_group):
|
||||
operation_type_ids = self.env['stock.picking.type'].search([])
|
||||
group_stock_production_lot = previous_group.get('group_stock_production_lot')
|
||||
|
||||
if (
|
||||
group_stock_production_lot != self.group_stock_production_lot
|
||||
and not self.group_stock_production_lot
|
||||
):
|
||||
operation_type_ids.apply_default_lots = False
|
||||
ventor_apply_default_lots = self.env['ventor.option.setting'].search(
|
||||
[
|
||||
('technical_name', '=', 'apply_default_lots'),
|
||||
]
|
||||
)
|
||||
ventor_apply_default_lots.with_context(
|
||||
disable_apply_default_lots=True
|
||||
).set_apply_default_lots_fields(self.group_stock_production_lot)
|
||||
|
||||
def _set_packages_fields(self, previous_group):
|
||||
operation_type_ids = self.env['stock.picking.type'].search([])
|
||||
group_stock_tracking_lot = previous_group.get('group_stock_tracking_lot')
|
||||
|
||||
if group_stock_tracking_lot != self.group_stock_tracking_lot:
|
||||
operation_type_ids.manage_packages = self.group_stock_tracking_lot
|
||||
operation_type_ids.show_put_in_pack_button = self.group_stock_tracking_lot
|
||||
if not self.group_stock_tracking_lot:
|
||||
operation_type_ids.show_put_in_pack_button = self.group_stock_tracking_lot
|
||||
operation_type_ids.scan_destination_package = self.group_stock_tracking_lot
|
||||
operation_type_ids.confirm_source_package = self.group_stock_tracking_lot
|
||||
operation_type_ids.allow_creating_new_packages = self.group_stock_tracking_lot
|
||||
|
||||
ventor_packages_settings = self.env['ventor.option.setting'].search(
|
||||
[
|
||||
(
|
||||
'technical_name',
|
||||
'in',
|
||||
(
|
||||
'confirm_source_package',
|
||||
'scan_destination_package',
|
||||
'manage_packages',
|
||||
'allow_creating_new_packages',
|
||||
'pack_all_items',
|
||||
'use_reusable_packages',
|
||||
),
|
||||
),
|
||||
]
|
||||
)
|
||||
ventor_packages_settings.with_context(
|
||||
disable_package_fields=True
|
||||
).set_related_package_fields(self.group_stock_tracking_lot)
|
||||
if self.group_stock_tracking_lot:
|
||||
ventor_packages_settings = self.env['ventor.option.setting'].search(
|
||||
[
|
||||
('technical_name', '=', 'manage_packages'),
|
||||
]
|
||||
)
|
||||
ventor_packages_settings.value = self.env.ref('ventor_base.bool_true')
|
||||
|
||||
def _set_manage_product_owner(self, previous_group):
|
||||
operation_type_ids = self.env['stock.picking.type'].search([])
|
||||
group_stock_tracking_owner = previous_group.get('group_stock_tracking_owner')
|
||||
|
||||
if group_stock_tracking_owner != self.group_stock_tracking_owner:
|
||||
operation_type_ids.manage_product_owner = self.group_stock_tracking_owner
|
||||
|
||||
ventor_owner_settings = self.env['ventor.option.setting'].search(
|
||||
[
|
||||
('technical_name', '=', 'manage_product_owner'),
|
||||
]
|
||||
)
|
||||
ventor_owner_settings.value = self.env.ref('ventor_base.bool_true') if self.group_stock_tracking_owner else self.env.ref('ventor_base.bool_false')
|
||||
|
||||
def _update_display_wave_picking_menu(self, previous_group):
|
||||
group_stock_picking_wave = previous_group.get('group_stock_picking_wave')
|
||||
|
||||
if group_stock_picking_wave != self.group_stock_picking_wave:
|
||||
merp_wave_picking_menu = self.env.ref('ventor_base.merp_wave_picking_menu')
|
||||
users = self.env['res.users'].with_context(active_test=False).search([
|
||||
('share', '=', False)
|
||||
])
|
||||
merp_wave_picking_menu.write(
|
||||
{
|
||||
'users': [(6, 0, users.ids)]
|
||||
if self.group_stock_picking_wave
|
||||
else [(5, 0, 0)],
|
||||
}
|
||||
)
|
||||
|
||||
def set_values(self):
|
||||
previous_group = self.default_get(
|
||||
[
|
||||
'group_stock_tracking_lot',
|
||||
'group_stock_tracking_owner',
|
||||
'group_stock_production_lot',
|
||||
'group_stock_picking_wave',
|
||||
]
|
||||
)
|
||||
res = super(VentorConfigSettings, self).set_values()
|
||||
|
||||
view_with_barcode = self.env.ref('ventor_base.view_location_form_inherit_additional_barcode')
|
||||
view_with_barcode.active = self.add_barcode_on_view
|
||||
|
||||
# Updating the values of dependent fields
|
||||
self.sudo()._set_apply_default_lots(previous_group)
|
||||
self.sudo()._set_packages_fields(previous_group)
|
||||
self.sudo()._set_manage_product_owner(previous_group)
|
||||
|
||||
# Updating the menu display in Ventor for users
|
||||
self.sudo()._update_display_wave_picking_menu(previous_group)
|
||||
return res
|
||||
131
odoo-bringout-ventor-ventor_base/ventor_base/models/res_users.py
Normal file
|
|
@ -0,0 +1,131 @@
|
|||
# Copyright 2020 VentorTech OU
|
||||
# License LGPL-3.0 or later (https://www.gnu.org/licenses/lgpl-3.0).
|
||||
|
||||
import json
|
||||
|
||||
from odoo import api, models, fields
|
||||
|
||||
|
||||
class ResUsers(models.Model):
|
||||
_inherit = 'res.users'
|
||||
|
||||
allowed_warehouse_ids = fields.Many2many(
|
||||
comodel_name='stock.warehouse',
|
||||
string='Allowed Warehouses',
|
||||
help='List of all warehouses user has access to',
|
||||
)
|
||||
|
||||
custom_package_name = fields.Char(
|
||||
string='Custom Build Name',
|
||||
compute="_compute_custom_package_name",
|
||||
compute_sudo=True,
|
||||
)
|
||||
|
||||
ventor_base_version = fields.Char(
|
||||
compute="_compute_ventor_base_version",
|
||||
compute_sudo=True,
|
||||
readonly=True,
|
||||
)
|
||||
|
||||
ventor_global_settings = fields.Text(
|
||||
string='Global Settings',
|
||||
readonly=True,
|
||||
compute='_compute_global_settings'
|
||||
)
|
||||
|
||||
ventor_user_settings = fields.Text(
|
||||
string='User Settings'
|
||||
)
|
||||
|
||||
@property
|
||||
def SELF_READABLE_FIELDS(self):
|
||||
readable_fields = [
|
||||
'ventor_global_settings',
|
||||
'ventor_user_settings',
|
||||
'custom_package_name',
|
||||
'ventor_base_version',
|
||||
]
|
||||
return super().SELF_READABLE_FIELDS + readable_fields
|
||||
|
||||
@property
|
||||
def SELF_WRITEABLE_FIELDS(self):
|
||||
writable_fields = ['ventor_user_settings']
|
||||
return super().SELF_WRITEABLE_FIELDS + writable_fields
|
||||
|
||||
def _compute_custom_package_name(self):
|
||||
custom_package_name = (
|
||||
self.env["ir.config_parameter"]
|
||||
.get_param("ventor_base.custom_package_name", "")
|
||||
)
|
||||
self.custom_package_name = custom_package_name
|
||||
|
||||
def _compute_ventor_base_version(self):
|
||||
ventor_base_version = (
|
||||
self.env["ir.module.module"]
|
||||
.search([("name", "=", "ventor_base"), ("state", "=", "installed")])
|
||||
.latest_version
|
||||
)
|
||||
for user in self:
|
||||
if ventor_base_version:
|
||||
user.ventor_base_version = ventor_base_version
|
||||
else:
|
||||
user.ventor_base_version = ""
|
||||
|
||||
def _compute_global_settings(self):
|
||||
settings = []
|
||||
|
||||
for stock_picking_type in self.env['stock.picking.type'].search([]):
|
||||
stock_picking_type_settings = stock_picking_type.get_warehouse_operation_settings()
|
||||
if stock_picking_type.code != 'outgoing':
|
||||
stock_picking_type_settings['settings'].pop('check_shipping_information')
|
||||
if stock_picking_type.code != 'incoming':
|
||||
stock_picking_type_settings['settings'].pop('hide_qty_to_receive')
|
||||
settings.append(stock_picking_type_settings)
|
||||
|
||||
ventor_option_settings = self._get_ventor_option_settings()
|
||||
|
||||
obj = {'operation_types': settings}
|
||||
obj.update(ventor_option_settings)
|
||||
|
||||
self.ventor_global_settings = json.dumps(
|
||||
obj=obj,
|
||||
indent=' ',
|
||||
sort_keys=True
|
||||
)
|
||||
|
||||
def _get_ventor_option_settings(self):
|
||||
ventor_option_settings = self.env['ventor.option.setting'].sudo().get_general_settings()
|
||||
if self.env.ref('ventor_base.merp_wave_picking_menu') not in self.groups_id:
|
||||
ventor_option_settings.pop('wave_picking')
|
||||
return ventor_option_settings
|
||||
|
||||
def _update_group_picking_wave_menu(self, vals):
|
||||
vals = self._remove_reified_groups(vals)
|
||||
if 'groups_id' in vals:
|
||||
group_stock_picking_wave = self.env.ref('stock.group_stock_picking_wave')
|
||||
merp_wave_picking_menu = self.env.ref('ventor_base.merp_wave_picking_menu')
|
||||
for user in self:
|
||||
if group_stock_picking_wave not in user.groups_id and merp_wave_picking_menu in user.groups_id:
|
||||
merp_wave_picking_menu.write({'users': [(3, user.id)]})
|
||||
|
||||
@api.model_create_multi
|
||||
def create(self, vals_list):
|
||||
result = super().create(vals_list)
|
||||
if not result.allowed_warehouse_ids:
|
||||
result.write(
|
||||
{
|
||||
'allowed_warehouse_ids': [
|
||||
(
|
||||
6, 0, self.env["stock.warehouse"].sudo().with_context(active_test=False).search([]).ids
|
||||
)
|
||||
]
|
||||
}
|
||||
)
|
||||
return result
|
||||
|
||||
def write(self, vals):
|
||||
result = super().write(vals)
|
||||
if result and 'allowed_warehouse_ids' in vals:
|
||||
self.env['ir.rule'].clear_caches()
|
||||
self._update_group_picking_wave_menu(vals)
|
||||
return result
|
||||
|
|
@ -0,0 +1,14 @@
|
|||
# Copyright 2021 VentorTech OU
|
||||
# License LGPL-3.0 or later (https://www.gnu.org/licenses/lgpl-3.0).
|
||||
|
||||
|
||||
# Odoo:
|
||||
from odoo import api, fields, models
|
||||
|
||||
|
||||
class StockLocation(models.Model):
|
||||
_inherit = "stock.location"
|
||||
|
||||
# store attribute for Group By 'Warehouse', locations tree view
|
||||
warehouse_id = fields.Many2one(store=True)
|
||||
is_pallet = fields.Boolean(string="Is Pallet")
|
||||
|
|
@ -0,0 +1,299 @@
|
|||
from odoo import fields, models, api, _
|
||||
|
||||
|
||||
class StockPickingType(models.Model):
|
||||
_inherit = "stock.picking.type"
|
||||
|
||||
allow_creating_new_packages = fields.Boolean(
|
||||
string="Allow creating new packages",
|
||||
help="User can create new packages by scanning a new barcode or create it manually"
|
||||
)
|
||||
|
||||
apply_default_lots = fields.Boolean(
|
||||
string="Apply default lots and serials",
|
||||
help="If it's on, you don't need to scan lot number to confirm it. "
|
||||
"On receipts the app will create default Odoo lots and apply them to the product. "
|
||||
"On delivery zone you don't need to confirm lots and "
|
||||
"they will be taken Odoo by default"
|
||||
)
|
||||
|
||||
apply_quantity_automatically = fields.Boolean(
|
||||
string="Apply quantity automatically",
|
||||
help="Automatically validate the line after scanning a destination location. "
|
||||
"Warning: you have to insert QTY first before destination location"
|
||||
)
|
||||
|
||||
autocomplete_the_item_quantity_field = fields.Boolean(
|
||||
string="Autocomplete item quantity",
|
||||
help="Automatically insert expected quantity. No need to enter the quantity "
|
||||
"of goods using the keyboard or using scanning"
|
||||
)
|
||||
|
||||
behavior_on_backorder_creation = fields.Selection(
|
||||
[
|
||||
("always_create_backorder", "Always Create Backorder"),
|
||||
("never_create_backorder", "Never Create Backorder"),
|
||||
("ask_me_every_time", "Ask Me Every Time"),
|
||||
],
|
||||
string="Behavior On Backorder Creation",
|
||||
default="ask_me_every_time",
|
||||
required=True,
|
||||
help="Choose how to process backorders. You can always create backorders, "
|
||||
"always ignore backorders or choose it all the time (default)"
|
||||
)
|
||||
|
||||
behavior_on_split_operation = fields.Selection(
|
||||
[
|
||||
("always_split_line", "Always Split the Line"),
|
||||
("always_move_less_items", "Always Move Less Items"),
|
||||
("ask_me_every_time", "Ask Me Every Time"),
|
||||
],
|
||||
string="Behavior On Split Operation",
|
||||
compute="_compute_behavior_on_split_operation",
|
||||
readonly=False,
|
||||
store=True,
|
||||
help="Choose how to process less product qty than initial. You can always split "
|
||||
"the line, always move less items or choose it all the time(default)"
|
||||
)
|
||||
|
||||
change_destination_location = fields.Boolean(
|
||||
string="Change destination location",
|
||||
help="If this setting is active a user can change destination location "
|
||||
"while receiving to be placed at any available location",
|
||||
)
|
||||
|
||||
change_source_location = fields.Boolean(
|
||||
string="Change source location",
|
||||
help="User can change default source location to pick item from another location. "
|
||||
"Works only if 'Confirm source location' setting is active",
|
||||
)
|
||||
|
||||
check_shipping_information = fields.Boolean(
|
||||
string="Check shipping information",
|
||||
help="If the setting is active the user can edit shipping information "
|
||||
"before validate OUT transfer",
|
||||
)
|
||||
|
||||
confirm_destination_location = fields.Boolean(
|
||||
string="Confirm destination location",
|
||||
help="The dot next to the field gets yellow color means user has to confirm it. "
|
||||
"User has to scan a barcode of destination location"
|
||||
)
|
||||
|
||||
confirm_product = fields.Boolean(
|
||||
string="Confirm product",
|
||||
help="The dot next to the field gets yellow color means user has to confirm it. "
|
||||
"User has to scan a barcode of product."
|
||||
)
|
||||
|
||||
confirm_source_location = fields.Boolean(
|
||||
string="Confirm source location",
|
||||
help="The dot next to the field gets yellow color means user has to confirm it. "
|
||||
"User has to scan a barcode of source location"
|
||||
)
|
||||
|
||||
confirm_source_package = fields.Boolean(
|
||||
string="Confirm source package",
|
||||
help="User has to scan a barcode of source package. "
|
||||
"The dot next to the field gets yellow color means user has to confirm it"
|
||||
)
|
||||
|
||||
hide_qty_to_receive = fields.Boolean(
|
||||
string="Hide QTYs to receive",
|
||||
help="Setting’s description: User will not see how many QTYs they need to receive."
|
||||
)
|
||||
|
||||
is_consignment_enabled = fields.Boolean(
|
||||
compute="_compute_is_consignment_enabled"
|
||||
)
|
||||
|
||||
is_package_tracking_enabled = fields.Boolean(
|
||||
compute="_compute_is_package_tracking_enabled"
|
||||
)
|
||||
|
||||
is_stock_production_lot_enabled = fields.Boolean(
|
||||
compute="_compute_is_stock_production_lot_enabled"
|
||||
)
|
||||
|
||||
manage_packages = fields.Boolean(
|
||||
string="Show packages fields",
|
||||
default=lambda self: self.env.ref("stock.group_tracking_lot")
|
||||
in self.env.ref("base.group_user").implied_ids,
|
||||
help="Scan source (destination) packages right after scanning source (destination) "
|
||||
"location. Use it if you move from one package to another or pick items from "
|
||||
"packages or pallets. Works only if package management settings is active on Odoo "
|
||||
"side.\n\n If you want to use Show packages fields, you must turn on setting "
|
||||
"'Packages' in inventory settings",
|
||||
)
|
||||
|
||||
manage_product_owner = fields.Boolean(
|
||||
string="Show Product Owner field",
|
||||
default=lambda self: self.env.ref("stock.group_tracking_owner")
|
||||
in self.env.ref("base.group_user").implied_ids,
|
||||
help="Allow scan product owner. You can specify product owner while moving items. "
|
||||
"Working only with 'Consignment' setting on Odoo side"
|
||||
)
|
||||
|
||||
scan_destination_location_once = fields.Boolean(
|
||||
string="Scan destination location once",
|
||||
help="Scan the destination location only once with the last item. "
|
||||
"The destination location will be applied to all lines."
|
||||
)
|
||||
|
||||
scan_destination_package = fields.Boolean(
|
||||
string="Confirm destination package",
|
||||
help="User has to scan a barcode of destination package. The dot next to the field "
|
||||
"gets yellow color means user has to confirm it"
|
||||
)
|
||||
|
||||
show_next_product = fields.Boolean(
|
||||
string="Show next product",
|
||||
help="Product field will show the next product to be picked. "
|
||||
"Use the setting during picking and delivery. "
|
||||
"It is recommended to disable the setting for the reception area",
|
||||
)
|
||||
|
||||
show_print_attachment_button = fields.Boolean(
|
||||
string="Show Print attachments button",
|
||||
default=True,
|
||||
help="Showing the Print attachments button in the toolbar instead of "
|
||||
"keeping it in the hidden menu"
|
||||
)
|
||||
|
||||
show_put_in_pack_button = fields.Boolean(
|
||||
string="Show Put in pack button",
|
||||
default=lambda self: self.env.ref("stock.group_tracking_lot")
|
||||
in self.env.ref("base.group_user").implied_ids,
|
||||
help="Showing the Put in pack button in the toolbar instead of "
|
||||
"keeping it in the hidden menu"
|
||||
)
|
||||
|
||||
transfer_more_items = fields.Boolean(
|
||||
string="Move more than planned",
|
||||
help="Allows moving more items than expected (for example kg of meat, etc)"
|
||||
)
|
||||
|
||||
@api.depends('code')
|
||||
def _compute_behavior_on_split_operation(self):
|
||||
for operation_type in self:
|
||||
if operation_type.code == 'incoming':
|
||||
operation_type.behavior_on_split_operation = 'always_split_line'
|
||||
else:
|
||||
operation_type.behavior_on_split_operation = 'ask_me_every_time'
|
||||
|
||||
def _compute_is_consignment_enabled(self):
|
||||
internal_user_groups = self.env.ref('base.group_user').implied_ids
|
||||
group_tracking_owner = self.env.ref("stock.group_tracking_owner")
|
||||
for item in self:
|
||||
item.is_consignment_enabled = group_tracking_owner in internal_user_groups
|
||||
|
||||
def _compute_is_package_tracking_enabled(self):
|
||||
internal_user_groups = self.env.ref('base.group_user').implied_ids
|
||||
group_tracking_lot = self.env.ref("stock.group_tracking_lot")
|
||||
for item in self:
|
||||
item.is_package_tracking_enabled = group_tracking_lot in internal_user_groups
|
||||
|
||||
def _compute_is_stock_production_lot_enabled(self):
|
||||
internal_user_groups = self.env.ref('base.group_user').implied_ids
|
||||
group_production_lot = self.env.ref("stock.group_production_lot")
|
||||
for item in self:
|
||||
item.is_stock_production_lot_enabled = group_production_lot in internal_user_groups
|
||||
|
||||
@api.model_create_multi
|
||||
def create(self, vals_list):
|
||||
for vals in vals_list:
|
||||
if 'code' in vals:
|
||||
vals['show_next_product'] = vals['code'] != "incoming"
|
||||
vals['change_destination_location'] = True
|
||||
|
||||
return super(StockPickingType, self).create(vals_list)
|
||||
|
||||
@api.onchange('confirm_source_location')
|
||||
def _onchange_confirm_source_location(self):
|
||||
if not self.confirm_source_location:
|
||||
self.change_source_location = False
|
||||
|
||||
@api.onchange('confirm_destination_location')
|
||||
def _onchange_confirm_destination_location(self):
|
||||
if not self.confirm_destination_location:
|
||||
self.apply_quantity_automatically = False
|
||||
|
||||
@api.onchange('change_source_location')
|
||||
def _onchange_change_source_location(self):
|
||||
if self.change_source_location and not self.confirm_source_location:
|
||||
return {
|
||||
'warning': {
|
||||
'title': _("Warning"),
|
||||
'message': _("'Change source location' is available only "
|
||||
"if 'Confirm source location' is enabled")
|
||||
}
|
||||
}
|
||||
|
||||
@api.onchange('apply_quantity_automatically')
|
||||
def _onchange_apply_quantity_automatically(self):
|
||||
if self.apply_quantity_automatically and not self.confirm_destination_location:
|
||||
return {
|
||||
'warning': {
|
||||
'title': _("Warning"),
|
||||
'message': _("'Apply quantity automatically' is available only "
|
||||
"if 'Confirm destination location' is enabled")
|
||||
}
|
||||
}
|
||||
|
||||
def write(self, vals):
|
||||
res = super(StockPickingType, self).write(vals)
|
||||
|
||||
if 'change_source_location' in vals or 'confirm_source_location' in vals:
|
||||
for stock_picking_type in self:
|
||||
if stock_picking_type.change_source_location:
|
||||
if not stock_picking_type.confirm_source_location:
|
||||
stock_picking_type.change_source_location = False
|
||||
|
||||
if 'apply_quantity_automatically' in vals or 'confirm_destination_location' in vals:
|
||||
for stock_picking_type in self:
|
||||
if stock_picking_type.apply_quantity_automatically:
|
||||
if not stock_picking_type.confirm_destination_location:
|
||||
stock_picking_type.apply_quantity_automatically = False
|
||||
|
||||
if 'manage_packages' in vals:
|
||||
for stock_picking_type in self:
|
||||
if not stock_picking_type.manage_packages:
|
||||
if stock_picking_type.scan_destination_package:
|
||||
stock_picking_type.scan_destination_package = False
|
||||
if stock_picking_type.confirm_source_package:
|
||||
stock_picking_type.confirm_source_package = False
|
||||
if stock_picking_type.allow_creating_new_packages:
|
||||
stock_picking_type.allow_creating_new_packages = False
|
||||
return res
|
||||
|
||||
def get_warehouse_operation_settings(self):
|
||||
return {
|
||||
"id": self.id,
|
||||
"name": self.name,
|
||||
"wh_code": self.warehouse_id.code,
|
||||
"wh_name": self.warehouse_id.name,
|
||||
"settings": {
|
||||
"allow_creating_new_packages": self.allow_creating_new_packages,
|
||||
"confirm_source_location": self.confirm_source_location,
|
||||
"change_source_location": self.change_source_location,
|
||||
"show_next_product": self.show_next_product,
|
||||
"confirm_product": self.confirm_product,
|
||||
"apply_default_lots": self.apply_default_lots,
|
||||
"transfer_more_items": self.transfer_more_items,
|
||||
"confirm_destination_location": self.confirm_destination_location,
|
||||
"apply_quantity_automatically": self.apply_quantity_automatically,
|
||||
"change_destination_location": self.change_destination_location,
|
||||
"scan_destination_location_once": self.scan_destination_location_once,
|
||||
"autocomplete_the_item_quantity_field": self.autocomplete_the_item_quantity_field,
|
||||
"show_print_attachment_button": self.show_print_attachment_button,
|
||||
"show_put_in_pack_button": self.show_put_in_pack_button,
|
||||
"manage_packages": self.manage_packages,
|
||||
"manage_product_owner": self.manage_product_owner,
|
||||
"behavior_on_backorder_creation": self.behavior_on_backorder_creation,
|
||||
"behavior_on_split_operation": self.behavior_on_split_operation,
|
||||
"scan_destination_package": self.scan_destination_package,
|
||||
"confirm_source_package": self.confirm_source_package,
|
||||
"check_shipping_information": self.check_shipping_information,
|
||||
"hide_qty_to_receive": self.hide_qty_to_receive,
|
||||
}
|
||||
}
|
||||
|
|
@ -0,0 +1,45 @@
|
|||
# Copyright 2021 VentorTech OU
|
||||
# License LGPL-3.0 or later (https://www.gnu.org/licenses/lgpl-3.0).
|
||||
|
||||
from odoo import models, fields, api, _
|
||||
from odoo.exceptions import ValidationError
|
||||
|
||||
|
||||
class StockQuant(models.Model):
|
||||
_inherit = 'stock.quant'
|
||||
|
||||
@api.constrains("lot_id", "inventory_quantity")
|
||||
def _check_product_lot(self):
|
||||
""" check product lot/serial except for stock_fix_lot """
|
||||
|
||||
for quant in self:
|
||||
if (
|
||||
not quant.inventory_quantity
|
||||
or not quant.company_id.force_lot_validation_on_inventory_adjustment
|
||||
or (
|
||||
quant.env.context.get("skip_product_lot_check") and not quant.inventory_quantity)
|
||||
):
|
||||
return
|
||||
if quant.tracking in ("lot", "serial") and not quant.lot_id:
|
||||
raise ValidationError(
|
||||
_(
|
||||
"You need to supply a Lot/Serial number for product: %s",
|
||||
quant.product_id.display_name,
|
||||
)
|
||||
)
|
||||
|
||||
@api.model
|
||||
def user_has_groups(self, groups):
|
||||
# we need to override method as we need different access group
|
||||
# to be allowed to validate inventory
|
||||
if (
|
||||
self.env.context.get("validate_inventory")
|
||||
and groups == "stock.group_stock_manager"
|
||||
):
|
||||
groups = "ventor_base.merp_user_validate_inventory_adjustment"
|
||||
res = super(StockQuant, self).user_has_groups(groups)
|
||||
return res
|
||||
|
||||
def _apply_inventory(self):
|
||||
res = super(StockQuant, self.with_context(validate_inventory=True))._apply_inventory()
|
||||
return res
|
||||
|
|
@ -0,0 +1,45 @@
|
|||
# Copyright 2020 VentorTech OU
|
||||
# License LGPL-3.0 or later (https://www.gnu.org/licenses/lgpl-3.0).
|
||||
|
||||
from odoo import api, models, fields
|
||||
|
||||
|
||||
class StockWarehouse(models.Model):
|
||||
_inherit = 'stock.warehouse'
|
||||
|
||||
is_internal = fields.Boolean(
|
||||
string='Is Internal Warehouse',
|
||||
)
|
||||
|
||||
@api.model_create_multi
|
||||
def create(self, vals_list):
|
||||
res = super(StockWarehouse, self).create(vals_list)
|
||||
if res:
|
||||
res.update_users_calculated_warehouse()
|
||||
return res
|
||||
|
||||
def update_users_calculated_warehouse(self):
|
||||
for warehouse in self:
|
||||
users = self.env['res.users'].with_context(active_test=False).search([
|
||||
('share', '=', False)])
|
||||
wh_ids = self.env['stock.warehouse'].with_context(active_test=False).search([
|
||||
('id', '!=', warehouse.id)]).ids
|
||||
wh_ids.sort()
|
||||
modified_user_ids = []
|
||||
for user in users.with_context(active_test=False):
|
||||
# Because of specifics on how Odoo working with companies on first start, we have to filter by company
|
||||
user_wh_ids = user.allowed_warehouse_ids.filtered(
|
||||
lambda wh: wh.company_id.id == warehouse.env.company.id
|
||||
).ids
|
||||
user_wh_ids.sort()
|
||||
if wh_ids == user_wh_ids:
|
||||
user.allowed_warehouse_ids = [(4, warehouse.id, 0)]
|
||||
modified_user_ids.append(user.id)
|
||||
|
||||
# Because access rights are using this field, we need to invalidate cache
|
||||
if modified_user_ids:
|
||||
self.env['res.users'].browse(modified_user_ids).invalidate_recordset(
|
||||
[
|
||||
'allowed_warehouse_ids',
|
||||
]
|
||||
)
|
||||
|
|
@ -0,0 +1,268 @@
|
|||
# Copyright 2022 VentorTech OU
|
||||
# License LGPL-3.0 or later (https://www.gnu.org/licenses/lgpl-3.0).
|
||||
|
||||
from odoo import _, api, models, fields
|
||||
|
||||
|
||||
class VentorOptionSetting(models.Model):
|
||||
_name = 'ventor.option.setting'
|
||||
_description = 'Ventor Option Setting'
|
||||
|
||||
name = fields.Char(required=True, index=True)
|
||||
action_type = fields.Selection(
|
||||
[
|
||||
('warehouse_opration', 'Warehouse Opration'),
|
||||
('package_management', 'Package Management'),
|
||||
('batch_picking', 'Batch Picking'),
|
||||
('wave_picking', 'Wave Picking'),
|
||||
('cluster_picking', 'Cluster Picking'),
|
||||
('internal_transfers', 'Internal Transfers'),
|
||||
('putaway', 'Putaway'),
|
||||
('instant_inventory', 'Instant Inventory'),
|
||||
('inventory_adjustments', 'Inventory Adjustments'),
|
||||
('quick_info', 'Quick Info'),
|
||||
('scrap_management', 'Scrap Management'),
|
||||
('create_so', 'Create SO'),
|
||||
('create_po', 'Create PO'),
|
||||
], required=True
|
||||
)
|
||||
description = fields.Text()
|
||||
technical_name = fields.Char(required=True)
|
||||
value = fields.Many2one(
|
||||
'ventor.setting.value',
|
||||
string='Value',
|
||||
required=True,
|
||||
domain="[('id', 'in', settings_dependency)]",
|
||||
)
|
||||
value_type = fields.Selection(
|
||||
[
|
||||
('bool', 'Boolean'),
|
||||
('select', 'Selection'),
|
||||
]
|
||||
)
|
||||
settings_dependency = fields.Many2many(
|
||||
comodel_name='ventor.setting.value'
|
||||
)
|
||||
|
||||
@api.onchange('value')
|
||||
def _onchange_value(self):
|
||||
if self.technical_name in ('confirm_source_location', 'change_source_location'):
|
||||
return self._set_change_source_location()
|
||||
elif self.technical_name in ('add_boxes_before_cluster', 'multiple_boxes_for_one_transfer'):
|
||||
return self._set_add_boxes_before_cluster()
|
||||
elif self.technical_name in (
|
||||
'manage_packages',
|
||||
'confirm_source_package',
|
||||
'scan_destination_package',
|
||||
'allow_creating_new_packages',
|
||||
'pack_all_items',
|
||||
'allow_validate_less',
|
||||
):
|
||||
return self.set_related_package_fields(self._get_group_settings_value('stock.group_tracking_lot'))
|
||||
elif self.technical_name in ('manage_product_owner'):
|
||||
self.set_manage_product_owner_fields(self._get_group_settings_value('stock.group_tracking_owner'))
|
||||
elif self.technical_name in ('apply_default_lots'):
|
||||
self.set_apply_default_lots_fields(self._get_group_settings_value('stock.group_production_lot'))
|
||||
elif self.technical_name in ('move_multiple_products', 'hold_destination_location'):
|
||||
return self.set_hold_destination_location_fields()
|
||||
elif self.technical_name in ('use_reusable_packages'):
|
||||
return self.set_reusable_packages_related_fields(self._get_group_settings_value('stock.group_tracking_lot'))
|
||||
elif self.technical_name in ('confirm_destination_location'):
|
||||
self._set_confirm_destination_location_cluster_picking_fields()
|
||||
|
||||
def _get_group_settings_value(self, key):
|
||||
internal_user_groups = self.env.ref('base.group_user').implied_ids
|
||||
group = self.env.ref(key)
|
||||
return group in internal_user_groups
|
||||
|
||||
def _get_warning(self, message):
|
||||
return {'warning': {
|
||||
'title': _('Another Settings were changed automatically!'),
|
||||
'message': message,
|
||||
}}
|
||||
|
||||
def get_setting_field(self, technical_name):
|
||||
if not isinstance(technical_name, list):
|
||||
technical_name = [technical_name]
|
||||
return self.env['ventor.option.setting'].search(
|
||||
[
|
||||
('action_type', '=', self.action_type),
|
||||
('technical_name', 'in', technical_name),
|
||||
]
|
||||
)
|
||||
|
||||
def get_general_settings(self):
|
||||
action_types = [
|
||||
'package_management',
|
||||
'batch_picking',
|
||||
'wave_picking',
|
||||
'cluster_picking',
|
||||
'internal_transfers',
|
||||
'putaway',
|
||||
'instant_inventory',
|
||||
'inventory_adjustments',
|
||||
'quick_info',
|
||||
'scrap_management',
|
||||
'create_so',
|
||||
'create_po',
|
||||
]
|
||||
ventor_option_settings = self.env['ventor.option.setting'].search([])
|
||||
|
||||
settings = {}
|
||||
for action_type in action_types:
|
||||
settings[action_type] = {
|
||||
set.technical_name: self.get_normalized_value(set.value.setting_value)
|
||||
for set in ventor_option_settings.filtered(lambda r: r.action_type == action_type)
|
||||
}
|
||||
return settings
|
||||
|
||||
def set_allow_validate_less(self):
|
||||
if self.technical_name == 'allow_validate_less':
|
||||
pack_all_items = self.get_setting_field('pack_all_items')
|
||||
if pack_all_items.value == self.env.ref('ventor_base.bool_true'):
|
||||
self.value = self.env.ref('ventor_base.bool_false')
|
||||
elif self.technical_name == 'pack_all_items':
|
||||
allow_validate_less = self.get_setting_field('allow_validate_less')
|
||||
if allow_validate_less.value == self.env.ref('ventor_base.bool_true'):
|
||||
allow_validate_less.value = self.env.ref('ventor_base.bool_false')
|
||||
return self._get_warning(_(
|
||||
'Because you changed "Force Pack" to True, '
|
||||
'automatically the following settings were also changed: '
|
||||
'\n- "Validate uncompleted orders" was changed to False'
|
||||
))
|
||||
|
||||
def set_apply_default_lots_fields(self, group_stock_production_lot):
|
||||
if self.env.context.get('disable_apply_default_lots'):
|
||||
self.value = self.env.ref('ventor_base.bool_false')
|
||||
elif not group_stock_production_lot and self.value == self.env.ref('ventor_base.bool_true'):
|
||||
self.value = self.env.ref('ventor_base.bool_false')
|
||||
|
||||
def _set_add_boxes_before_cluster(self):
|
||||
if self.technical_name == 'add_boxes_before_cluster' and self.value == self.env.ref('ventor_base.bool_true'):
|
||||
multiple_boxes_for_one_transfer = self.get_setting_field('multiple_boxes_for_one_transfer')
|
||||
use_reusable_packages = self.get_setting_field('use_reusable_packages')
|
||||
if multiple_boxes_for_one_transfer.value == self.env.ref('ventor_base.bool_true'):
|
||||
multiple_boxes_for_one_transfer.value = self.env.ref('ventor_base.bool_false')
|
||||
return self._get_warning(_(
|
||||
'Because you changed "Add boxes before cluster" to True, '
|
||||
'automatically the following settings were also changed: '
|
||||
'\n- "Multiple boxes for one transfer" was changed to False'
|
||||
))
|
||||
if use_reusable_packages.value == self.env.ref('ventor_base.bool_true'):
|
||||
self.value = self.env.ref('ventor_base.bool_false')
|
||||
elif self.technical_name == 'multiple_boxes_for_one_transfer' and self.value == self.env.ref('ventor_base.bool_true'):
|
||||
add_boxes_before_cluster = self.get_setting_field('add_boxes_before_cluster')
|
||||
if add_boxes_before_cluster.value == self.env.ref('ventor_base.bool_true'):
|
||||
self.value = self.env.ref('ventor_base.bool_false')
|
||||
|
||||
def _set_change_source_location(self):
|
||||
if self.technical_name == 'confirm_source_location' and self.value == self.env.ref('ventor_base.bool_false'):
|
||||
change_source_location = self.get_setting_field('change_source_location')
|
||||
change_source_location.value = self.env.ref('ventor_base.bool_false')
|
||||
return self._get_warning(_(
|
||||
'Because you changed "Confirm source location" to False, '
|
||||
'automatically the following settings were also changed: '
|
||||
'\n- "Change source location" was changed to False'
|
||||
))
|
||||
elif self.technical_name == 'change_source_location' and self.value == self.env.ref('ventor_base.bool_true'):
|
||||
confirm_source_location = self.get_setting_field('confirm_source_location')
|
||||
if confirm_source_location.value == self.env.ref('ventor_base.bool_false'):
|
||||
self.value = self.env.ref('ventor_base.bool_false')
|
||||
|
||||
def _set_confirm_destination_location_cluster_picking_fields(self):
|
||||
if self.value == self.env.ref('ventor_base.bool_true') and self.action_type == 'cluster_picking':
|
||||
use_reusable_packages = self.get_setting_field('use_reusable_packages')
|
||||
if use_reusable_packages.value == self.env.ref('ventor_base.bool_true'):
|
||||
self.value = self.env.ref('ventor_base.bool_false')
|
||||
|
||||
def set_hold_destination_location_fields(self):
|
||||
if self.technical_name == 'move_multiple_products' and self.value == self.env.ref('ventor_base.bool_true'):
|
||||
hold_destination_location = self.get_setting_field('hold_destination_location')
|
||||
if hold_destination_location.value == self.env.ref('ventor_base.bool_true'):
|
||||
hold_destination_location.value = self.env.ref('ventor_base.bool_false')
|
||||
return self._get_warning(_(
|
||||
'Because you changed "Move multiple items" to True, '
|
||||
'automatically the following settings were also changed: '
|
||||
'\n- "Hold destination location" was changed to False'
|
||||
))
|
||||
elif self.technical_name == 'hold_destination_location' and self.value == self.env.ref('ventor_base.bool_true'):
|
||||
move_multiple_products = self.get_setting_field('move_multiple_products')
|
||||
if move_multiple_products.value == self.env.ref('ventor_base.bool_true'):
|
||||
self.value = self.env.ref('ventor_base.bool_false')
|
||||
|
||||
def set_manage_product_owner_fields(self, group_stock_tracking_owner):
|
||||
if not group_stock_tracking_owner and self.value == self.env.ref('ventor_base.bool_true'):
|
||||
self.value = self.env.ref('ventor_base.bool_false')
|
||||
|
||||
def set_related_package_fields(self, group_stock_tracking_lot):
|
||||
if not group_stock_tracking_lot:
|
||||
self.value = self.env.ref('ventor_base.bool_false')
|
||||
elif group_stock_tracking_lot:
|
||||
manage_packages = self.get_setting_field('manage_packages')
|
||||
if self.value.setting_value == 'False' and self.technical_name == 'manage_packages':
|
||||
relate_manage_packages_fields = self.get_setting_field(
|
||||
[
|
||||
'confirm_source_package',
|
||||
'scan_destination_package',
|
||||
]
|
||||
)
|
||||
relate_manage_packages_fields.value = self.env.ref('ventor_base.bool_false')
|
||||
if self.action_type in ('batch_picking', 'cluster_picking'):
|
||||
return self._get_warning(_(
|
||||
'Because you changed "Show packages fields" to False, '
|
||||
'automatically the following settings were also changed: '
|
||||
'\n- "Confirm source package" was changed to False'
|
||||
'\n- "Confirm destination package" was changed to False'
|
||||
))
|
||||
if self.technical_name != 'manage_packages' and manage_packages.value == self.env.ref('ventor_base.bool_false'):
|
||||
self.value = self.env.ref('ventor_base.bool_false')
|
||||
if self.value.setting_value == 'True' and self.technical_name in ('pack_all_items', 'allow_validate_less'):
|
||||
return self.set_allow_validate_less()
|
||||
if self.technical_name == 'scan_destination_package' and self.value == self.env.ref('ventor_base.bool_false'):
|
||||
use_reusable_packages = self.get_setting_field('use_reusable_packages')
|
||||
if use_reusable_packages.value == self.env.ref('ventor_base.bool_true'):
|
||||
self.value = self.env.ref('ventor_base.bool_true')
|
||||
|
||||
def set_reusable_packages_related_fields(self, group_stock_tracking_lot):
|
||||
if not group_stock_tracking_lot:
|
||||
self.value = self.env.ref('ventor_base.bool_false')
|
||||
elif self.value == self.env.ref('ventor_base.bool_true'):
|
||||
related_settings_for_disabling = self.get_setting_field(
|
||||
[
|
||||
'confirm_destination_location',
|
||||
'add_boxes_before_cluster',
|
||||
]
|
||||
)
|
||||
related_settings_for_enabling = self.get_setting_field('scan_destination_package')
|
||||
if related_settings_for_disabling:
|
||||
related_settings_for_disabling.value = self.env.ref('ventor_base.bool_false')
|
||||
if related_settings_for_enabling:
|
||||
related_settings_for_enabling.value = self.env.ref('ventor_base.bool_true')
|
||||
return self._get_warning(_(
|
||||
'Because you changed "Use reusable packages" to True, '
|
||||
'automatically the following settings were also changed: '
|
||||
'\n- "Confirm destination location" was changed to False'
|
||||
'\n- "Add boxes before cluster" was changed to False'
|
||||
'\n- "Confirm destination package" was changed to True'
|
||||
))
|
||||
|
||||
def get_normalized_value(self, setting_value):
|
||||
normalized_settings = {
|
||||
'True': 'true',
|
||||
'False': 'false',
|
||||
'Always Create Backorder': 'always_create_backorder',
|
||||
'Never Create Backorder': 'never_create_backorder',
|
||||
'Always Split the Line': 'always_split_line',
|
||||
'Always Move Less Items': 'always_move_less_items',
|
||||
'Ask Me Every Time': 'ask_me_every_time',
|
||||
}
|
||||
return normalized_settings.get(setting_value)
|
||||
|
||||
|
||||
class VentorSettingValue(models.Model):
|
||||
_name = 'ventor.setting.value'
|
||||
_description = 'Ventor Setting Value'
|
||||
_rec_name = 'setting_value'
|
||||
|
||||
setting_type = fields.Char()
|
||||
setting_value = fields.Char()
|
||||
|
|
@ -0,0 +1,12 @@
|
|||
<?xml version="1.0" encoding="utf-8"?>
|
||||
<odoo>
|
||||
|
||||
<template id="report_picking" inherit_id="stock.report_picking">
|
||||
<xpath expr="//div[hasclass('justify-content-end')]//div[hasclass('col-4')]" position="before">
|
||||
<div t-if="o.sale_id.name and o.company_id.barcode_on_picking_document" class="col-8" name="left_box">
|
||||
<div t-field="o.sale_id.name" t-options="{'widget': 'barcode', 'humanreadable': 1, 'width': 600, 'height': 100, 'img_style': 'width:230px;height:50px;'}"/>
|
||||
</div>
|
||||
</xpath>
|
||||
</template>
|
||||
|
||||
</odoo>
|
||||
462
odoo-bringout-ventor-ventor_base/ventor_base/security/groups.xml
Normal file
|
|
@ -0,0 +1,462 @@
|
|||
<?xml version="1.0" encoding="utf-8"?>
|
||||
|
||||
<odoo>
|
||||
|
||||
<!-- Ventor Menu Management -->
|
||||
<record model="ir.module.category" id="module_category_merp_menu_application">
|
||||
<field name="name">Ventor Menu Management</field>
|
||||
<field name="sequence">0</field>
|
||||
<field name="visible" eval="0"/>
|
||||
</record>
|
||||
|
||||
<record id="merp_menu_warehouse_operations" model="res.groups">
|
||||
<field name="name">Warehouse Operations Menu</field>
|
||||
<field name="category_id" ref="module_category_merp_menu_application"/>
|
||||
<field name="users" eval="[(4, ref('base.user_root'))]"/>
|
||||
</record>
|
||||
|
||||
<record id="merp_menu_inventory_adjustments" model="res.groups">
|
||||
<field name="name">Inventory Adjustments Menu</field>
|
||||
<field name="category_id" ref="module_category_merp_menu_application"/>
|
||||
<field name="users" eval="[(4, ref('base.user_root'))]"/>
|
||||
</record>
|
||||
|
||||
<record id="merp_menu_picking_wave" model="res.groups">
|
||||
<field name="name">Batch Picking Menu</field>
|
||||
<field name="category_id" ref="module_category_merp_menu_application"/>
|
||||
<field name="users" eval="[(4, ref('base.user_root'))]"/>
|
||||
</record>
|
||||
|
||||
<record id="merp_menu_instant_inventory" model="res.groups">
|
||||
<field name="name">Instant Inventory Menu</field>
|
||||
<field name="category_id" ref="module_category_merp_menu_application"/>
|
||||
<field name="users" eval="[(4, ref('base.user_root'))]"/>
|
||||
</record>
|
||||
|
||||
<record id="merp_menu_instant_move" model="res.groups">
|
||||
<field name="name">Internal Transfers Menu</field>
|
||||
<field name="category_id" ref="module_category_merp_menu_application"/>
|
||||
<field name="users" eval="[(4, ref('base.user_root'))]"/>
|
||||
</record>
|
||||
|
||||
<record id="merp_menu_manufacturing" model="res.groups">
|
||||
<field name="name">MO and WO management Menu</field>
|
||||
<field name="category_id" ref="module_category_merp_menu_application"/>
|
||||
<field name="users" eval="[(4, ref('base.user_root'))]"/>
|
||||
</record>
|
||||
|
||||
<record id="merp_menu_create_purchase_order" model="res.groups">
|
||||
<field name="name">Create Purchase Order Menu</field>
|
||||
<field name="category_id" ref="module_category_merp_menu_application"/>
|
||||
<field name="users" eval="[(4, ref('base.user_root'))]"/>
|
||||
</record>
|
||||
|
||||
<record id="merp_menu_create_sales_order" model="res.groups">
|
||||
<field name="name">Create Sales Order Menu</field>
|
||||
<field name="category_id" ref="module_category_merp_menu_application"/>
|
||||
<field name="users" eval="[(4, ref('base.user_root'))]"/>
|
||||
</record>
|
||||
|
||||
<record id="merp_menu_info" model="res.groups">
|
||||
<field name="name">Quick Info Menu</field>
|
||||
<field name="category_id" ref="module_category_merp_menu_application"/>
|
||||
<field name="users" eval="[(4, ref('base.user_root'))]"/>
|
||||
</record>
|
||||
|
||||
<record id="merp_package_management" model="res.groups">
|
||||
<field name="name">Package Management Menu</field>
|
||||
<field name="category_id" ref="module_category_merp_menu_application"/>
|
||||
<field name="users" eval="[(4, ref('base.user_root'))]"/>
|
||||
</record>
|
||||
|
||||
<record id="merp_external_management" model="res.groups">
|
||||
<field name="name">External Transfers Menu</field>
|
||||
<field name="category_id" ref="module_category_merp_menu_application"/>
|
||||
<field name="users" eval="[(4, ref('base.user_root'))]"/>
|
||||
</record>
|
||||
|
||||
<record id="merp_putaway" model="res.groups">
|
||||
<field name="name">Putaway Menu</field>
|
||||
<field name="category_id" ref="module_category_merp_menu_application"/>
|
||||
<field name="users" eval="[(4, ref('base.user_root'))]"/>
|
||||
</record>
|
||||
|
||||
<record id="merp_scrap_management" model="res.groups">
|
||||
<field name="name">Scrap Management Menu</field>
|
||||
<field name="category_id" ref="module_category_merp_menu_application"/>
|
||||
<field name="users" eval="[(4, ref('base.user_root'))]"/>
|
||||
</record>
|
||||
|
||||
<record id="merp_cluster_picking_menu" model="res.groups">
|
||||
<field name="name">Cluster Picking Menu</field>
|
||||
<field name="category_id" ref="module_category_merp_menu_application"/>
|
||||
<field name="users" eval="[(4, ref('base.user_root'))]"/>
|
||||
</record>
|
||||
|
||||
<record id="merp_rfid_menu" model="res.groups">
|
||||
<field name="name">RFID Menu</field>
|
||||
<field name="category_id" ref="module_category_merp_menu_application"/>
|
||||
<field name="users" eval="[(4, ref('base.user_root'))]"/>
|
||||
</record>
|
||||
|
||||
<record id="merp_order_recheck_menu" model="res.groups">
|
||||
<field name="name">Order Recheck Menu</field>
|
||||
<field name="category_id" ref="module_category_merp_menu_application"/>
|
||||
<field name="users" eval="[(4, ref('base.user_root'))]"/>
|
||||
</record>
|
||||
|
||||
<record id="merp_wave_picking_menu" model="res.groups">
|
||||
<field name="name">Wave Picking Menu</field>
|
||||
<field name="category_id" ref="module_category_merp_menu_application"/>
|
||||
<field name="users" eval="[(4, ref('base.user_root'))]"/>
|
||||
<field name="comment">Enables the display of the "Wave Picking Menu" in Ventor.
|
||||
To enable this setting, the "Use wave pickings" group must be enabled</field>
|
||||
</record>
|
||||
|
||||
<!-- Ventor Access Rights -->
|
||||
<record model="ir.module.category" id="module_category_merp_access_application">
|
||||
<field name="name">Ventor Access Rights</field>
|
||||
<field name="sequence">1</field>
|
||||
<field name="visible" eval="0"/>
|
||||
</record>
|
||||
|
||||
<record id="merp_menu_allow_update_product_on_hand" model="res.groups">
|
||||
<field name="name">Quick Info: Update product on hand</field>
|
||||
<field name="category_id" ref="module_category_merp_access_application"/>
|
||||
<field name="implied_ids" eval="[(6, 0, [ref('merp_menu_info')])]"/>
|
||||
<field name="users" eval="[(4, ref('base.user_root'))]"/>
|
||||
</record>
|
||||
|
||||
<record id="merp_menu_allow_changing_settings" model="res.groups">
|
||||
<field name="name">Manage Local User Device Settings</field>
|
||||
<field name="comment">Enable to allow to define local Ventor settings
|
||||
from Ventor application interface.</field>
|
||||
<field name="category_id" ref="module_category_merp_access_application"/>
|
||||
<field name="users" eval="[(4, ref('base.user_root'))]"/>
|
||||
</record>
|
||||
|
||||
<record id="merp_menu_use_local_user_device_settings" model="res.groups">
|
||||
<field name="name">Use Local User Device Settings</field>
|
||||
<field name="comment">If it's checked, the manual settings (defined on device by this user)
|
||||
will be used instead Global Ventor Settings in Odoo.
|
||||
If it's unchecked the user will not be able to modify settings on the
|
||||
device manually. Global Ventor Settings will be used instead.</field>
|
||||
<field name="category_id" ref="module_category_merp_access_application"/>
|
||||
<field name="users" eval="[(4, ref('base.user_root'))]"/>
|
||||
</record>
|
||||
|
||||
<record id="merp_debug" model="res.groups">
|
||||
<field name="name">Debug: Technical Features</field>
|
||||
<field name="category_id" ref="module_category_merp_access_application"/>
|
||||
<field name="users" eval="[(4, ref('base.user_root'))]"/>
|
||||
</record>
|
||||
|
||||
<record id="merp_picking_wave_allow_done" model="res.groups">
|
||||
<field name="name">Batch Picking: Close batch picking</field>
|
||||
<field name="category_id" ref="module_category_merp_access_application"/>
|
||||
<field name="users" eval="[(4, ref('base.user_root'))]"/>
|
||||
</record>
|
||||
|
||||
<record id="merp_inventory_allow_ready_state" model="res.groups">
|
||||
<field name="name">Inventory Adjustments: Waiting for Validation</field>
|
||||
<field name="category_id" ref="module_category_merp_access_application"/>
|
||||
<field name="implied_ids" eval="[(6, 0, [ref('merp_menu_inventory_adjustments')])]"/>
|
||||
<field name="users" eval="[(4, ref('base.user_root'))]"/>
|
||||
</record>
|
||||
|
||||
<record id="merp_allow_applying_all_qty_of_product" model="res.groups">
|
||||
<field name="name">Warehouse Operations: Allow applying all qty of product</field>
|
||||
<field name="category_id" ref="module_category_merp_access_application"/>
|
||||
<field name="users" eval="[(4, ref('base.user_root'))]"/>
|
||||
</record>
|
||||
|
||||
<record id="merp_user_validate_inventory_adjustment" model="res.groups">
|
||||
<field name="name">Validate Inventory</field>
|
||||
<field name="category_id" ref="module_category_merp_access_application"/>
|
||||
<field name="users" eval="[(4, ref('base.user_root'))]"/>
|
||||
<field name="comment">The group allows Inventory/User to validate inventory</field>
|
||||
</record>
|
||||
|
||||
<record id="merp_manage_ventor_configuration_app" model="res.groups">
|
||||
<field name="name">Manage Ventor Configuration app</field>
|
||||
<field name="comment">Enable to see new root menu "Ventor Configuration"
|
||||
that will allow to define global Ventor settings
|
||||
from the Odoo interface.</field>
|
||||
<field name="category_id" ref="module_category_merp_access_application"/>
|
||||
<field name="users" eval="[(4, ref('base.user_root'))]"/>
|
||||
</record>
|
||||
|
||||
<record id="merp_allow_pallet_transfer" model="res.groups">
|
||||
<field name="name">Allow Pallet Transfers</field>
|
||||
<field name="category_id" ref="module_category_merp_access_application"/>
|
||||
<field name="users" eval="[(4, ref('base.user_root'))]"/>
|
||||
<field name="comment">Allow Pallet Transfer from one location to another one</field>
|
||||
</record>
|
||||
|
||||
<record id="stock.group_stock_manager" model="res.groups">
|
||||
<field name="implied_ids" eval="[
|
||||
(4, ref('ventor_base.merp_user_validate_inventory_adjustment')),
|
||||
(4, ref('ventor_base.merp_allow_pallet_transfer'))]"/>
|
||||
</record>
|
||||
|
||||
<record id="stock.group_stock_manager" model="res.groups">
|
||||
<field name="implied_ids" eval="[(4, ref('ventor_base.merp_user_validate_inventory_adjustment'))]"/>
|
||||
</record>
|
||||
|
||||
<!-- Ventor Roles -->
|
||||
<record model="ir.module.category" id="module_category_ventor_roles">
|
||||
<field name="name">Ventor Roles</field>
|
||||
<field name="sequence">1</field>
|
||||
</record>
|
||||
|
||||
<data noupdate="1">
|
||||
|
||||
<record id="ventor_role_wh_worker" model="res.groups">
|
||||
<field name="name">Warehouse worker</field>
|
||||
<field name="category_id" ref="module_category_ventor_roles"/>
|
||||
<field name="implied_ids"
|
||||
eval="[(4, ref('merp_menu_warehouse_operations')),
|
||||
(4, ref('merp_menu_picking_wave')),
|
||||
(4, ref('merp_cluster_picking_menu')),
|
||||
(4, ref('merp_rfid_menu')),
|
||||
(4, ref('merp_order_recheck_menu')),
|
||||
(4, ref('merp_wave_picking_menu'))]"/>
|
||||
</record>
|
||||
|
||||
<record id="ventor_role_wh_manager" model="res.groups">
|
||||
<field name="name">Warehouse manager</field>
|
||||
<field name="category_id" ref="module_category_ventor_roles"/>
|
||||
<field name="implied_ids"
|
||||
eval="[(4, ref('ventor_role_wh_worker')),
|
||||
(4, ref('merp_menu_inventory_adjustments')),
|
||||
(4, ref('merp_menu_info')),
|
||||
(4, ref('merp_menu_instant_inventory')),
|
||||
(4, ref('merp_menu_instant_move')),
|
||||
(4, ref('merp_package_management')),
|
||||
(4, ref('merp_external_management')),
|
||||
(4, ref('merp_putaway')),
|
||||
(4, ref('merp_menu_manufacturing')),
|
||||
(4, ref('merp_scrap_management')),
|
||||
(4, ref('merp_menu_allow_changing_settings'))]"/>
|
||||
</record>
|
||||
|
||||
<record id="ventor_role_admin" model="res.groups">
|
||||
<field name="name">Administrator</field>
|
||||
<field name="category_id" ref="module_category_ventor_roles"/>
|
||||
<field name="implied_ids"
|
||||
eval="[(4, ref('ventor_role_wh_manager')),
|
||||
(4, ref('merp_menu_create_sales_order')),
|
||||
(4, ref('merp_menu_create_purchase_order')),
|
||||
(4, ref('merp_menu_allow_update_product_on_hand')),
|
||||
(4, ref('merp_debug')),
|
||||
(4, ref('merp_picking_wave_allow_done')),
|
||||
(4, ref('merp_manage_ventor_configuration_app'))]"/>
|
||||
<field name="users" eval="[(4, ref('base.user_root')), (4, ref('base.user_admin'))]"/>
|
||||
</record>
|
||||
</data>
|
||||
|
||||
<!-- Multi Warehouses User Rules Section -->
|
||||
<!-- Multi Warehouses: Location -->
|
||||
<record id="stock_location_rule_stock_user" model="ir.rule">
|
||||
<field name="name">See locations from allowed warehouses</field>
|
||||
<field name="model_id" ref="stock.model_stock_location"/>
|
||||
<field name="groups" eval="[(4, ref('stock.group_stock_user'))]"/>
|
||||
<field name="domain_force">['|', ('warehouse_id','=',False), ('warehouse_id','in',[wh.id for wh in user.allowed_warehouse_ids])]</field>
|
||||
</record>
|
||||
|
||||
<record id="stock_location_rule_stock_manager" model="ir.rule">
|
||||
<field name="name">See All Location</field>
|
||||
<field name="model_id" ref="stock.model_stock_location"/>
|
||||
<field name="groups" eval="[(4, ref('stock.group_stock_manager'))]"/>
|
||||
<field name="domain_force">[(1,'=',1)]</field>
|
||||
</record>
|
||||
|
||||
<!-- Multi Warehouses: Picking Type -->
|
||||
<record id="stock_picking_type_rule_stock_user" model="ir.rule">
|
||||
<field name="name">See Operation Types from allowed warehouses</field>
|
||||
<field name="model_id" ref="ventor_base.model_stock_picking_type"/>
|
||||
<field name="groups" eval="[(4, ref('stock.group_stock_user'))]"/>
|
||||
<field name="domain_force">['|', ('warehouse_id','=',False), ('warehouse_id','in',[wh.id for wh in user.allowed_warehouse_ids])]</field>
|
||||
</record>
|
||||
|
||||
<record id="stock_picking_type_rule_stock_manager" model="ir.rule">
|
||||
<field name="name">See all Operation Types</field>
|
||||
<field name="model_id" ref="stock.model_stock_picking_type"/>
|
||||
<field name="groups" eval="[(4, ref('stock.group_stock_manager'))]"/>
|
||||
<field name="domain_force">[(1,'=',1)]</field>
|
||||
</record>
|
||||
|
||||
<!-- Multi Warehouses: Scrap Orders -->
|
||||
<record model="ir.rule" id="stock_scrap_rule_stock_user">
|
||||
<field name="name">See Scrap Orders from allowed warehouses</field>
|
||||
<field name="model_id" ref="stock.model_stock_scrap"/>
|
||||
<field name="groups" eval="[(4, ref('stock.group_stock_user'))]"/>
|
||||
<field name="domain_force">['|', ('location_id.warehouse_id','=',False), ('location_id.warehouse_id','in',[wh.id for wh in user.allowed_warehouse_ids])]</field>
|
||||
</record>
|
||||
|
||||
<record model="ir.rule" id="stock_scrap_rule_stock_manager">
|
||||
<field name="name">See All Scrap Orders</field>
|
||||
<field name="model_id" ref="stock.model_stock_scrap"/>
|
||||
<field name="groups" eval="[(4, ref('stock.group_stock_manager'))]"/>
|
||||
<field name="domain_force">[(1,'=',1)]</field>
|
||||
</record>
|
||||
|
||||
<!-- Multi Warehouses: Reordering Rules -->
|
||||
<record model="ir.rule" id="stock_warehouse_orderpoint_rule_stock_user">
|
||||
<field name="name">See Reordering Rules from allowed warehouses</field>
|
||||
<field name="model_id" ref="stock.model_stock_warehouse_orderpoint"/>
|
||||
<field name="groups" eval="[(4, ref('stock.group_stock_user'))]"/>
|
||||
<field name="domain_force">['|', ('location_id.warehouse_id','=',False), ('location_id.warehouse_id','in',[wh.id for wh in user.allowed_warehouse_ids])]</field>
|
||||
</record>
|
||||
|
||||
<record model="ir.rule" id="stock_warehouse_orderpoint_rule_stock_manager">
|
||||
<field name="name">See All Reordering Rules</field>
|
||||
<field name="model_id" ref="stock.model_stock_warehouse_orderpoint"/>
|
||||
<field name="groups" eval="[(4, ref('stock.group_stock_manager'))]"/>
|
||||
<field name="domain_force">[(1,'=',1)]</field>
|
||||
</record>
|
||||
|
||||
<!-- Multi Warehouses: Quants -->
|
||||
<record model="ir.rule" id="stock_quant_rule_stock_user">
|
||||
<field name="name">See Quants from allowed warehouses</field>
|
||||
<field name="model_id" ref="stock.model_stock_quant"/>
|
||||
<field name="groups" eval="[(4, ref('stock.group_stock_user'))]"/>
|
||||
<field name="domain_force">['|', ('location_id.warehouse_id','=',False), ('location_id.warehouse_id','in',[wh.id for wh in user.allowed_warehouse_ids])]</field>
|
||||
</record>
|
||||
|
||||
<record model="ir.rule" id="stock_quant_rule_stock_manager">
|
||||
<field name="name">See all Stock Quants</field>
|
||||
<field name="model_id" ref="stock.model_stock_quant"/>
|
||||
<field name="groups" eval="[(4, ref('stock.group_stock_manager'))]"/>
|
||||
<field name="domain_force">[(1,'=',1)]</field>
|
||||
</record>
|
||||
|
||||
<!-- Multi Warehouses: Warehouses -->
|
||||
<record model="ir.rule" id="stock_warehouse_rule_stock_user">
|
||||
<field name="name">See Warehouses from allowed warehouses</field>
|
||||
<field name="model_id" ref="stock.model_stock_warehouse"/>
|
||||
<field name="groups" eval="[(4, ref('stock.group_stock_user'))]"/>
|
||||
<field name="domain_force">['|', ('id','=',False), ('id','in',[wh.id for wh in user.allowed_warehouse_ids])]</field>
|
||||
</record>
|
||||
|
||||
<record model="ir.rule" id="stock_warehouse_rule_stock_manager">
|
||||
<field name="name">See all Warehouses</field>
|
||||
<field name="model_id" ref="stock.model_stock_warehouse"/>
|
||||
<field name="groups" eval="[(4, ref('stock.group_stock_manager'))]"/>
|
||||
<field name="domain_force">[(1,'=',1)]</field>
|
||||
</record>
|
||||
|
||||
<!-- Multi Warehouses: Stock Pickings -->
|
||||
<record model="ir.rule" id="stock_picking_rule_stock_user">
|
||||
<field name="name">See Stock Pickings from allowed warehouses</field>
|
||||
<field name="model_id" ref="stock.model_stock_picking"/>
|
||||
<field name="groups" eval="[(4, ref('stock.group_stock_user'))]"/>
|
||||
<field name="domain_force">[
|
||||
'&',
|
||||
'|','|',
|
||||
('location_id', '=', False),
|
||||
('location_id.warehouse_id', '=', False),
|
||||
('location_id.warehouse_id','in',[wh.id for wh in user.allowed_warehouse_ids]),
|
||||
'|','|',
|
||||
('location_dest_id', '=', False),
|
||||
('location_dest_id.warehouse_id', '=', False),
|
||||
('location_dest_id.warehouse_id','in',[wh.id for wh in user.allowed_warehouse_ids]),
|
||||
]</field>
|
||||
</record>
|
||||
|
||||
<record model="ir.rule" id="stock_picking_rule_stock_manager">
|
||||
<field name="name">See all Stock Pickings</field>
|
||||
<field name="model_id" ref="stock.model_stock_picking"/>
|
||||
<field name="groups" eval="[(4, ref('stock.group_stock_manager'))]"/>
|
||||
<field name="domain_force">[(1,'=',1)]</field>
|
||||
</record>
|
||||
|
||||
<!-- See Picking Batches from allowed Warehouses -->
|
||||
<record model="ir.rule" id="stock_picking_batch_rule_stock_user">
|
||||
<field name="name">See Picking Batches from allowed warehouses</field>
|
||||
<field name="model_id" ref="stock_picking_batch.model_stock_picking_batch"/>
|
||||
<field name="groups" eval="[(4, ref('stock.group_stock_user'))]"/>
|
||||
<field name="domain_force">['|', ('picking_type_id','=',False), ('picking_type_id.warehouse_id','in',[wh.id for wh in user.allowed_warehouse_ids])]</field>
|
||||
</record>
|
||||
|
||||
<record model="ir.rule" id="stock_picking_batch_rule_stock_manager">
|
||||
<field name="name">See all Picking Batches</field>
|
||||
<field name="model_id" ref="stock_picking_batch.model_stock_picking_batch"/>
|
||||
<field name="groups" eval="[(4, ref('stock.group_stock_manager'))]"/>
|
||||
<field name="domain_force">[(1,'=',1)]</field>
|
||||
</record>
|
||||
|
||||
<!-- TO FIX: In Odoo Standard for some reason there are no multi-company rules for picking batches -->
|
||||
<record model="ir.rule" id="stock_picking_batch_rule">
|
||||
<field name="name">stock_picking_batch multi-company</field>
|
||||
<field name="model_id" search="[('model','=','stock.picking.batch')]" model="ir.model"/>
|
||||
<field name="domain_force">[('company_id', 'in', company_ids)]</field>
|
||||
</record>
|
||||
<!-- END of FIX-->
|
||||
|
||||
<!-- Multi Warehouses: Stock Move -->
|
||||
<record model="ir.rule" id="stock_move_rule_stock_user">
|
||||
<field name="name">See Stock Moves from allowed warehouses</field>
|
||||
<field name="model_id" ref="stock.model_stock_move"/>
|
||||
<field name="groups" eval="[(4, ref('stock.group_stock_user'))]"/>
|
||||
<field name="domain_force">[
|
||||
'&',
|
||||
'|',
|
||||
('location_id.warehouse_id', '=', False),
|
||||
('location_id.warehouse_id','in',[wh.id for wh in user.allowed_warehouse_ids]),
|
||||
'|',
|
||||
('location_dest_id.warehouse_id', '=', False),
|
||||
('location_dest_id.warehouse_id','in',[wh.id for wh in user.allowed_warehouse_ids]),
|
||||
]</field>
|
||||
</record>
|
||||
|
||||
<record model="ir.rule" id="stock_move_rule_stock_manager">
|
||||
<field name="name">See all Stock Moves</field>
|
||||
<field name="model_id" ref="stock.model_stock_move"/>
|
||||
<field name="groups" eval="[(4, ref('stock.group_stock_manager'))]"/>
|
||||
<field name="domain_force">[(1,'=',1)]</field>
|
||||
</record>
|
||||
|
||||
<!-- Multi Warehouses: Stock Move Lines-->
|
||||
<record model="ir.rule" id="stock_move_line_rule_stock_user">
|
||||
<field name="name">See Stock Move Lines from allowed warehouses</field>
|
||||
<field name="model_id" ref="stock.model_stock_move_line"/>
|
||||
<field name="groups" eval="[(4, ref('stock.group_stock_user'))]"/>
|
||||
<field name="domain_force">[
|
||||
'&',
|
||||
'|',
|
||||
('location_id.warehouse_id', '=', False),
|
||||
('location_id.warehouse_id','in',[wh.id for wh in user.allowed_warehouse_ids]),
|
||||
'|',
|
||||
('location_dest_id.warehouse_id', '=', False),
|
||||
('location_dest_id.warehouse_id','in',[wh.id for wh in user.allowed_warehouse_ids]),
|
||||
]</field>
|
||||
</record>
|
||||
|
||||
<record model="ir.rule" id="stock_move_line_rule_stock_manager">
|
||||
<field name="name">See all Stock Move Lines</field>
|
||||
<field name="model_id" ref="stock.model_stock_move_line"/>
|
||||
<field name="groups" eval="[(4, ref('stock.group_stock_manager'))]"/>
|
||||
<field name="domain_force">[(1,'=',1)]</field>
|
||||
</record>
|
||||
|
||||
<!-- Multi Warehouses: Packages -->
|
||||
<record model="ir.rule" id="stock_quant_package_rule_stock_user">
|
||||
<field name="name">See Stock Quant Package from allowed warehouses</field>
|
||||
<field name="model_id" ref="stock.model_stock_quant_package"/>
|
||||
<field name="groups" eval="[(4, ref('stock.group_stock_user'))]"/>
|
||||
<field name="domain_force">[
|
||||
'|', '|',
|
||||
('location_id', '=', False),
|
||||
('location_id.warehouse_id','=',False),
|
||||
('location_id.warehouse_id','in',[wh.id for wh in user.allowed_warehouse_ids])
|
||||
]</field>
|
||||
</record>
|
||||
|
||||
<record model="ir.rule" id="stock_quant_package_rule_stock_manager">
|
||||
<field name="name">See Stock Quant Package</field>
|
||||
<field name="model_id" ref="stock.model_stock_quant_package"/>
|
||||
<field name="groups" eval="[(4, ref('stock.group_stock_manager'))]"/>
|
||||
<field name="domain_force">[(1,'=',1)]</field>
|
||||
</record>
|
||||
</odoo>
|
||||
|
|
@ -0,0 +1,6 @@
|
|||
id,name,model_id:id,group_id:id,perm_read,perm_write,perm_create,perm_unlink
|
||||
validate_inventory_user,validate_inventory_user,model_stock_location,ventor_base.merp_user_validate_inventory_adjustment,1,1,0,0
|
||||
ventor_settings_admin,ventor_settings_admin,ventor_base.model_ventor_option_setting,ventor_base.merp_manage_ventor_configuration_app,1,1,0,0
|
||||
ventor_setting_value,ventor_setting_value,ventor_base.model_ventor_setting_value,ventor_base.merp_manage_ventor_configuration_app,1,0,0,0
|
||||
pallet_transfer_stock_user,pallet_transfer_stock_user,model_pallet_transfer,stock.group_stock_user,1,1,1,0
|
||||
pallet_transfer_stock_manager,pallet_transfer_stock_manager,model_pallet_transfer,stock.group_stock_manager,1,1,1,1
|
||||
|
|
After Width: | Height: | Size: 10 KiB |
|
|
@ -0,0 +1,113 @@
|
|||
<section class="oe_container oe_dark">
|
||||
<div class="oe_row">
|
||||
<div class="oe_span12">
|
||||
<h2 class="oe_slogan"><strong>Ventor</strong>/<strong>mERP</strong> Base module</h2>
|
||||
</div>
|
||||
<div class="oe_span12" style="text-align: center; margin-bottom: 5px">
|
||||
<p style="padding: 5px; font-size: 16px; font-weight: bold; background-color: yellow; display: inline">
|
||||
TO AVOID ANY ISSUES, PLEASE, USE ALWAYS LATEST VERSION FROM OUR GITHUB REPOSITORY -
|
||||
<a href="https://github.com/ventor-tech/merp/tree/16.0">
|
||||
https://github.com/ventor-tech/merp/tree/16.0
|
||||
</a>
|
||||
</p>
|
||||
</div>
|
||||
<div class="oe_span6">
|
||||
<div class="oe_row_img oe_centered">
|
||||
<img class="oe_picture oe_screenshot" src="merp_base.png">
|
||||
</div>
|
||||
</div>
|
||||
<div class="oe_span6">
|
||||
<p class="oe_mt32">
|
||||
The base module required for all <strong>Ventor</strong>/<strong>mERP</strong>-related modules, i.e.:
|
||||
</p>
|
||||
<ul>
|
||||
<li>Ventor/mERP Outgoing Routing</li>
|
||||
<li>Ventor/mERP Picking Product Skip</li>
|
||||
<li>Ventor/mERP Picking Wave</li>
|
||||
<li>Ventor/mERP Internal Warehouse</li>
|
||||
<li>and more ...</li>
|
||||
</ul>
|
||||
<p class="oe_mt32">
|
||||
It allows user to install/uninstall modules via Inventory/Warehouse Settings screen.
|
||||
</p>
|
||||
</div>
|
||||
</div>
|
||||
<div class="oe_row">
|
||||
|
||||
<div class="oe_span6">
|
||||
<div class="oe_row_img oe_centered">
|
||||
<img class="oe_picture oe_screenshot" src="merp_base_1.png"/>
|
||||
</div>
|
||||
</div>
|
||||
<div class="oe_span6">
|
||||
<p class="oe_mt32">
|
||||
In case there are multiple warehouses, this modules allows to select default warehouse that will be pre-selected for user when using menu "Internal Transfer"
|
||||
</p>
|
||||
<p class="oe_mt32">
|
||||
Allows to define default location that will be used for Inventory Adjustments instead of default 'WH/Stock'.
|
||||
</p>
|
||||
<p class="oe_mt32">
|
||||
Allows to show location barcodes disabled in the Community version.
|
||||
</p>
|
||||
</div>
|
||||
|
||||
</div>
|
||||
<div class="oe_row">
|
||||
|
||||
<div class="oe_span6">
|
||||
<div class="oe_row_img oe_centered">
|
||||
<img class="oe_picture oe_screenshot" src="merp_base_2.png">
|
||||
</div>
|
||||
</div>
|
||||
|
||||
<div class="oe_span6">
|
||||
<p class="oe_mt32">
|
||||
Adds special access rights required by the "Ventor" app:
|
||||
</p>
|
||||
<ul>
|
||||
<li>Warehouse Operations Menu</li>
|
||||
<li>Inventory Adjustments Menu</li>
|
||||
<li>Instant Inventory Menu</li>
|
||||
<li>Internal Transfers Menu</li>
|
||||
<li>Manufacturing Menu</li>
|
||||
<li>Create Sales Order Menu</li>
|
||||
<li>Quick Info Menu</li>
|
||||
<li>Batch Picking Menu</li>
|
||||
<li>Ventor Access Rights</li>
|
||||
<li>and more ...</li>
|
||||
</ul>
|
||||
<p class="oe_mt32">
|
||||
Module also allows to define user's default stock location for instant moves.
|
||||
</p>
|
||||
</div>
|
||||
</div>
|
||||
|
||||
</section>
|
||||
|
||||
<section class="oe_container">
|
||||
<div class="oe_row oe_spaced">
|
||||
<div class="oe_span12">
|
||||
<h2 class="oe_slogan">Notes</h2>
|
||||
<p class="oe_mt32">
|
||||
This module is designed to work only with "Ventor" application that can be downloaded from:
|
||||
</p>
|
||||
<ol>
|
||||
<li>
|
||||
<a target="_blank" href="https://ventor.app/">https://ventor.app</a> website - version obtained from here is suitable for all types of organizations
|
||||
</li>
|
||||
<li>
|
||||
<a target="_blank" href="https://play.google.com/store/apps/details?id=com.xpansa.merp.warehouse">Google Play</a> - has limitations, not possible to customize app by request - https://play.google.com/store/apps/details?id=com.xpansa.merp.warehouse
|
||||
</li>
|
||||
</ol>
|
||||
<p class="oe_mt32">
|
||||
"Ventor" app work both on regular mobile phones with Android 4.1+ and with professional barcode scanners. For full list of supported devices check <a target="_blank" href="https://merpapp.com/blog/merp-frequently-asked-questions/#l23">F.A.Q.</a>
|
||||
</p>
|
||||
<p class="oe_mt32">
|
||||
<a target="_blank" href="https://ventor.tech/">VentorTech (https://ventor.tech/)</a> is company specialized on building Personalized Inventory and Product Management System.
|
||||
</p>
|
||||
<p class="oe_mt32">
|
||||
For all questions contact <a target="_blank" href="mailto:hello@ventor.tech">hello@ventor.tech</a>.
|
||||
</p>
|
||||
</div>
|
||||
</div>
|
||||
</section>
|
||||
|
After Width: | Height: | Size: 1.4 MiB |
|
After Width: | Height: | Size: 49 KiB |
|
After Width: | Height: | Size: 78 KiB |
|
After Width: | Height: | Size: 62 KiB |
|
|
@ -0,0 +1,17 @@
|
|||
.custom-control.custom-checkbox.o_field_boolean.o_field_widget.o_readonly_modifier{
|
||||
pointer-events: none;
|
||||
}
|
||||
|
||||
.ventor_base_tree {
|
||||
& > .table-responsive {
|
||||
& > .table {
|
||||
& > thead {
|
||||
& > tr {
|
||||
& > :not(:empty) {
|
||||
white-space: pre-wrap;
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
||||
|
After Width: | Height: | Size: 24 KiB |
|
After Width: | Height: | Size: 48 KiB |
|
|
@ -0,0 +1,6 @@
|
|||
# Copyright 2020 VentorTech OU
|
||||
# License LGPL-3.0 or later (https://www.gnu.org/licenses/lgpl-3.0).
|
||||
|
||||
from . import test_check_default_location
|
||||
from . import test_checking_logotype
|
||||
from . import test_set_active_view
|
||||
|
|
@ -0,0 +1,30 @@
|
|||
# Copyright 2020 VentorTech OU
|
||||
# License LGPL-3.0 or later (https://www.gnu.org/licenses/lgpl-3.0).
|
||||
|
||||
from odoo.tests.common import TransactionCase
|
||||
|
||||
|
||||
class TestCheckDefaultLocation(TransactionCase):
|
||||
|
||||
def setUp(self):
|
||||
super(TestCheckDefaultLocation, self).setUp()
|
||||
self.location = self.env['stock.location'].create({
|
||||
'name': 'test_location'
|
||||
})
|
||||
self.user = self.env['res.users'].create({
|
||||
'name': 'test_user',
|
||||
'login': 'test_user',
|
||||
'email': 'test.user@email.com'
|
||||
})
|
||||
self.ventor_worker = self.env.ref('ventor_base.ventor_role_wh_worker')
|
||||
self.ventor_worker.write({'users': [(4, self.user.id)]})
|
||||
self.inventory_manager = self.env.ref('stock.group_stock_manager')
|
||||
self.inventory_manager.write({'users': [(4, self.user.id)]})
|
||||
self.administration_settings = self.env.ref('base.group_system')
|
||||
self.administration_settings.write({'users': [(4, self.user.id)]})
|
||||
self.company = self.env['res.company'].create({
|
||||
'name': 'test_company',
|
||||
})
|
||||
self.product = self.env['product.template'].create({
|
||||
'name': 'new_product'
|
||||
})
|
||||
|
|
@ -0,0 +1,35 @@
|
|||
# Copyright 2020 VentorTech OU
|
||||
# License LGPL-3.0 or later (https://www.gnu.org/licenses/lgpl-3.0).
|
||||
|
||||
from odoo.tests.common import TransactionCase
|
||||
from odoo.exceptions import UserError
|
||||
from odoo.modules.module import get_resource_path
|
||||
import base64
|
||||
|
||||
|
||||
class TestCheckingLogotype(TransactionCase):
|
||||
|
||||
def setUp(self):
|
||||
super(TestCheckingLogotype, self).setUp()
|
||||
self.user = self.env['res.users'].create({
|
||||
'name': 'admin',
|
||||
'login': 'login@email.com'
|
||||
})
|
||||
self.ventor_admin = self.env.ref('ventor_base.ventor_role_admin')
|
||||
self.ventor_admin.write({'users': [(4, self.user.id, 0)]})
|
||||
self.inventory_manager = self.env.ref('stock.group_stock_manager')
|
||||
self.inventory_manager.write({'users': [(4, self.user.id, 0)]})
|
||||
self.administration_settings = self.env.ref('base.group_system')
|
||||
self.administration_settings.write({'users': [(4, self.user.id, 0)]})
|
||||
self.company = self.env['res.company'].search([], limit=1)
|
||||
|
||||
def test_upload_invalid_logo(self):
|
||||
img_path = get_resource_path('ventor_base', 'static', 'test_logo', '400_400.png')
|
||||
img_content = base64.b64encode(open(img_path, "rb").read())
|
||||
with self.assertRaises(UserError):
|
||||
self.company._validate_logotype({'logotype_file': img_content})
|
||||
|
||||
def test_upload_valid_logo(self):
|
||||
img_path = get_resource_path('ventor_base', 'static', 'test_logo', '600_600.png')
|
||||
img_content = base64.b64encode(open(img_path, "rb").read())
|
||||
self.assertEqual(self.company._validate_logotype({'logotype_file': img_content}), True)
|
||||
|
|
@ -0,0 +1,39 @@
|
|||
# Copyright 2020 VentorTech OU
|
||||
# License LGPL-3.0 or later (https://www.gnu.org/licenses/lgpl-3.0).
|
||||
|
||||
from odoo.tests.common import TransactionCase
|
||||
from odoo.exceptions import Warning
|
||||
import base64
|
||||
|
||||
|
||||
class TestSetActiveView(TransactionCase):
|
||||
def setUp(self):
|
||||
super(TestSetActiveView, self).setUp()
|
||||
self.view_with_barcode = self.env.ref('ventor_base.view_location_form_inherit_additional_barcode')
|
||||
self.ConfigObj = self.env['res.config.settings']
|
||||
|
||||
def test_get_values(self):
|
||||
# A default value, adjusted in a view.xml
|
||||
config = self.ConfigObj.get_values()
|
||||
self.assertEqual(
|
||||
config['add_barcode_on_view'],
|
||||
False
|
||||
)
|
||||
# We set True directly to the ir.ui.view
|
||||
self.view_with_barcode.active = True
|
||||
config = self.ConfigObj.get_values()
|
||||
self.assertEqual(
|
||||
config['add_barcode_on_view'],
|
||||
True
|
||||
)
|
||||
|
||||
def test_set_values(self):
|
||||
for value in (True, False):
|
||||
config = self.ConfigObj.create(
|
||||
{'add_barcode_on_view': value}
|
||||
)
|
||||
config.execute()
|
||||
self.assertEqual(
|
||||
self.view_with_barcode.active,
|
||||
value
|
||||
)
|
||||
|
|
@ -0,0 +1,121 @@
|
|||
<?xml version="1.0" encoding="UTF-8" ?>
|
||||
|
||||
<odoo>
|
||||
<record id="ventor_base_pallet_transfer_tree" model="ir.ui.view">
|
||||
<field name="name">ventor.base.pallet.transfer.tree</field>
|
||||
<field name="model">pallet.transfer</field>
|
||||
<field name="arch" type="xml">
|
||||
<tree>
|
||||
<field name="name"/>
|
||||
<field name="pallet_name"/>
|
||||
<field name="source_location_id"/>
|
||||
<field name="destination_location_id"/>
|
||||
</tree>
|
||||
</field>
|
||||
</record>
|
||||
|
||||
<record id="ventor_base_pallet_transfer_form" model="ir.ui.view">
|
||||
<field name="name">ventor.base.pallet.transfer.form</field>
|
||||
<field name="model">pallet.transfer</field>
|
||||
<field name="arch" type="xml">
|
||||
<form string="Pallet Transfers" edit="false">
|
||||
<sheet>
|
||||
<div class="oe_title">
|
||||
<h1>
|
||||
<field name="name" readonly="1"/>
|
||||
</h1>
|
||||
</div>
|
||||
<group>
|
||||
<group>
|
||||
<field name="pallet_id"
|
||||
required="1"
|
||||
options="{'no_create': True, 'no_open': True}"
|
||||
domain="[('is_pallet', '=', True)]"/>
|
||||
</group>
|
||||
<group>
|
||||
<field name="destination_location_id"
|
||||
required="1"
|
||||
options="{'no_create': True, 'no_open': True}"
|
||||
domain="[('is_pallet', '!=', True), ('usage', '=', 'internal')]"/>
|
||||
</group>
|
||||
</group>
|
||||
</sheet>
|
||||
</form>
|
||||
</field>
|
||||
</record>
|
||||
|
||||
<record id="ventor_base_quick_pallet_transfer_form" model="ir.ui.view">
|
||||
<field name="name">ventor.base.quick.pallet.transfer.form</field>
|
||||
<field name="model">pallet.transfer</field>
|
||||
<field name="arch" type="xml">
|
||||
<form>
|
||||
<div class="oe_title">
|
||||
<h1>
|
||||
<field name="name" readonly="1"/>
|
||||
</h1>
|
||||
</div>
|
||||
<group>
|
||||
<group>
|
||||
<field name="pallet_id"
|
||||
required="1"
|
||||
options="{'no_create': True, 'no_open': True}"
|
||||
domain="[('is_pallet', '=', True)]"/>
|
||||
</group>
|
||||
<group>
|
||||
<field name="destination_location_id"
|
||||
required="1"
|
||||
options="{'no_create': True, 'no_open': True}"
|
||||
domain="[('is_pallet', '!=', True), ('usage', '=', 'internal')]"/>
|
||||
</group>
|
||||
</group>
|
||||
<footer>
|
||||
<button
|
||||
string="Create Transfer"
|
||||
special="save"
|
||||
class="oe_highlight"/>
|
||||
<button
|
||||
string="Cancel"
|
||||
class="btn btn-default"
|
||||
special="cancel"/>
|
||||
</footer>
|
||||
</form>
|
||||
</field>
|
||||
</record>
|
||||
|
||||
<record id="quick_pallets_transfer_action" model="ir.actions.act_window">
|
||||
<field name="name">Quick Pallet Transfers</field>
|
||||
<field name="res_model">pallet.transfer</field>
|
||||
<field name="view_mode">form</field>
|
||||
<field name="view_id" ref="ventor_base.ventor_base_quick_pallet_transfer_form"/>
|
||||
<field name="target">new</field>
|
||||
</record>
|
||||
|
||||
<record id="all_pallets_transfer_action" model="ir.actions.act_window">
|
||||
<field name="name">All Pallet Transfers</field>
|
||||
<field name="res_model">pallet.transfer</field>
|
||||
<field name="usage">menu</field>
|
||||
<field name="view_mode">tree,form</field>
|
||||
<field name="view_id" ref="ventor_base.ventor_base_pallet_transfer_tree"/>
|
||||
<field name="target">current</field>
|
||||
</record>
|
||||
|
||||
<menuitem id="menu_handling_transfer"
|
||||
name="Pallet Transfers"
|
||||
parent="stock.menu_stock_root"
|
||||
sequence="99"
|
||||
groups="ventor_base.merp_allow_pallet_transfer"/>
|
||||
|
||||
<record id="Quick_pallets_transfer_menu" model="ir.ui.menu">
|
||||
<field name="name">Quick Pallet Transfers</field>
|
||||
<field name="sequence" eval="1"/>
|
||||
<field name="action" ref="ventor_base.quick_pallets_transfer_action"/>
|
||||
<field name="parent_id" ref="ventor_base.menu_handling_transfer"/>
|
||||
</record>
|
||||
|
||||
<record id="all_pallets_transfer_menu" model="ir.ui.menu">
|
||||
<field name="name">All Pallet Transfers</field>
|
||||
<field name="sequence" eval="2"/>
|
||||
<field name="action" ref="ventor_base.all_pallets_transfer_action"/>
|
||||
<field name="parent_id" ref="ventor_base.menu_handling_transfer"/>
|
||||
</record>
|
||||
</odoo>
|
||||
|
|
@ -0,0 +1,104 @@
|
|||
<?xml version="1.0" encoding="utf-8"?>
|
||||
<odoo>
|
||||
|
||||
<record id="view_stock_config_settings" model="ir.ui.view">
|
||||
<field name="name">Ventor Application Demo - Stock Settings</field>
|
||||
<field name="model">res.config.settings</field>
|
||||
<field name="inherit_id" ref="base.res_config_settings_view_form" />
|
||||
<field name="arch" type="xml">
|
||||
<xpath expr="//div[hasclass('settings')]" position="inside" >
|
||||
<div class="app_settings_block"
|
||||
data-string="Ventor Configuration"
|
||||
string="Ventor Configuration"
|
||||
data-key="ventor_base"
|
||||
groups="stock.group_stock_manager">
|
||||
|
||||
<h2>Ventor Application modules</h2>
|
||||
<div class="row mt16 o_settings_container">
|
||||
<div class="col-12 col-lg-6 o_setting_box">
|
||||
<div class="o_setting_left_pane">
|
||||
<field name="module_outgoing_routing"/>
|
||||
</div>
|
||||
<div class="o_setting_right_pane">
|
||||
<label for="module_outgoing_routing"/>
|
||||
<div class="text-muted">
|
||||
Add Outgoing Routing strategy options (sort locations)
|
||||
</div>
|
||||
</div>
|
||||
</div>
|
||||
<div class="col-12 col-lg-6 o_setting_box">
|
||||
<div class="o_setting_right_pane">
|
||||
<field name="base_version"/>
|
||||
<div class="text-muted">
|
||||
Base Module Version
|
||||
</div>
|
||||
</div>
|
||||
</div>
|
||||
</div>
|
||||
<h2>Inventory settings</h2>
|
||||
<div class="row mt16 o_settings_container">
|
||||
<div class="col-12 col-lg-6 o_setting_box">
|
||||
<div class="o_setting_left_pane">
|
||||
<div>
|
||||
<field name="add_barcode_on_view"/>
|
||||
</div>
|
||||
</div>
|
||||
<div class="o_setting_right_pane">
|
||||
<label for="add_barcode_on_view"/>
|
||||
<div class="text-muted">
|
||||
Use it to activate barcodes for the Community version
|
||||
</div>
|
||||
</div>
|
||||
</div>
|
||||
<div class="col-12 col-lg-6 o_setting_box">
|
||||
<div class="o_setting_left_pane">
|
||||
<div>
|
||||
<field name="force_lot_validation_on_inventory_adjustment"/>
|
||||
</div>
|
||||
</div>
|
||||
<div class="o_setting_right_pane">
|
||||
<label for="force_lot_validation_on_inventory_adjustment"/>
|
||||
</div>
|
||||
</div>
|
||||
<div class="col-12 col-lg-6 o_setting_box">
|
||||
<div class="o_setting_left_pane">
|
||||
<div>
|
||||
<field name="barcode_on_picking_document"/>
|
||||
</div>
|
||||
</div>
|
||||
<div class="o_setting_right_pane">
|
||||
<label for="barcode_on_picking_document"/>
|
||||
<div class="text-muted">
|
||||
Showing a barcode of the related sales order on all printed picking documents
|
||||
</div>
|
||||
</div>
|
||||
</div>
|
||||
</div>
|
||||
<h2>Additional Customisation</h2>
|
||||
<div class="row mt16 o_settings_container">
|
||||
<div class="col-12 col-lg-6 o_setting_box">
|
||||
<div class="o_setting_left_pane"/>
|
||||
<div class="o_setting_right_pane">
|
||||
<span class="o_form_label">Custom Mobile Logo</span>
|
||||
<div>
|
||||
<field name="logotype_file"
|
||||
widget="image" />
|
||||
</div>
|
||||
</div>
|
||||
</div>
|
||||
<div class="col-12 col-lg-6 o_setting_box">
|
||||
<div class="o_setting_left_pane"/>
|
||||
<div class="o_setting_right_pane">
|
||||
<span class="o_form_label">Custom Build Name</span>
|
||||
<div>
|
||||
<field name="custom_package_name"/>
|
||||
</div>
|
||||
</div>
|
||||
</div>
|
||||
</div>
|
||||
</div>
|
||||
</xpath>
|
||||
</field>
|
||||
</record>
|
||||
|
||||
</odoo>
|
||||
|
|
@ -0,0 +1,40 @@
|
|||
<?xml version="1.0" encoding="utf-8"?>
|
||||
|
||||
<odoo>
|
||||
|
||||
<!-- Update User form -->
|
||||
<record model="ir.ui.view" id="res_user_form">
|
||||
<field name="name">Users Preferences</field>
|
||||
<field name="model">res.users</field>
|
||||
<field name="inherit_id" ref="base.view_users_form" />
|
||||
<field name="arch" type="xml">
|
||||
<data>
|
||||
<xpath expr="//notebook/page[@name='preferences']" position="after">
|
||||
<page string="Ventor Preferences">
|
||||
<group>
|
||||
<field name="ventor_global_settings"
|
||||
style="overflow-y: scroll; resize: none; height: 120px; width: 100%%"
|
||||
groups="base.group_no_one"/>
|
||||
<field name="ventor_user_settings"
|
||||
style="overflow-y: scroll; resize: none; height: 120px; width: 100%%"
|
||||
groups="base.group_no_one"/>
|
||||
</group>
|
||||
</page>
|
||||
</xpath>
|
||||
<xpath expr="//page[@name='access_rights']//group" position="after">
|
||||
<group string="Multi Warehouses">
|
||||
<field name="allowed_warehouse_ids" widget="many2many_tags" options="{'no_create': True}"/>
|
||||
</group>
|
||||
<div class="text-danger">
|
||||
<p>
|
||||
Warning! If the user is Inventory / Administrator,
|
||||
the Allowed Warehouses configuration is ignored and
|
||||
the user will still be able to see all warehouses
|
||||
</p>
|
||||
</div>
|
||||
</xpath>
|
||||
</data>
|
||||
</field>
|
||||
</record>
|
||||
|
||||
</odoo>
|
||||
|
|
@ -0,0 +1,41 @@
|
|||
<?xml version="1.0" encoding="UTF-8" ?>
|
||||
|
||||
<odoo>
|
||||
<record id="view_location_form_inherit_additional_barcode" model="ir.ui.view">
|
||||
<field name="name">stock.location.form.inherit.additional.barcode</field>
|
||||
<field name="model">stock.location</field>
|
||||
<field name="active" eval="False"/>
|
||||
<field name="inherit_id" ref="stock.view_location_form"/>
|
||||
<field name="arch" type="xml">
|
||||
<xpath expr="//field[@name='return_location']" position="after">
|
||||
<field name="barcode"/>
|
||||
</xpath>
|
||||
</field>
|
||||
</record>
|
||||
|
||||
<record id="view_location_form_inherited" model="ir.ui.view">
|
||||
<field name="name">stock.location.form.inherited</field>
|
||||
<field name="model">stock.location</field>
|
||||
<field name="inherit_id" ref="stock.view_location_form"/>
|
||||
<field name="arch" type="xml">
|
||||
<xpath expr="//field[@name='return_location']" position="after">
|
||||
<field name="is_pallet" attrs="{'invisible': [('usage', '!=', 'internal')]}"/>
|
||||
</xpath>
|
||||
</field>
|
||||
</record>
|
||||
|
||||
<!-- stock.location inherit search view -->
|
||||
<record id="view_location_search" model="ir.ui.view">
|
||||
<field name="name">stock.location.inherit.view.search</field>
|
||||
<field name="model">stock.location</field>
|
||||
<field name="inherit_id" ref="stock.view_location_search"/>
|
||||
<field name="arch" type="xml">
|
||||
<xpath expr="//field[@name='location_id']" position="after">
|
||||
<field name="warehouse_id" string="Warehouse"/>
|
||||
<group expand='0' string='Group by...'>
|
||||
<filter string='Warehouse' name="warehouse_id" domain="[]" context="{'group_by' : 'warehouse_id'}"/>
|
||||
</group>
|
||||
</xpath>
|
||||
</field>
|
||||
</record>
|
||||
</odoo>
|
||||
|
|
@ -0,0 +1,140 @@
|
|||
<?xml version="1.0" encoding="utf-8"?>
|
||||
|
||||
<odoo>
|
||||
<data>
|
||||
<!-- Views-->
|
||||
<record id='ventor_stock_picking_view' model='ir.ui.view'>
|
||||
<field name="name">Operation Types</field>
|
||||
<field name="model">stock.picking.type</field>
|
||||
<field name="priority">1000</field>
|
||||
<field name="arch" type="xml">
|
||||
<tree create="false" class="ventor_base_tree" editable="top">
|
||||
<field name="name" attrs="{'readonly':True}"/>
|
||||
<field name="warehouse_id" attrs="{'readonly':True}"/>
|
||||
<field name="company_id" invisible="True"/>
|
||||
<field name="confirm_source_location"/>
|
||||
<field name="change_source_location"/>
|
||||
<field name="confirm_product"/>
|
||||
<field name="show_next_product"/>
|
||||
<field name="confirm_destination_location"/>
|
||||
<field name="change_destination_location"/>
|
||||
<field name="scan_destination_location_once"/>
|
||||
<field name="apply_quantity_automatically"/>
|
||||
<field name="is_package_tracking_enabled" invisible='1'/>
|
||||
<field name="manage_packages" attrs="{'readonly': [('is_package_tracking_enabled','=',False)]}"/>
|
||||
<field name="allow_creating_new_packages"
|
||||
attrs="{'readonly': ['|', ('is_package_tracking_enabled','=',False), ('manage_packages','=',False)]}"/>
|
||||
<field name="is_consignment_enabled" invisible='1'/>
|
||||
<field name="confirm_source_package"
|
||||
attrs="{'readonly': ['|', ('is_package_tracking_enabled','=',False), ('manage_packages','=',False)]}"/>
|
||||
<field name="scan_destination_package"
|
||||
attrs="{'readonly': ['|', ('is_package_tracking_enabled','=',False), ('manage_packages','=',False)]}"/>
|
||||
<field name="manage_product_owner" attrs="{'readonly': [('is_consignment_enabled','=',False)]}"/>
|
||||
<field name="is_stock_production_lot_enabled" invisible='1'/>
|
||||
<field name="apply_default_lots" attrs="{'readonly': [('is_stock_production_lot_enabled','=',False)]}"/>
|
||||
<field name="transfer_more_items"/>
|
||||
<field name="autocomplete_the_item_quantity_field"/>
|
||||
<field name="behavior_on_backorder_creation"/>
|
||||
<field name="behavior_on_split_operation" required="1"/>
|
||||
<field name="show_print_attachment_button"/>
|
||||
<field name="show_put_in_pack_button" attrs="{'readonly': [('is_package_tracking_enabled','=',False)]}"/>
|
||||
<field name="code" invisible='1'/>
|
||||
<field name="check_shipping_information" attrs="{'readonly': [('code','!=','outgoing')]}"/>
|
||||
<field name="hide_qty_to_receive" attrs="{'readonly': [('code','!=','incoming')]}"/>
|
||||
</tree>
|
||||
</field>
|
||||
</record>
|
||||
|
||||
<record id="ventor_stock_picking_form" model="ir.ui.view">
|
||||
<field name="name">Operation Types</field>
|
||||
<field name="model">stock.picking.type</field>
|
||||
<field name="inherit_id" ref="stock.view_picking_type_form"/>
|
||||
<field name="arch" type="xml">
|
||||
<xpath expr="//group[@name='stock_picking_type_lot']" position="before">
|
||||
<group string="Ventor Configuration" colspan="12">
|
||||
<group>
|
||||
<field name="confirm_source_location"/>
|
||||
<field name="change_source_location"
|
||||
attrs="{'readonly':[('confirm_source_location','!=',True)]}"/>
|
||||
<field name="confirm_product"/>
|
||||
<field name="show_next_product"/>
|
||||
<field name="confirm_destination_location"/>
|
||||
<field name="change_destination_location"/>
|
||||
<field name="scan_destination_location_once"/>
|
||||
<field name="apply_quantity_automatically"
|
||||
attrs="{'readonly':[('confirm_destination_location','!=',True)]}"/>
|
||||
<field name="is_package_tracking_enabled" invisible='1'/>
|
||||
<field name="manage_packages" attrs="{'invisible': [('is_package_tracking_enabled','=',False)]}"/>
|
||||
<field name="allow_creating_new_packages"
|
||||
attrs="{'invisible': ['|', ('is_package_tracking_enabled','=',False), ('manage_packages','=',False)],
|
||||
'readonly': ['|', ('is_package_tracking_enabled','=',False), ('manage_packages','=',False)]}"/>
|
||||
<field name="confirm_source_package"
|
||||
attrs="{'invisible': ['|', ('is_package_tracking_enabled','=',False), ('manage_packages','=',False)],
|
||||
'readonly': ['|', ('is_package_tracking_enabled','=',False), ('manage_packages','=',False)]}"/>
|
||||
<field name="scan_destination_package"
|
||||
attrs="{'invisible': ['|', ('is_package_tracking_enabled','=',False), ('manage_packages','=',False)],
|
||||
'readonly': ['|', ('is_package_tracking_enabled','=',False), ('manage_packages','=',False)]}"/>
|
||||
<field name="is_consignment_enabled" invisible='1'/>
|
||||
<field name="manage_product_owner" attrs="{'invisible': [('is_consignment_enabled','=',False)]}"/>
|
||||
</group>
|
||||
<group>
|
||||
<field name="is_stock_production_lot_enabled" invisible='1'/>
|
||||
<field name="apply_default_lots" attrs="{'invisible': [('is_stock_production_lot_enabled','=',False)]}"/>
|
||||
<field name="transfer_more_items"/>
|
||||
<field name="autocomplete_the_item_quantity_field"/>
|
||||
<field name="behavior_on_backorder_creation"/>
|
||||
<field name="behavior_on_split_operation" required="1"/>
|
||||
<field name="show_print_attachment_button"/>
|
||||
<field name="show_put_in_pack_button" attrs="{'invisible': [('is_package_tracking_enabled','=',False)]}"/>
|
||||
<field name="check_shipping_information" attrs="{'invisible': [('code','!=','outgoing')]}"/>
|
||||
<field name="hide_qty_to_receive" attrs="{'invisible': [('code','!=','incoming')]}"/>
|
||||
</group>
|
||||
</group>
|
||||
</xpath>
|
||||
</field>
|
||||
</record>
|
||||
|
||||
<!-- Actions-->
|
||||
<record id='ventor_stock_picking_action' model='ir.actions.act_window'>
|
||||
<field name="name">Warehouse Operations</field>
|
||||
<field name="res_model">stock.picking.type</field>
|
||||
<field name="view_mode">tree,form</field>
|
||||
<field name="usage">menu</field>
|
||||
<field name="view_id" ref="ventor_stock_picking_view"/>
|
||||
</record>
|
||||
|
||||
<record id="ventor_configs_action" model="ir.actions.act_window">
|
||||
<field name="name">Configuration</field>
|
||||
<field name="type">ir.actions.act_window</field>
|
||||
<field name="res_model">res.config.settings</field>
|
||||
<field name="view_mode">form</field>
|
||||
<field name="target">inline</field>
|
||||
<field name="context">{'module' : 'ventor_base'}</field>
|
||||
</record>
|
||||
|
||||
<!-- Menus -->
|
||||
<menuitem name="Ventor Configuration"
|
||||
id="ventor_app_base_menu"
|
||||
web_icon="ventor_base,static/description/icon.png"
|
||||
groups="merp_manage_ventor_configuration_app"/>
|
||||
|
||||
<menuitem id="ventor_app_settings"
|
||||
name="Settings"
|
||||
parent="ventor_app_base_menu"
|
||||
action="ventor_configs_action"/>
|
||||
|
||||
<menuitem name="Global Ventor Settings"
|
||||
id="ventor_settings_app_menu"
|
||||
parent="ventor_app_base_menu"/>
|
||||
|
||||
<menuitem name="Warehouse Operations"
|
||||
id="ventor_wh_operations_app_menu"
|
||||
parent="ventor_settings_app_menu"
|
||||
action="ventor_stock_picking_action"/>
|
||||
|
||||
<menuitem name="User Settings"
|
||||
id="ventor_app_user_settings_menu"
|
||||
parent="ventor_app_base_menu"
|
||||
action="base.action_res_users"/>
|
||||
</data>
|
||||
</odoo>
|
||||
|
|
@ -0,0 +1,13 @@
|
|||
<?xml version="1.0" encoding="utf-8"?>
|
||||
<odoo>
|
||||
<record id="view_stock_quant_tree_inherit_inventory_editable" model="ir.ui.view">
|
||||
<field name="name">view.stock.quant.tree.inherit.inventory.editable</field>
|
||||
<field name="model">stock.quant</field>
|
||||
<field name="inherit_id" ref="stock.view_stock_quant_tree_inventory_editable"/>
|
||||
<field name="arch" type="xml">
|
||||
<xpath expr="//button[@name='action_apply_inventory']" position="attributes">
|
||||
<attribute name="groups">ventor_base.merp_user_validate_inventory_adjustment</attribute>
|
||||
</xpath>
|
||||
</field>
|
||||
</record>
|
||||
</odoo>
|
||||
|
|
@ -0,0 +1,15 @@
|
|||
<?xml version="1.0" encoding="UTF-8"?>
|
||||
<odoo>
|
||||
|
||||
<record id="view_warehouse" model="ir.ui.view">
|
||||
<field name="name">stock.warehouse</field>
|
||||
<field name="model">stock.warehouse</field>
|
||||
<field name="inherit_id" ref="stock.view_warehouse"/>
|
||||
<field name="arch" type="xml">
|
||||
<field name="code" position="after">
|
||||
<field name="is_internal"/>
|
||||
</field>
|
||||
</field>
|
||||
</record>
|
||||
|
||||
</odoo>
|
||||
|
|
@ -0,0 +1,206 @@
|
|||
<?xml version="1.0" encoding="utf-8"?>
|
||||
|
||||
<odoo>
|
||||
<data>
|
||||
<!-- Views-->
|
||||
<record id='ventor_settings_tree_view' model='ir.ui.view'>
|
||||
<field name="name">Ventor Settings</field>
|
||||
<field name="model">ventor.option.setting</field>
|
||||
<field name="priority">1000</field>
|
||||
<field name="arch" type="xml">
|
||||
<tree create="false" editable="top">
|
||||
<field name="name" readonly="1"/>
|
||||
<field name="technical_name" readonly="1"/>
|
||||
<field name="settings_dependency" invisible="1"/>
|
||||
<field name="value" attrs="{'readonly': [('technical_name','=','show_next_product')]}" options="{'no_create': True, 'no_open': True}"/>
|
||||
<field name="value_type" readonly="1" groups="base.group_no_one"/>
|
||||
<field name="action_type" readonly="1" groups="base.group_no_one"/>
|
||||
<field name="description" readonly="1"/>
|
||||
</tree>
|
||||
</field>
|
||||
</record>
|
||||
|
||||
<!-- Actions-->
|
||||
<record id='ventor_package_management_action' model='ir.actions.act_window'>
|
||||
<field name="name">Package Management</field>
|
||||
<field name="res_model">ventor.option.setting</field>
|
||||
<field name="view_mode">tree</field>
|
||||
<field name="usage">menu</field>
|
||||
<field name="view_id" ref="ventor_settings_tree_view"/>
|
||||
<field name="domain">[('action_type', '=', 'package_management')]</field>
|
||||
</record>
|
||||
|
||||
<record id='ventor_batch_picking_action' model='ir.actions.act_window'>
|
||||
<field name="name">Batch Picking</field>
|
||||
<field name="res_model">ventor.option.setting</field>
|
||||
<field name="view_mode">tree</field>
|
||||
<field name="usage">menu</field>
|
||||
<field name="view_id" ref="ventor_settings_tree_view"/>
|
||||
<field name="domain">[('action_type', '=', 'batch_picking'), ('technical_name', '!=', 'show_next_product')]</field>
|
||||
</record>
|
||||
|
||||
<record id='ventor_wave_picking_action' model='ir.actions.act_window'>
|
||||
<field name="name">Wave Picking</field>
|
||||
<field name="res_model">ventor.option.setting</field>
|
||||
<field name="view_mode">tree</field>
|
||||
<field name="usage">menu</field>
|
||||
<field name="view_id" ref="ventor_settings_tree_view"/>
|
||||
<field name="domain">[('action_type', '=', 'wave_picking'), ('technical_name', '!=', 'show_next_product')]</field>
|
||||
</record>
|
||||
|
||||
<record id='ventor_cluster_picking_action' model='ir.actions.act_window'>
|
||||
<field name="name">Cluster Picking</field>
|
||||
<field name="res_model">ventor.option.setting</field>
|
||||
<field name="view_mode">tree</field>
|
||||
<field name="usage">menu</field>
|
||||
<field name="view_id" ref="ventor_settings_tree_view"/>
|
||||
<field name="domain">[('action_type', '=', 'cluster_picking'), ('technical_name', '!=', 'show_next_product')]</field>
|
||||
</record>
|
||||
|
||||
<record id='ventor_internal_transfers_action' model='ir.actions.act_window'>
|
||||
<field name="name">Internal Transfers</field>
|
||||
<field name="res_model">ventor.option.setting</field>
|
||||
<field name="view_mode">tree</field>
|
||||
<field name="usage">menu</field>
|
||||
<field name="view_id" ref="ventor_settings_tree_view"/>
|
||||
<field name="domain">[('action_type', '=', 'internal_transfers')]</field>
|
||||
</record>
|
||||
|
||||
<record id='ventor_putaway_action' model='ir.actions.act_window'>
|
||||
<field name="name">Putaway</field>
|
||||
<field name="res_model">ventor.option.setting</field>
|
||||
<field name="view_mode">tree</field>
|
||||
<field name="usage">menu</field>
|
||||
<field name="view_id" ref="ventor_settings_tree_view"/>
|
||||
<field name="domain">[('action_type', '=', 'putaway')]</field>
|
||||
</record>
|
||||
|
||||
<record id='ventor_inventory_adjustments_action' model='ir.actions.act_window'>
|
||||
<field name="name">Inventory Adjustments</field>
|
||||
<field name="res_model">ventor.option.setting</field>
|
||||
<field name="view_mode">tree</field>
|
||||
<field name="usage">menu</field>
|
||||
<field name="view_id" ref="ventor_settings_tree_view"/>
|
||||
<field name="domain">[('action_type', '=', 'inventory_adjustments')]</field>
|
||||
</record>
|
||||
|
||||
<record id='ventor_instant_inventory_action' model='ir.actions.act_window'>
|
||||
<field name="name">Instant Inventory</field>
|
||||
<field name="res_model">ventor.option.setting</field>
|
||||
<field name="view_mode">tree</field>
|
||||
<field name="usage">menu</field>
|
||||
<field name="view_id" ref="ventor_settings_tree_view"/>
|
||||
<field name="domain">[('action_type', '=', 'instant_inventory')]</field>
|
||||
</record>
|
||||
|
||||
<record id='ventor_quick_info_action' model='ir.actions.act_window'>
|
||||
<field name="name">Quick info</field>
|
||||
<field name="res_model">ventor.option.setting</field>
|
||||
<field name="view_mode">tree</field>
|
||||
<field name="usage">menu</field>
|
||||
<field name="view_id" ref="ventor_settings_tree_view"/>
|
||||
<field name="domain">[('action_type', '=', 'quick_info')]</field>
|
||||
</record>
|
||||
|
||||
<record id='ventor_scrap_management_action' model='ir.actions.act_window'>
|
||||
<field name="name">Scrap Management</field>
|
||||
<field name="res_model">ventor.option.setting</field>
|
||||
<field name="view_mode">tree</field>
|
||||
<field name="usage">menu</field>
|
||||
<field name="view_id" ref="ventor_settings_tree_view"/>
|
||||
<field name="domain">[('action_type', '=', 'scrap_management')]</field>
|
||||
</record>
|
||||
|
||||
<record id='ventor_create_so_action' model='ir.actions.act_window'>
|
||||
<field name="name">Create SO</field>
|
||||
<field name="res_model">ventor.option.setting</field>
|
||||
<field name="view_mode">tree</field>
|
||||
<field name="usage">menu</field>
|
||||
<field name="view_id" ref="ventor_settings_tree_view"/>
|
||||
<field name="domain">[('action_type', '=', 'create_so')]</field>
|
||||
</record>
|
||||
|
||||
<record id='ventor_create_po_action' model='ir.actions.act_window'>
|
||||
<field name="name">Create PO</field>
|
||||
<field name="res_model">ventor.option.setting</field>
|
||||
<field name="view_mode">tree</field>
|
||||
<field name="usage">menu</field>
|
||||
<field name="view_id" ref="ventor_settings_tree_view"/>
|
||||
<field name="domain">[('action_type', '=', 'create_po')]</field>
|
||||
</record>
|
||||
|
||||
<!-- Menus -->
|
||||
<menuitem name="Package Management"
|
||||
id="ventor_package_management_app_menu"
|
||||
parent="ventor_base.ventor_settings_app_menu"
|
||||
action="ventor_package_management_action"
|
||||
sequence="1"/>
|
||||
|
||||
<menuitem name="Batch Picking"
|
||||
id="ventor_batch_picking_app_menu"
|
||||
parent="ventor_base.ventor_settings_app_menu"
|
||||
action="ventor_batch_picking_action"
|
||||
sequence="2"/>
|
||||
|
||||
<menuitem name="Wave Picking"
|
||||
id="ventor_wave_picking_app_menu"
|
||||
parent="ventor_base.ventor_settings_app_menu"
|
||||
action="ventor_wave_picking_action"
|
||||
groups="stock.group_stock_picking_wave"
|
||||
sequence="3"/>
|
||||
|
||||
<menuitem name="Cluster Picking"
|
||||
id="ventor_cluster_picking_app_menu"
|
||||
parent="ventor_base.ventor_settings_app_menu"
|
||||
action="ventor_cluster_picking_action"
|
||||
sequence="4"/>
|
||||
|
||||
<menuitem name="Internal Transfers"
|
||||
id="ventor_internal_transfers_app_menu"
|
||||
parent="ventor_base.ventor_settings_app_menu"
|
||||
action="ventor_internal_transfers_action"
|
||||
sequence="5"/>
|
||||
|
||||
<menuitem name="Putaway"
|
||||
id="ventor_putaway_app_menu"
|
||||
parent="ventor_base.ventor_settings_app_menu"
|
||||
action="ventor_putaway_action"
|
||||
sequence="6"/>
|
||||
|
||||
<menuitem name="Inventory Adjustments"
|
||||
id="ventor_inventory_adjustments_app_menu"
|
||||
parent="ventor_base.ventor_settings_app_menu"
|
||||
action="ventor_inventory_adjustments_action"
|
||||
sequence="7"/>
|
||||
|
||||
<menuitem name="Instant Inventory"
|
||||
id="ventor_instant_inventory_app_menu"
|
||||
parent="ventor_base.ventor_settings_app_menu"
|
||||
action="ventor_instant_inventory_action"
|
||||
sequence="8"/>
|
||||
|
||||
<menuitem name="Quick info"
|
||||
id="ventor_quick_info_app_menu"
|
||||
parent="ventor_base.ventor_settings_app_menu"
|
||||
action="ventor_quick_info_action"
|
||||
sequence="9"/>
|
||||
|
||||
<menuitem name="Scrap Management"
|
||||
id="ventor_scrap_management_app_menu"
|
||||
parent="ventor_base.ventor_settings_app_menu"
|
||||
action="ventor_scrap_management_action"
|
||||
sequence="10"/>
|
||||
|
||||
<menuitem name="Create SO"
|
||||
id="ventor_create_so_app_menu"
|
||||
parent="ventor_base.ventor_settings_app_menu"
|
||||
action="ventor_create_so_action"
|
||||
sequence="11"/>
|
||||
|
||||
<menuitem name="Create PO"
|
||||
id="ventor_create_po_app_menu"
|
||||
parent="ventor_base.ventor_settings_app_menu"
|
||||
action="ventor_create_po_action"
|
||||
sequence="12"/>
|
||||
</data>
|
||||
</odoo>
|
||||