[IMP] mrp_subcontracting_dropshipping: Add new route
Added 'Dropship Subcontractor on Order' route to simplify user interaction and stay tuned with 'Resupply Subcontractor on Order'. Task: 2444742 Part-of: odoo/odoo#71732
This commit is contained in:
@@ -93,7 +93,7 @@ class StockPicking(models.Model):
|
||||
return self.move_lines.filtered(lambda move: move.is_subcontract).move_orig_ids.production_id
|
||||
|
||||
def _get_warehouse(self, subcontract_move):
|
||||
return subcontract_move.warehouse_id or self.picking_type_id.warehouse_id
|
||||
return subcontract_move.warehouse_id or self.picking_type_id.warehouse_id or subcontract_move.move_dest_ids.picking_type_id.warehouse_id
|
||||
|
||||
def _prepare_subcontract_mo_vals(self, subcontract_move, bom):
|
||||
subcontract_move.ensure_one()
|
||||
|
||||
@@ -10,6 +10,10 @@
|
||||
This bridge module allows to manage subcontracting with the dropshipping module.
|
||||
""",
|
||||
'depends': ['mrp_subcontracting', 'stock_dropshipping'],
|
||||
'data': [
|
||||
'data/mrp_subcontracting_dropshipping_data.xml',
|
||||
'views/stock_warehouse_views.xml',
|
||||
],
|
||||
'installable': True,
|
||||
'auto_install': True,
|
||||
'license': 'LGPL-3',
|
||||
|
||||
@@ -0,0 +1,20 @@
|
||||
<?xml version="1.0"?>
|
||||
<odoo>
|
||||
<data noupdate="1">
|
||||
|
||||
<record id="route_subcontracting_dropshipping" model='stock.location.route'>
|
||||
<field name="name">Dropship Subcontractor on Order</field>
|
||||
<field name="sequence">5</field>
|
||||
<field name="company_id"></field>
|
||||
<field name="product_selectable" eval="True"/>
|
||||
</record>
|
||||
|
||||
<function model="res.company" name="create_missing_subcontracting_dropshipping_rules"/>
|
||||
|
||||
<function model="stock.warehouse" name="write">
|
||||
<value model="stock.warehouse" eval="obj().env['stock.warehouse'].search([]).ids"/>
|
||||
<value eval="{'subcontracting_dropshipping_to_resupply': True}"/>
|
||||
</function>
|
||||
|
||||
</data>
|
||||
</odoo>
|
||||
@@ -2,3 +2,5 @@
|
||||
# Part of Odoo. See LICENSE file for full copyright and licensing details.
|
||||
|
||||
from . import stock_picking
|
||||
from . import res_company
|
||||
from . import stock_warehouse
|
||||
|
||||
@@ -0,0 +1,46 @@
|
||||
# -*- coding: utf-8 -*-
|
||||
# Part of Odoo. See LICENSE file for full copyright and licensing details.
|
||||
|
||||
from odoo import api, models
|
||||
|
||||
|
||||
class ResCompany(models.Model):
|
||||
_inherit = 'res.company'
|
||||
|
||||
def _create_subcontracting_dropshipping_rules(self):
|
||||
route = self.env.ref('mrp_subcontracting_dropshipping.route_subcontracting_dropshipping')
|
||||
supplier_location = self.env.ref('stock.stock_location_suppliers')
|
||||
vals = []
|
||||
for company in self:
|
||||
subcontracting_location = company.subcontracting_location_id
|
||||
dropship_picking_type = self.env['stock.picking.type'].search([
|
||||
('company_id', '=', company.id),
|
||||
('default_location_src_id.usage', '=', 'supplier'),
|
||||
('default_location_dest_id.usage', '=', 'customer'),
|
||||
], limit=1, order='sequence')
|
||||
if dropship_picking_type:
|
||||
vals.append({
|
||||
'name': '%s → %s' % (supplier_location.name, subcontracting_location.name),
|
||||
'action': 'buy',
|
||||
'location_id': subcontracting_location.id,
|
||||
'location_src_id': supplier_location.id,
|
||||
'procure_method': 'make_to_stock',
|
||||
'route_id': route.id,
|
||||
'picking_type_id': dropship_picking_type.id,
|
||||
'company_id': company.id,
|
||||
})
|
||||
if vals:
|
||||
self.env['stock.rule'].create(vals)
|
||||
|
||||
@api.model
|
||||
def create_missing_subcontracting_dropshipping_rules(self):
|
||||
route = self.env.ref('mrp_subcontracting_dropshipping.route_subcontracting_dropshipping')
|
||||
company_ids = self.env['res.company'].search([])
|
||||
company_has_rules = self.env['stock.rule'].search([('route_id', '=', route.id)]).mapped('company_id')
|
||||
company_todo_rules = company_ids - company_has_rules
|
||||
company_todo_rules._create_subcontracting_dropshipping_rules()
|
||||
|
||||
def _create_per_company_rules(self):
|
||||
res = super()._create_per_company_rules()
|
||||
self.create_missing_subcontracting_dropshipping_rules()
|
||||
return res
|
||||
@@ -0,0 +1,42 @@
|
||||
# -*- coding: utf-8 -*-
|
||||
# Part of Odoo. See LICENSE file for full copyright and licensing details.
|
||||
|
||||
from odoo import fields, models, _
|
||||
|
||||
|
||||
class StockWarehouse(models.Model):
|
||||
_inherit = 'stock.warehouse'
|
||||
|
||||
subcontracting_dropshipping_to_resupply = fields.Boolean(
|
||||
'Dropship Subcontractors', default=True,
|
||||
help="Dropship subcontractors with components")
|
||||
|
||||
subcontracting_dropshipping_pull_id = fields.Many2one(
|
||||
'stock.rule', 'Subcontracting-Dropshipping MTS Rule'
|
||||
)
|
||||
|
||||
def _get_global_route_rules_values(self):
|
||||
rules = super()._get_global_route_rules_values()
|
||||
subcontract_location_id = self._get_subcontracting_location()
|
||||
production_location_id = self._get_production_location()
|
||||
rules.update({
|
||||
'subcontracting_dropshipping_pull_id': {
|
||||
'depends': ['subcontracting_dropshipping_to_resupply'],
|
||||
'create_values': {
|
||||
'procure_method': 'make_to_order',
|
||||
'company_id': self.company_id.id,
|
||||
'action': 'pull',
|
||||
'auto': 'manual',
|
||||
'route_id': self._find_global_route('mrp_subcontracting_dropshipping.route_subcontracting_dropshipping',
|
||||
_('Dropship Subcontractor on Order')).id,
|
||||
'name': self._format_rulename(subcontract_location_id, production_location_id, False),
|
||||
'location_id': production_location_id.id,
|
||||
'location_src_id': subcontract_location_id.id,
|
||||
'picking_type_id': self.subcontracting_type_id.id
|
||||
},
|
||||
'update_values': {
|
||||
'active': self.subcontracting_dropshipping_to_resupply
|
||||
}
|
||||
},
|
||||
})
|
||||
return rules
|
||||
@@ -0,0 +1,13 @@
|
||||
<?xml version="1.0" encoding="utf-8"?>
|
||||
<odoo>
|
||||
<record id="view_warehouse_inherit_mrp_subcontracting_dropshipping" model="ir.ui.view">
|
||||
<field name="name">Stock Warehouse Inherit Subcontracting Dropshipping</field>
|
||||
<field name="model">stock.warehouse</field>
|
||||
<field name="inherit_id" ref="mrp_subcontracting.view_warehouse_inherit_mrp_subcontracting"/>
|
||||
<field name="arch" type="xml">
|
||||
<xpath expr="//field[@name='subcontracting_to_resupply']" position="before">
|
||||
<field name="subcontracting_dropshipping_to_resupply" />
|
||||
</xpath>
|
||||
</field>
|
||||
</record>
|
||||
</odoo>
|
||||
Reference in New Issue
Block a user