[IMP] stock_delivery_planner: per-warehouse carriers, do not allow creating carrier from selection

This commit is contained in:
Jared Kipe
2021-11-04 12:11:38 -07:00
parent 6bbffa80d3
commit c44df3a750
5 changed files with 32 additions and 9 deletions

View File

@@ -48,3 +48,11 @@ class StockPicking(models.Model):
domain.extend(tools.safe_eval(irconfig_parameter.get_param('sale.order.planner.carrier_domain'))) domain.extend(tools.safe_eval(irconfig_parameter.get_param('sale.order.planner.carrier_domain')))
return Carrier.search(domain) return Carrier.search(domain)
class Warehouse(models.Model):
_inherit = 'stock.warehouse'
delivery_planner_carrier_ids = fields.Many2many('delivery.carrier',
string='Delivery Planner Base Carriers',
help='Overrides the global carriers.')

View File

@@ -18,7 +18,7 @@
For example, you should add 1 FedEx carrier here and let us build up the For example, you should add 1 FedEx carrier here and let us build up the
rates for your other FedEx shipping methods. rates for your other FedEx shipping methods.
</div> </div>
<field name="stock_delivery_planner_base_carrier_ids" class="oe_inline" /> <field name="stock_delivery_planner_base_carrier_ids" class="oe_inline" options="{'no_create_edit': True, 'no_create': True}" />
</div> </div>
</div> </div>
</xpath> </xpath>

View File

@@ -1,5 +1,6 @@
<?xml version="1.0" encoding="UTF-8" ?> <?xml version="1.0" encoding="UTF-8" ?>
<odoo> <odoo>
<record id="view_picking_form" model="ir.ui.view"> <record id="view_picking_form" model="ir.ui.view">
<field name="name">stock.picking.form.inherit.delivery.planner</field> <field name="name">stock.picking.form.inherit.delivery.planner</field>
<field name="model">stock.picking</field> <field name="model">stock.picking</field>
@@ -10,4 +11,16 @@
</xpath> </xpath>
</field> </field>
</record> </record>
<record id="view_warehouse_delivery_carriers" model="ir.ui.view">
<field name="name">stock.warehouse.delivery.carriers</field>
<field name="model">stock.warehouse</field>
<field name="inherit_id" ref="stock.view_warehouse" />
<field name="arch" type="xml">
<xpath expr="//field[@name='partner_id']" position="after">
<field name="delivery_planner_carrier_ids" options="{'no_create_edit': True, 'no_create': True}" />
</xpath>
</field>
</record>
</odoo> </odoo>

View File

@@ -26,14 +26,15 @@ class StockDeliveryPlanner(models.TransientModel):
def create(self, values): def create(self, values):
planner = super(StockDeliveryPlanner, self).create(values) planner = super(StockDeliveryPlanner, self).create(values)
base_carriers = self.env['delivery.carrier'] base_carriers = planner.picking_id.picking_type_id.warehouse_id.delivery_planner_carrier_ids
carrier_ids = self.env['ir.config_parameter'].sudo().get_param('stock.delivery.planner.carrier_ids.%s' % (self.env.user.company_id.id, )) if not base_carriers:
if carrier_ids: carrier_ids = self.env['ir.config_parameter'].sudo().get_param('stock.delivery.planner.carrier_ids.%s' % (self.env.user.company_id.id, ))
try: if carrier_ids:
carrier_ids = [int(c) for c in carrier_ids.split(',')] try:
base_carriers = base_carriers.browse(carrier_ids) carrier_ids = [int(c) for c in carrier_ids.split(',')]
except: base_carriers = base_carriers.browse(carrier_ids)
pass except:
pass
for carrier in base_carriers: for carrier in base_carriers:
rates = carrier.rate_shipment_multi(picking=planner.picking_id) rates = carrier.rate_shipment_multi(picking=planner.picking_id)

View File

@@ -11,6 +11,7 @@
<field name="plan_option_ids" nolabel="1"> <field name="plan_option_ids" nolabel="1">
<tree decoration-info="selection == 'selected'" <tree decoration-info="selection == 'selected'"
decoration-muted="selection == 'deselected'" decoration-muted="selection == 'deselected'"
decoration-bf="days_different == 0.0"
default_order="package_id, price" default_order="package_id, price"
create="false" edit="false" delete="false"> create="false" edit="false" delete="false">
<field name="package_id" /> <field name="package_id" />