[IMP] mrp_subcontracting_dropshipping: subcontract dropship address
This commit shows the user Dropship address field in the PO when subcontractor resupply is done with dropshipping mechanism. closes odoo/odoo#95770 Related: odoo/upgrade#3852 Signed-off-by: Tiffany Chang <tic@odoo.com>
This commit is contained in:
@@ -13,6 +13,7 @@
|
||||
'data': [
|
||||
'data/mrp_subcontracting_dropshipping_data.xml',
|
||||
'views/stock_warehouse_views.xml',
|
||||
'views/purchase_order_views.xml',
|
||||
],
|
||||
'installable': True,
|
||||
'auto_install': True,
|
||||
|
||||
@@ -6,3 +6,4 @@ from . import res_company
|
||||
from . import stock_warehouse
|
||||
from . import purchase
|
||||
from . import stock_rule
|
||||
from . import stock_orderpoint
|
||||
|
||||
@@ -1,13 +1,23 @@
|
||||
# -*- coding: utf-8 -*-
|
||||
# Part of Odoo. See LICENSE file for full copyright and licensing details.
|
||||
|
||||
from odoo import models, _
|
||||
from odoo import api, fields, models, _
|
||||
from odoo.exceptions import UserError
|
||||
|
||||
|
||||
class PurchaseOrder(models.Model):
|
||||
_inherit = 'purchase.order'
|
||||
|
||||
default_location_dest_id_is_subcontracting_loc = fields.Boolean(related='picking_type_id.default_location_dest_id.is_subcontracting_location')
|
||||
|
||||
@api.depends('default_location_dest_id_is_subcontracting_loc')
|
||||
def _compute_dest_address_id(self):
|
||||
dropship_subcontract_pos = self.filtered(lambda po: po.default_location_dest_id_is_subcontracting_loc)
|
||||
for order in dropship_subcontract_pos:
|
||||
subcontractor_ids = order.picking_type_id.default_location_dest_id.subcontractor_ids
|
||||
order.dest_address_id = subcontractor_ids if len(subcontractor_ids) == 1 else False
|
||||
super(PurchaseOrder, self - dropship_subcontract_pos)._compute_dest_address_id()
|
||||
|
||||
def _get_destination_location(self):
|
||||
self.ensure_one()
|
||||
if not self.dest_address_id:
|
||||
|
||||
@@ -0,0 +1,15 @@
|
||||
# -*- encoding: utf-8 -*-
|
||||
# Part of Odoo. See LICENSE file for full copyright and licensing details.
|
||||
|
||||
from odoo import models
|
||||
|
||||
|
||||
class StockWarehouseOrderpoint(models.Model):
|
||||
_inherit = 'stock.warehouse.orderpoint'
|
||||
|
||||
def _prepare_procurement_values(self, date=False, group=False):
|
||||
vals = super()._prepare_procurement_values(date, group)
|
||||
if not vals.get('partner_id') and self.location_id.is_subcontracting_location:
|
||||
subcontractors = self.location_id.subcontractor_ids
|
||||
vals['partner_id'] = subcontractors.id if len(subcontractors) == 1 else False
|
||||
return vals
|
||||
@@ -7,6 +7,11 @@ from odoo import models
|
||||
class StockPicking(models.Model):
|
||||
_inherit = 'stock.picking'
|
||||
|
||||
def _compute_is_dropship(self):
|
||||
dropship_subcontract_pickings = self.filtered(lambda p: p.location_dest_id.is_subcontracting_location and p.location_id.usage == 'supplier')
|
||||
dropship_subcontract_pickings.is_dropship = True
|
||||
super(StockPicking, self - dropship_subcontract_pickings)._compute_is_dropship()
|
||||
|
||||
def _get_warehouse(self, subcontract_move):
|
||||
if subcontract_move.sale_line_id:
|
||||
return subcontract_move.sale_line_id.order_id.warehouse_id
|
||||
|
||||
@@ -11,3 +11,9 @@ class StockRule(models.Model):
|
||||
if 'partner_id' not in values[0] and self.location_dest_id.is_subcontracting_location:
|
||||
values[0]['partner_id'] = values[0]['group_id'].partner_id.id
|
||||
return super()._prepare_purchase_order(company_id, origins, values)
|
||||
|
||||
def _make_po_get_domain(self, company_id, values, partner):
|
||||
domain = super()._make_po_get_domain(company_id, values, partner)
|
||||
if values.get('partner_id', False):
|
||||
domain += (('dest_address_id', '=', values.get('partner_id')),)
|
||||
return domain
|
||||
|
||||
@@ -0,0 +1,16 @@
|
||||
<odoo>
|
||||
<record id="view_purchase_order_inherit" model="ir.ui.view">
|
||||
<field name="name">Purchase Order Inherit Dropship Subcontractor</field>
|
||||
<field name="model">purchase.order</field>
|
||||
<field name="inherit_id" ref="purchase.purchase_order_form"/>
|
||||
<field name="arch" type="xml">
|
||||
<field name="dest_address_id" position="before">
|
||||
<field name="default_location_dest_id_is_subcontracting_loc" invisible="1"/>
|
||||
</field>
|
||||
<field name="dest_address_id" position="attributes">
|
||||
<attribute name="attrs">{'invisible': [('default_location_dest_id_usage', '!=', 'customer'), ('default_location_dest_id_is_subcontracting_loc', '=', False)],
|
||||
'required': ['|', ('default_location_dest_id_usage', '=', 'customer'), ('default_location_dest_id_is_subcontracting_loc', '=', True)]}</attribute>
|
||||
</field>
|
||||
</field>
|
||||
</record>
|
||||
</odoo>
|
||||
Reference in New Issue
Block a user