2018-01-16 06:58:15 +01:00
# -*- coding: utf-8 -*-
2018-01-16 11:34:37 +01:00
# Part of Odoo, Flectra. See LICENSE file for full copyright and licensing details.
2018-01-16 06:58:15 +01:00
2018-01-16 11:34:37 +01:00
from flectra import api , fields , models
2018-01-16 06:58:15 +01:00
class ResConfigSettings ( models . TransientModel ) :
_inherit = ' res.config.settings '
module_procurement_jit = fields . Selection ( [
( 1 , ' Immediately after sales order confirmation ' ) ,
( 0 , ' Manually or based on automatic scheduler ' )
] , " Reservation " ,
help = " Reserving products manually in delivery orders or by running the scheduler is advised to better manage priorities in case of long customer lead times or/and frequent stock-outs. " )
module_product_expiry = fields . Boolean ( " Expiration Dates " ,
help = " Track following dates on lots & serial numbers: best before, removal, end of life, alert. \n Such dates are set automatically at lot/serial number creation based on values set on the product (in days). " )
group_stock_production_lot = fields . Boolean ( " Lots & Serial Numbers " ,
implied_group = ' stock.group_production_lot ' )
group_stock_tracking_lot = fields . Boolean ( " Delivery Packages " ,
implied_group = ' stock.group_tracking_lot ' )
group_stock_tracking_owner = fields . Boolean ( " Consignment " ,
implied_group = ' stock.group_tracking_owner ' )
group_stock_adv_location = fields . Boolean ( " Multi-Step Routes " ,
implied_group = ' stock.group_adv_location ' ,
help = " Add and customize route operations to process product moves in your warehouse(s): e.g. unload > quality control > stock for incoming products, pick > pack > ship for outgoing products. \n You can also set putaway strategies on warehouse locations in order to send incoming products into specific child locations straight away (e.g. specific bins, racks). " )
group_warning_stock = fields . Boolean ( " Warnings " , implied_group = ' stock.group_warning_stock ' )
propagation_minimum_delta = fields . Integer ( related = ' company_id.propagation_minimum_delta ' , string = " No Rescheduling Propagation " )
use_propagation_minimum_delta = fields . Boolean (
string = " No Rescheduling Propagation " ,
oldname = ' default_new_propagation_minimum_delta ' ,
help = " Rescheduling applies to any chain of operations (e.g. Make To Order, Pick Pack Ship). In the case of MTO sales, a vendor delay (updated incoming date) impacts the expected delivery date to the customer. \n This option allows to not propagate the rescheduling if the change is not critical. " )
module_stock_picking_batch = fields . Boolean ( " Batch Pickings " , oldname = " module_stock_picking_wave " )
group_stock_multi_locations = fields . Boolean ( ' Storage Locations ' , implied_group = ' stock.group_stock_multi_locations ' ,
help = " Store products in specific locations of your warehouse (e.g. bins, racks) and to track inventory accordingly. " )
group_stock_multi_warehouses = fields . Boolean ( ' Multi-Warehouses ' , implied_group = ' stock.group_stock_multi_warehouses ' )
@api.onchange ( ' use_propagation_minimum_delta ' )
def _onchange_use_propagation_minimum_delta ( self ) :
if not self . use_propagation_minimum_delta :
self . propagation_minimum_delta = 1
@api.onchange ( ' group_stock_multi_locations ' )
def _onchange_group_stock_multi_locations ( self ) :
if not self . group_stock_multi_locations :
self . group_stock_multi_warehouses = False
self . group_stock_adv_location = False
@api.onchange ( ' group_stock_multi_warehouses ' )
def _onchange_group_stock_multi_warehouses ( self ) :
if self . group_stock_multi_warehouses :
self . group_stock_multi_locations = True
@api.onchange ( ' group_stock_adv_location ' )
def onchange_adv_location ( self ) :
if self . group_stock_adv_location and not self . group_stock_multi_locations :
self . group_stock_multi_locations = True
@api.model
def get_values ( self ) :
res = super ( ResConfigSettings , self ) . get_values ( )
res . update (
use_propagation_minimum_delta = self . env [ ' ir.config_parameter ' ] . sudo ( ) . get_param ( ' stock.use_propagation_minimum_delta ' )
)
return res
@api.multi
def set_values ( self ) :
super ( ResConfigSettings , self ) . set_values ( )
if not self . user_has_groups ( ' stock.group_stock_manager ' ) :
return
self . env [ ' ir.config_parameter ' ] . sudo ( ) . set_param ( ' stock.use_propagation_minimum_delta ' , self . use_propagation_minimum_delta )
""" If we are not in multiple locations, we can deactivate the internal
operation types of the warehouses , so they won ' t appear in the dashboard.
Otherwise , activate them .
"""
2018-04-05 10:25:40 +02:00
warehouse_obj = self . env [ ' stock.warehouse ' ]
2018-01-16 06:58:15 +01:00
if self . group_stock_multi_locations :
2018-04-05 10:25:40 +02:00
# override active_test that is false in set_values
warehouses = warehouse_obj . with_context ( active_test = True ) . search ( [ ] )
2018-01-16 06:58:15 +01:00
active = True
else :
2018-04-05 10:25:40 +02:00
warehouses = warehouse_obj . search ( [
2018-01-16 06:58:15 +01:00
( ' reception_steps ' , ' = ' , ' one_step ' ) ,
( ' delivery_steps ' , ' = ' , ' ship_only ' ) ] )
active = False
warehouses . mapped ( ' int_type_id ' ) . write ( { ' active ' : active } )