stock_dropshipping/models/res_company.py

121 lines
5.0 KiB
Python

# -*- 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'
# -------------------------------------------------------------------------
# Sequences
# -------------------------------------------------------------------------
def _create_dropship_sequence(self):
dropship_vals = []
for company in self:
dropship_vals.append({
'name': 'Dropship (%s)' % company.name,
'code': 'stock.dropshipping',
'company_id': company.id,
'prefix': 'DS/',
'padding': 5,
})
if dropship_vals:
self.env['ir.sequence'].create(dropship_vals)
@api.model
def create_missing_dropship_sequence(self):
company_ids = self.env['res.company'].search([])
company_has_dropship_seq = self.env['ir.sequence'].search([('code', '=', 'stock.dropshipping')]).mapped('company_id')
company_todo_sequence = company_ids - company_has_dropship_seq
company_todo_sequence._create_dropship_sequence()
def _create_per_company_sequences(self):
super(ResCompany, self)._create_per_company_sequences()
self._create_dropship_sequence()
# -------------------------------------------------------------------------
# Picking types
# -------------------------------------------------------------------------
def _create_dropship_picking_type(self):
dropship_vals = []
for company in self:
sequence = self.env['ir.sequence'].search([
('code', '=', 'stock.dropshipping'),
('company_id', '=', company.id),
])
dropship_vals.append({
'name': 'Dropship',
'company_id': company.id,
'warehouse_id': False,
'sequence_id': sequence.id,
'code': 'dropship',
'default_location_src_id': self.env.ref('stock.stock_location_suppliers').id,
'default_location_dest_id': self.env.ref('stock.stock_location_customers').id,
'sequence_code': 'DS',
'use_existing_lots': False,
})
if dropship_vals:
self.env['stock.picking.type'].create(dropship_vals)
@api.model
def create_missing_dropship_picking_type(self):
company_ids = self.env['res.company'].search([])
company_has_dropship_picking_type = (
self.env['stock.picking.type']
.search([
('default_location_src_id.usage', '=', 'supplier'),
('default_location_dest_id.usage', '=', 'customer'),
])
.mapped('company_id')
)
company_todo_picking_type = company_ids - company_has_dropship_picking_type
company_todo_picking_type._create_dropship_picking_type()
def _create_per_company_picking_types(self):
super(ResCompany, self)._create_per_company_picking_types()
self._create_dropship_picking_type()
# -------------------------------------------------------------------------
# Stock rules
# -------------------------------------------------------------------------
def _create_dropship_rule(self):
dropship_route = self.env.ref('stock_dropshipping.route_drop_shipping')
supplier_location = self.env.ref('stock.stock_location_suppliers')
customer_location = self.env.ref('stock.stock_location_customers')
dropship_vals = []
for company in self:
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 not dropship_picking_type:
continue
dropship_vals.append({
'name': '%s%s' % (supplier_location.name, customer_location.name),
'action': 'buy',
'location_dest_id': customer_location.id,
'location_src_id': supplier_location.id,
'procure_method': 'make_to_stock',
'route_id': dropship_route.id,
'picking_type_id': dropship_picking_type.id,
'company_id': company.id,
})
if dropship_vals:
self.env['stock.rule'].create(dropship_vals)
@api.model
def create_missing_dropship_rule(self):
dropship_route = self.env.ref('stock_dropshipping.route_drop_shipping')
company_ids = self.env['res.company'].search([])
company_has_dropship_rule = self.env['stock.rule'].search([('route_id', '=', dropship_route.id)]).mapped('company_id')
company_todo_rule = company_ids - company_has_dropship_rule
company_todo_rule._create_dropship_rule()
def _create_per_company_rules(self):
super(ResCompany, self)._create_per_company_rules()
self._create_dropship_rule()