[REM] sale_planner_delivery_route: available in professional

H14528
This commit is contained in:
Mayank Patel
2024-09-11 05:51:04 +00:00
parent 5ba2ef2ac6
commit 8c16e062e8
12 changed files with 0 additions and 206 deletions

View File

@@ -1,15 +0,0 @@
**************************************************
Hibou - Sale Planner with Warehouse Delivery Route
**************************************************
Calculates the closest delivery route during order planning.
For more information and add-ons, visit `Hibou.io <https://hibou.io/>`_.
=======
License
=======
Please see `LICENSE <https://github.com/hibou-io/hibou-odoo-suite/blob/master/LICENSE>`_.
Copyright Hibou Corp. 2018

View File

@@ -1,2 +0,0 @@
from . import wizard
from . import models

View File

@@ -1,29 +0,0 @@
{
'name': 'Sale Order Planner - Delivery Route',
'summary': 'Plans to the closest delivery route.',
'version': '15.0.1.0.0',
'author': "Hibou Corp.",
'category': 'Sale',
'license': 'LGPL-3',
'complexity': 'expert',
'images': [],
'website': "https://hibou.io",
'description': """
Sale Order Planner - Delivery Route
===================================
Plans to the closest delivery route.
""",
'depends': [
'stock_delivery_route',
'sale_planner',
],
'demo': [],
'data': [
'wizard/order_planner_views.xml',
'views/stock_views.xml',
],
'auto_install': True,
'installable': True,
}

View File

@@ -1,46 +0,0 @@
# Translation of Odoo Server.
# This file contains the translation of the following modules:
# * sale_planner_delivery_route
#
msgid ""
msgstr ""
"Project-Id-Version: Odoo Server 15.0+e\n"
"Report-Msgid-Bugs-To: \n"
"POT-Creation-Date: 2021-10-12 01:40+0000\n"
"PO-Revision-Date: 2021-10-12 01:40+0000\n"
"Last-Translator: \n"
"Language-Team: \n"
"MIME-Version: 1.0\n"
"Content-Type: text/plain; charset=UTF-8\n"
"Content-Transfer-Encoding: \n"
"Plural-Forms: \n"
#. module: sale_planner_delivery_route
#: model:ir.model.fields,field_description:sale_planner_delivery_route.field_sale_order_planning_option__delivery_route_id
msgid "Delivery Route"
msgstr "Ruta de Entrega"
#. module: sale_planner_delivery_route
#: model:ir.model.fields,field_description:sale_planner_delivery_route.field_stock_warehouse_delivery_route__latitude
msgid "Latitude"
msgstr "Latitud"
#. module: sale_planner_delivery_route
#: model:ir.model.fields,field_description:sale_planner_delivery_route.field_stock_warehouse_delivery_route__longitude
msgid "Longitude"
msgstr "Longitud"
#. module: sale_planner_delivery_route
#: model:ir.model,name:sale_planner_delivery_route.model_sale_order_planning_option
msgid "Order Planning Option"
msgstr "Opciones del planificador de Pedidos"
#. module: sale_planner_delivery_route
#: model:ir.model,name:sale_planner_delivery_route.model_sale_order_make_plan
msgid "Plan Order"
msgstr "Planificar Orden"
#. module: sale_planner_delivery_route
#: model:ir.model,name:sale_planner_delivery_route.model_stock_warehouse_delivery_route
msgid "stock.warehouse.delivery.route"
msgstr "stock.warehouse.delivery.route"

View File

@@ -1 +0,0 @@
from . import stock

View File

@@ -1,8 +0,0 @@
from odoo import fields, models
class DeliveryRoute(models.Model):
_inherit = 'stock.warehouse.delivery.route'
latitude = fields.Float(string='Latitude', digits=(12, 6))
longitude = fields.Float(string='Longitude', digits=(12, 6))

View File

@@ -1 +0,0 @@
from . import test_planner

View File

@@ -1,34 +0,0 @@
from odoo.addons.sale_planner.tests.test_planner import TestPlanner
class TestPlannerRoute(TestPlanner):
def setUp(self):
super(TestPlannerRoute, self).setUp()
self.route_near = self.env['stock.warehouse.delivery.route'].create({
'name': 'Route 1',
'warehouse_id': self.warehouse_1.id,
'latitude': 48.02995,
'longitude': -122.14771,
})
self.route_far = self.env['stock.warehouse.delivery.route'].create({
'name': 'Route Far',
'warehouse_id': self.warehouse_1.id,
'latitude': 47.82093,
'longitude': -122.31513,
})
def test_planner_creation(self):
self.env['sale.order.line'].create({
'order_id': self.so.id,
'product_id': self.product_1.id,
'name': 'demo',
})
both_wh_ids = self.both_wh_ids()
planner = self.env['sale.order.make.plan'].with_context(warehouse_domain=[('id', 'in', both_wh_ids)],
skip_plan_shipping=True).create({'order_id': self.so.id})
self.assertTrue(planner.planning_option_ids, 'Must have one or more plans.')
self.assertEqual(planner.planning_option_ids.delivery_route_id, self.route_near)
self.so.partner_id.partner_latitude = 47.82093
planner = self.env['sale.order.make.plan'].with_context(warehouse_domain=[('id', 'in', both_wh_ids)],
skip_plan_shipping=True).create({'order_id': self.so.id})
self.assertEqual(planner.planning_option_ids.delivery_route_id, self.route_far)

View File

@@ -1,18 +0,0 @@
<?xml version="1.0" encoding="UTF-8"?>
<odoo>
<record id="view_warehouse_inherit" model="ir.ui.view">
<field name="name">stock.warehouse.inherit</field>
<field name="model">stock.warehouse</field>
<field name="inherit_id" ref="stock_delivery_route.view_warehouse_inherit" />
<field name="arch" type="xml">
<xpath expr="//field[@name='delivery_route_ids']/tree" position="inside">
<field name="latitude"/>
<field name="longitude"/>
</xpath>
<xpath expr="//field[@name='delivery_route_ids']/form//field[@name='warehouse_id']" position="after">
<field name="latitude"/>
<field name="longitude"/>
</xpath>
</field>
</record>
</odoo>

View File

@@ -1 +0,0 @@
from . import order_planner

View File

@@ -1,38 +0,0 @@
from odoo import api, fields, models
from odoo.addons.sale_planner.wizard.order_planner import distance
class SaleOrderMakePlan(models.TransientModel):
_inherit = 'sale.order.make.plan'
def generate_base_option(self, order_fake):
option = super(SaleOrderMakePlan, self).generate_base_option(order_fake)
option['delivery_route_id'] = self.find_closest_route(option, order_fake)
return option
def find_closest_route(self, option, order_fake):
warehouse = self.env['stock.warehouse'].browse(option['warehouse_id'])
if warehouse.delivery_route_ids:
partner = order_fake.partner_shipping_id
if not partner.date_localization:
partner.geo_localize()
return self._find_closest_route_id(warehouse.delivery_route_ids,
partner.partner_latitude,
partner.partner_longitude)
return False
def _find_closest_route_id(self, routes, latitude, longitude):
distances = {distance(latitude, longitude, route.latitude, route.longitude): route.id for route in routes}
route_id = distances[min(distances)]
return route_id
def _order_fields_for_option(self, option):
vals = super(SaleOrderMakePlan, self)._order_fields_for_option(option)
vals['delivery_route_id'] = option.delivery_route_id.id
return vals
class SaleOrderPlanningOption(models.TransientModel):
_inherit = 'sale.order.planning.option'
delivery_route_id = fields.Many2one('stock.warehouse.delivery.route', string='Delivery Route')

View File

@@ -1,13 +0,0 @@
<?xml version="1.0" encoding="UTF-8"?>
<odoo>
<record id="view_plan_sale_order_inherit" model="ir.ui.view">
<field name="name">view.plan.sale.order.inherit</field>
<field name="model">sale.order.make.plan</field>
<field name="inherit_id" ref="sale_planner.view_plan_sale_order"/>
<field name="arch" type="xml">
<xpath expr="//field[@name='warehouse_id']" position="after">
<field name="delivery_route_id"/>
</xpath>
</field>
</record>
</odoo>