diff --git a/stock_delivery_planner/__init__.py b/stock_delivery_planner/__init__.py
deleted file mode 100644
index c7120225..00000000
--- a/stock_delivery_planner/__init__.py
+++ /dev/null
@@ -1,4 +0,0 @@
-# Part of Hibou Suite Professional. See LICENSE_PROFESSIONAL file for full copyright and licensing details.
-
-from . import models
-from . import wizard
diff --git a/stock_delivery_planner/__manifest__.py b/stock_delivery_planner/__manifest__.py
deleted file mode 100644
index e492403b..00000000
--- a/stock_delivery_planner/__manifest__.py
+++ /dev/null
@@ -1,29 +0,0 @@
-{
- 'name': 'Stock Delivery Planner',
- 'summary': 'Get rates and choose carrier for delivery.',
- 'version': '15.0.1.1.0',
- 'author': "Hibou Corp.",
- 'category': 'Warehouse',
- 'license': 'OPL-1',
- 'website': "https://hibou.io",
- 'description': """
-Stock Delivery Planner
-======================
-
-Re-rate deliveries at packing time to find lowest-priced delivery method that still meets the expected delivery date.
-
-""",
- 'depends': [
- 'delivery_hibou',
- 'sale_planner',
- 'stock',
- ],
- 'data': [
- 'security/ir.model.access.csv',
- 'views/res_config_settings_views.xml',
- 'views/stock_views.xml',
- 'wizard/stock_delivery_planner_views.xml',
- ],
- 'auto_install': False,
- 'installable': True,
-}
diff --git a/stock_delivery_planner/i18n/es.po b/stock_delivery_planner/i18n/es.po
deleted file mode 100644
index 9bb03fe8..00000000
--- a/stock_delivery_planner/i18n/es.po
+++ /dev/null
@@ -1,203 +0,0 @@
-# Translation of Odoo Server.
-# This file contains the translation of the following modules:
-# * stock_delivery_planner
-#
-msgid ""
-msgstr ""
-"Project-Id-Version: Odoo Server 15.0+e\n"
-"Report-Msgid-Bugs-To: \n"
-"POT-Creation-Date: 2021-10-12 01:47+0000\n"
-"PO-Revision-Date: 2021-10-12 01:47+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: stock_delivery_planner
-#: model_terms:ir.ui.view,arch_db:stock_delivery_planner.res_config_settings_view_form
-msgid ""
-"Add a carrier that represents the 'base rate' for a carrier's type. \n"
-" For example, you should add 1 FedEx carrier here and let us build up the\n"
-" rates for your other FedEx shipping methods."
-msgstr ""
-"Agregar un transportista que representa la 'tarifa base' para el tipo de transportista \n"
-" Por ejemplo, usted debe agregar un transportista de FedEx aquí y dejarnos acumular \n"
-" tarifas para sus otros metodos de envío de FedEx"
-
-#. module: stock_delivery_planner
-#: model:ir.model,name:stock_delivery_planner.model_res_config_settings
-msgid "Config Settings"
-msgstr "Opciones de configuración"
-
-#. module: stock_delivery_planner
-#: model:ir.model.fields,field_description:stock_delivery_planner.field_stock_delivery_planner__create_uid
-#: model:ir.model.fields,field_description:stock_delivery_planner.field_stock_delivery_planner_option__create_uid
-msgid "Created by"
-msgstr "Creado por"
-
-#. module: stock_delivery_planner
-#: model:ir.model.fields,field_description:stock_delivery_planner.field_stock_delivery_planner__create_date
-#: model:ir.model.fields,field_description:stock_delivery_planner.field_stock_delivery_planner_option__create_date
-msgid "Created on"
-msgstr "Creado en"
-
-#. module: stock_delivery_planner
-#: model:ir.model.fields,field_description:stock_delivery_planner.field_stock_delivery_planner_option__days_different
-msgid "Days Different"
-msgstr "Días Diferentes"
-
-#. module: stock_delivery_planner
-#: model:ir.model.fields.selection,name:stock_delivery_planner.selection__stock_delivery_planner_option__selection__deselected
-msgid "De-selected"
-msgstr "Desmarcar Selección"
-
-#. module: stock_delivery_planner
-#: model:ir.model.fields,field_description:stock_delivery_planner.field_stock_delivery_planner_option__carrier_id
-msgid "Delivery Method"
-msgstr "Métodos de Envío"
-
-#. module: stock_delivery_planner
-#: model_terms:ir.ui.view,arch_db:stock_delivery_planner.res_config_settings_view_form
-msgid "Delivery Planner"
-msgstr "Planificador de Entregas"
-
-#. module: stock_delivery_planner
-#: model:ir.model.fields,field_description:stock_delivery_planner.field_res_config_settings__stock_delivery_planner_base_carrier_ids
-msgid "Delivery Planner Base Carriers"
-msgstr "Planificador de Entregas de Transportistas Base"
-
-#. module: stock_delivery_planner
-#: code:addons/stock_delivery_planner/wizard/stock_delivery_planner.py:0
-#, python-format
-msgid "Delivery Rate Planner"
-msgstr "Planificador de Tarifas de Entrega"
-
-#. module: stock_delivery_planner
-#: model_terms:ir.ui.view,arch_db:stock_delivery_planner.view_stock_delivery_planner
-msgid "Discard"
-msgstr "Descartar"
-
-#. module: stock_delivery_planner
-#: model:ir.model.fields,field_description:stock_delivery_planner.field_stock_delivery_planner__display_name
-#: model:ir.model.fields,field_description:stock_delivery_planner.field_stock_delivery_planner_option__display_name
-msgid "Display Name"
-msgstr "Nombre para mostrar"
-
-#. module: stock_delivery_planner
-#: model:ir.model.fields,field_description:stock_delivery_planner.field_stock_delivery_planner_option__requested_date
-msgid "Expected Delivery Date"
-msgstr "Fecha de Entrega Esperada"
-
-#. module: stock_delivery_planner
-#: model:ir.model.fields,field_description:stock_delivery_planner.field_stock_delivery_planner__id
-#: model:ir.model.fields,field_description:stock_delivery_planner.field_stock_delivery_planner_option__id
-msgid "ID"
-msgstr "ID"
-
-#. module: stock_delivery_planner
-#: model:ir.model.fields,field_description:stock_delivery_planner.field_stock_delivery_planner____last_update
-#: model:ir.model.fields,field_description:stock_delivery_planner.field_stock_delivery_planner_option____last_update
-msgid "Last Modified on"
-msgstr "Última Modificación el"
-
-#. module: stock_delivery_planner
-#: model:ir.model.fields,field_description:stock_delivery_planner.field_stock_delivery_planner__write_uid
-#: model:ir.model.fields,field_description:stock_delivery_planner.field_stock_delivery_planner_option__write_uid
-msgid "Last Updated by"
-msgstr "Última Actualización por"
-
-#. module: stock_delivery_planner
-#: model:ir.model.fields,field_description:stock_delivery_planner.field_stock_delivery_planner__write_date
-#: model:ir.model.fields,field_description:stock_delivery_planner.field_stock_delivery_planner_option__write_date
-msgid "Last Updated on"
-msgstr "Última Actualización el"
-
-#. module: stock_delivery_planner
-#: model:ir.model.fields.selection,name:stock_delivery_planner.selection__stock_delivery_planner_option__selection__
-msgid "None"
-msgstr "Ninguno"
-
-#. module: stock_delivery_planner
-#: model:ir.model.fields,field_description:stock_delivery_planner.field_stock_delivery_planner__plan_option_ids
-msgid "Options"
-msgstr "Opciones"
-
-#. module: stock_delivery_planner
-#: model:ir.model.fields,field_description:stock_delivery_planner.field_stock_delivery_planner_option__package_id
-msgid "Package"
-msgstr "Paquete"
-
-#. module: stock_delivery_planner
-#: model:ir.model.fields,field_description:stock_delivery_planner.field_stock_delivery_planner__packages_planned
-msgid "Packages Planned"
-msgstr "Paquetes Planificadas"
-
-#. module: stock_delivery_planner
-#: model:ir.model.fields,field_description:stock_delivery_planner.field_stock_delivery_planner_option__plan_id
-#: model_terms:ir.ui.view,arch_db:stock_delivery_planner.view_stock_delivery_planner
-msgid "Plan"
-msgstr "Planificar"
-
-#. module: stock_delivery_planner
-#: code:addons/stock_delivery_planner/models/stock.py:0
-#, python-format
-msgid "Plan Delivery"
-msgstr "Planificar Entrega"
-
-#. module: stock_delivery_planner
-#: model_terms:ir.ui.view,arch_db:stock_delivery_planner.view_picking_form
-msgid "Plan Shipment"
-msgstr "Planificar Envío"
-
-#. module: stock_delivery_planner
-#: model:ir.model.fields,field_description:stock_delivery_planner.field_stock_delivery_planner_option__date_planned
-msgid "Planned Date"
-msgstr "Fecha Planificada"
-
-#. module: stock_delivery_planner
-#: model:ir.model.fields,field_description:stock_delivery_planner.field_stock_delivery_planner_option__sale_requested_date
-msgid "Sale Order Delivery Date"
-msgstr "Fecha de Entrega del Pedido de Venta"
-
-#. module: stock_delivery_planner
-#: model_terms:ir.ui.view,arch_db:stock_delivery_planner.view_stock_delivery_planner
-msgid "Select"
-msgstr "Seleccionar"
-
-#. module: stock_delivery_planner
-#: model:ir.model.fields.selection,name:stock_delivery_planner.selection__stock_delivery_planner_option__selection__selected
-msgid "Selected"
-msgstr "Seleccionado"
-
-#. module: stock_delivery_planner
-#: model:ir.model.fields,field_description:stock_delivery_planner.field_stock_delivery_planner_option__selection
-msgid "Selection"
-msgstr "Selección"
-
-#. module: stock_delivery_planner
-#: model:ir.model.fields,field_description:stock_delivery_planner.field_stock_delivery_planner_option__price
-msgid "Shipping Price"
-msgstr "Precio de Envío"
-
-#. module: stock_delivery_planner
-#: model:ir.model,name:stock_delivery_planner.model_stock_delivery_planner_option
-msgid "Stock Delivery Planner Option"
-msgstr "Opcion de Planificador de Entrega de Stock"
-
-#. module: stock_delivery_planner
-#: model:ir.model,name:stock_delivery_planner.model_stock_delivery_planner
-msgid "Stock Delivery Planner Wizard"
-msgstr "Asistente de Planificador de Entrega de Stock"
-
-#. module: stock_delivery_planner
-#: model:ir.model,name:stock_delivery_planner.model_stock_picking
-#: model:ir.model.fields,field_description:stock_delivery_planner.field_stock_delivery_planner__picking_id
-msgid "Transfer"
-msgstr "Transferir"
-
-#. module: stock_delivery_planner
-#: model:ir.model.fields,field_description:stock_delivery_planner.field_stock_delivery_planner_option__transit_days
-msgid "Transit Days"
-msgstr "Días de Tránsito"
diff --git a/stock_delivery_planner/models/__init__.py b/stock_delivery_planner/models/__init__.py
deleted file mode 100644
index 03ea18f8..00000000
--- a/stock_delivery_planner/models/__init__.py
+++ /dev/null
@@ -1,4 +0,0 @@
-# Part of Hibou Suite Professional. See LICENSE_PROFESSIONAL file for full copyright and licensing details.
-
-from . import res_config_settings
-from . import stock
diff --git a/stock_delivery_planner/models/res_config_settings.py b/stock_delivery_planner/models/res_config_settings.py
deleted file mode 100644
index 8e581549..00000000
--- a/stock_delivery_planner/models/res_config_settings.py
+++ /dev/null
@@ -1,43 +0,0 @@
-# Part of Hibou Suite Professional. See LICENSE_PROFESSIONAL file for full copyright and licensing details.
-
-from odoo import api, fields, models
-
-
-class ResConfigSettings(models.TransientModel):
- _inherit = 'res.config.settings'
-
- stock_delivery_planner_base_carrier_ids = fields.Many2many('delivery.carrier',
- string='Delivery Planner Base Carriers',
- compute='_compute_stock_delivery_planner_base_carrier_ids',
- inverse='_inverse_stock_delivery_planner_base_carrier_ids')
-
- def _compute_stock_delivery_planner_base_carrier_ids_ids(self):
- # used to compute the field and update in get_values
- get_param = self.env['ir.config_parameter'].sudo().get_param
- company_id = self.company_id.id or self.env.company.id
- carrier_ids = get_param('stock.delivery.planner.carrier_ids.%s' % (company_id,)) or []
- if carrier_ids and isinstance(carrier_ids, str):
- try:
- carrier_ids = [int(c) for c in carrier_ids.split(',')]
- except:
- carrier_ids = []
- return carrier_ids
-
- def _compute_stock_delivery_planner_base_carrier_ids(self):
- for settings in self:
- carrier_ids = settings._compute_stock_delivery_planner_base_carrier_ids_ids()
- carriers = self.env['delivery.carrier'].browse(carrier_ids)
- settings.stock_delivery_planner_base_carrier_ids = carriers
-
- def _inverse_stock_delivery_planner_base_carrier_ids(self):
- set_param = self.env['ir.config_parameter'].sudo().set_param
- company_id = self.company_id.id or self.env.company.id
- for settings in self:
- carrier_ids = ','.join(str(i) for i in settings.stock_delivery_planner_base_carrier_ids.ids)
- set_param('stock.delivery.planner.carrier_ids.%s' % (company_id, ), carrier_ids)
-
- @api.model
- def get_values(self):
- res = super(ResConfigSettings, self).get_values()
- res['stock_delivery_planner_base_carrier_ids'] = [(6, 0, self._compute_stock_delivery_planner_base_carrier_ids_ids())]
- return res
diff --git a/stock_delivery_planner/models/stock.py b/stock_delivery_planner/models/stock.py
deleted file mode 100644
index 5cf43780..00000000
--- a/stock_delivery_planner/models/stock.py
+++ /dev/null
@@ -1,58 +0,0 @@
-# Part of Hibou Suite Professional. See LICENSE_PROFESSIONAL file for full copyright and licensing details.
-
-from odoo import fields, models, tools, _
-from odoo.exceptions import UserError
-
-
-class StockPicking(models.Model):
- _inherit = 'stock.picking'
-
- def action_plan_delivery(self):
- context = dict(self.env.context or {})
- planner_model = self.env['stock.delivery.planner']
- for picking in self:
- planner = planner_model.create({
- 'picking_id': picking.id,
- })
- return {
- 'name': _('Plan Delivery'),
- 'type': 'ir.actions.act_window',
- 'res_model': 'stock.delivery.planner',
- 'res_id': planner.id,
- 'view_type': 'form',
- 'view_mode': 'form',
- 'view_id': self.env.ref('stock_delivery_planner.view_stock_delivery_planner').id,
- 'target': 'new',
- 'context': context,
- }
-
- # def get_shipping_carriers(self, carrier_id=None, domain=None):
- def get_shipping_carriers(self):
- Carrier = self.env['delivery.carrier'].sudo()
- # if carrier_id:
- # return Carrier.browse(carrier_id)
- #
- # if domain:
- # if not isinstance(domain, (list, tuple)):
- # domain = tools.safe_eval(domain)
- # else:
- domain = []
-
- if self.env.context.get('carrier_domain'):
- # potential bug here if this is textual
- domain.extend(self.env.context.get('carrier_domain'))
-
- irconfig_parameter = self.env['ir.config_parameter'].sudo()
- if 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)
-
-
-class Warehouse(models.Model):
- _inherit = 'stock.warehouse'
-
- delivery_planner_carrier_ids = fields.Many2many('delivery.carrier',
- relation='delivery_planner_carrier_wh_rel',
- string='Delivery Planner Base Carriers',
- help='Overrides the global carriers.')
diff --git a/stock_delivery_planner/security/ir.model.access.csv b/stock_delivery_planner/security/ir.model.access.csv
deleted file mode 100644
index 204f355c..00000000
--- a/stock_delivery_planner/security/ir.model.access.csv
+++ /dev/null
@@ -1,3 +0,0 @@
-id,name,model_id:id,group_id:id,perm_read,perm_write,perm_create,perm_unlink
-access_stock_delivery_planner_user,stock.delivery.planner user,model_stock_delivery_planner,stock.group_stock_user,1,1,1,0
-access_stock_delivery_planner_option_user,stock.delivery.planner.option user,model_stock_delivery_planner_option,stock.group_stock_user,1,1,1,0
\ No newline at end of file
diff --git a/stock_delivery_planner/tests/__init__.py b/stock_delivery_planner/tests/__init__.py
deleted file mode 100644
index 83aa212b..00000000
--- a/stock_delivery_planner/tests/__init__.py
+++ /dev/null
@@ -1 +0,0 @@
-from . import test_stock_delivery_planner
diff --git a/stock_delivery_planner/tests/test_stock_delivery_planner.py b/stock_delivery_planner/tests/test_stock_delivery_planner.py
deleted file mode 100644
index 81563f62..00000000
--- a/stock_delivery_planner/tests/test_stock_delivery_planner.py
+++ /dev/null
@@ -1,144 +0,0 @@
-# Part of Hibou Suite Professional. See LICENSE_PROFESSIONAL file for full copyright and licensing details.
-
-from odoo import fields
-from odoo.tests.common import Form, TransactionCase
-
-
-class TestStockDeliveryPlanner(TransactionCase):
- def setUp(self):
- """
- NOTE: demo Fedex credentials may not work. Test credentials may not return all service types.
- Configuring production credentials may be necessary for this test to run.
- """
- super(TestStockDeliveryPlanner, self).setUp()
- try:
- self.fedex_ground = self.browse_ref('delivery_fedex.delivery_carrier_fedex_us')
- except ValueError:
- self.skipTest('FedEx Shipping Connector demo data is required to run this test.')
- self.env['ir.config_parameter'].sudo().set_param('sale.order.planner.carrier_domain',
- "[('id', 'in', (%d,))]" % self.fedex_ground.id)
- self.env['ir.config_parameter'].sudo().set_param('stock.delivery.planner.carrier_ids.%s' % (self.env.company.id, ),
- "%d" % self.fedex_ground.id)
- # Does it make sense to set default package in fedex_rate_shipment_multi
- # instead of relying on a correctly configured delivery method?
- self.fedex_package = self.browse_ref('delivery_fedex.fedex_packaging_FEDEX_25KG_BOX')
- self.default_package = self.browse_ref('delivery_fedex.fedex_packaging_YOUR_PACKAGING')
- self.fedex_ground.fedex_default_packaging_id = self.default_package
- # PRIORITY_OVERNIGHT might not be available depending on time of day?
- self.fedex_ground.fedex_service_type = 'FEDEX_GROUND'
-
- self.fedex_2_day = self.fedex_ground.copy()
- self.fedex_2_day.name = 'Test FedEx Delivery'
- self.fedex_2_day.fedex_service_type = 'FEDEX_2_DAY'
-
- delivery_calendar = self.env['resource.calendar'].create({
- 'name': 'Test Delivery Calendar',
- 'tz': 'US/Central',
- 'attendance_ids': [
- (0, 0, {'name': 'Monday', 'dayofweek': '0', 'hour_from': 0, 'hour_to': 24, 'day_period': 'morning'}),
- (0, 0, {'name': 'Tuesday', 'dayofweek': '1', 'hour_from': 0, 'hour_to': 24, 'day_period': 'morning'}),
- (0, 0, {'name': 'Wednesday', 'dayofweek': '2', 'hour_from': 0, 'hour_to': 24, 'day_period': 'morning'}),
- (0, 0, {'name': 'Thursday', 'dayofweek': '3', 'hour_from': 0, 'hour_to': 24, 'day_period': 'morning'}),
- (0, 0, {'name': 'Friday', 'dayofweek': '4', 'hour_from': 0, 'hour_to': 24, 'day_period': 'morning'}),
- ],
- })
- self.fedex_ground.delivery_calendar_id = delivery_calendar
- self.fedex_2_day.delivery_calendar_id = delivery_calendar
- self.env['stock.warehouse'].search([]).write({'shipping_calendar_id': delivery_calendar.id})
-
- # needs a valid address for sender and recipient
- self.country_usa = self.env['res.country'].search([('name', '=', 'United States')], limit=1)
- self.state_wa = self.env['res.country.state'].search([('name', '=', 'Washington')], limit=1)
- self.state_ia = self.env['res.country.state'].search([('name', '=', 'Iowa')], limit=1)
- self.env.user.company_id.partner_id.write({
- 'street': '321 1st St',
- 'city': 'Ames',
- 'state_id': self.state_ia.id,
- 'zip': '50010',
- 'country_id': self.country_usa.id,
- })
- pricelist = self.browse_ref('product.list0').copy({
- 'currency_id': self.env.ref('base.USD').id,
- 'sequence': 999,
- })
- self.partner = self.env['res.partner'].create({
- 'name': 'Test Customer',
- 'street': '1234 Test Street',
- 'city': 'Marysville',
- 'state_id': self.state_wa.id,
- 'zip': '98270',
- 'country_id': self.country_usa.id,
- 'property_product_pricelist': pricelist.id,
- 'is_company': True,
- # 'partner_latitude': 48.05636,
- # 'partner_longitude': -122.14922,
- })
-
- # self.product = self.browse_ref('product.product_product_27') # [FURN_8855] Drawer
- # self.product.weight = 5.0
- # self.product.volume = 0.1
- self.env['ir.config_parameter'].sudo().set_param('product.weight_in_lbs', '1')
- self.product = self.env['product.product'].create({
- 'name': 'Test Ship Product',
- 'type': 'product',
- 'weight': 1.0,
- })
- self.env['stock.change.product.qty'].create({
- 'product_id': self.product.id,
- 'product_tmpl_id': self.product.product_tmpl_id.id,
- 'new_quantity': 10.0,
- }).change_product_qty()
-
- so = Form(self.env['sale.order'])
- so.partner_id = self.partner
- with so.order_line.new() as line:
- line.product_id = self.product
- line.product_uom_qty = 5.0
- line.price_unit = 100.0
- self.sale_order = so.save()
-
- order_plan_action = self.sale_order.action_planorder()
- order_plan = self.env[order_plan_action['res_model']].browse(order_plan_action['res_id'])
- order_plan.planning_option_ids.filtered(lambda o: o.carrier_id == self.fedex_ground).select_plan()
-
- self.sale_order.action_confirm()
- self.picking = self.sale_order.picking_ids
-
- def test_00_test_one_package(self):
- """Delivery is packed in one package"""
- self.assertTrue(self.sale_order.requested_date, 'Order has not been planned')
- self.assertEqual(len(self.picking), 1)
- grp_pack = self.env.ref('stock.group_tracking_lot')
- self.env.user.write({'groups_id': [(4, grp_pack.id)]})
-
- self.assertEqual(self.picking.carrier_id, self.fedex_ground, 'Carrier did not carry over to Delivery Order')
- self.assertEqual(self.picking.weight, 5.0)
- self.assertEqual(self.picking.shipping_weight, 0.0)
-
- self.picking.move_line_ids.filtered(lambda ml: ml.product_id == self.product).qty_done = 5.0
- packing_action = self.picking.action_put_in_pack()
- packing_wizard = Form(self.env[packing_action['res_model']].with_context(packing_action['context']))
- packing_wizard.delivery_package_type_id = self.fedex_package
- choose_delivery_package = packing_wizard.save()
- choose_delivery_package.action_put_in_pack()
- self.assertEqual(self.picking.shipping_weight, 5.0)
-
- action = self.picking.action_plan_delivery()
- planner = self.env[action['res_model']].browse(action['res_id'])
-
- self.assertEqual(planner.picking_id, self.picking)
- self.assertGreater(len(planner.plan_option_ids), 1)
-
- plan_option = planner.plan_option_ids.filtered(lambda o: o.carrier_id == self.fedex_2_day)
- self.assertEqual(len(plan_option), 1)
- self.assertGreater(plan_option.price, 0.0)
- self.assertEqual(plan_option.date_planned.date(), fields.Date().today())
- self.assertTrue(plan_option.requested_date)
- self.assertEqual(plan_option.transit_days, 2)
- self.assertEqual(plan_option.sale_requested_date, self.sale_order.requested_date)
- # Order Planner expects to ship tomorrow: we are shipping a day early and using
- # 2-day shipping instead of 3, giving us 2 days difference
- self.assertEqual(plan_option.days_different, -2.0)
-
- plan_option.select_plan()
- self.assertEqual(self.picking.carrier_id, self.fedex_2_day)
diff --git a/stock_delivery_planner/views/res_config_settings_views.xml b/stock_delivery_planner/views/res_config_settings_views.xml
deleted file mode 100644
index 6420b7b7..00000000
--- a/stock_delivery_planner/views/res_config_settings_views.xml
+++ /dev/null
@@ -1,30 +0,0 @@
-
-
-
-
- res.config.settings.view.form.inherit
- res.config.settings
-
-
-
-
-
Delivery Planner
-
-
-
-
-
-
- Add a carrier that represents the 'base rate' for a carrier's type.
- For example, you should add 1 FedEx carrier here and let us build up the
- rates for your other FedEx shipping methods.
-
-
-
-
-
-
-
-
-
-
diff --git a/stock_delivery_planner/views/stock_views.xml b/stock_delivery_planner/views/stock_views.xml
deleted file mode 100644
index 137477e2..00000000
--- a/stock_delivery_planner/views/stock_views.xml
+++ /dev/null
@@ -1,26 +0,0 @@
-
-
-
-
- stock.picking.form.inherit.delivery.planner
- stock.picking
-
-
-
-
-
-
-
-
-
- stock.warehouse.delivery.carriers
- stock.warehouse
-
-
-
-
-
-
-
-
-
diff --git a/stock_delivery_planner/wizard/__init__.py b/stock_delivery_planner/wizard/__init__.py
deleted file mode 100644
index 66c71ade..00000000
--- a/stock_delivery_planner/wizard/__init__.py
+++ /dev/null
@@ -1 +0,0 @@
-from . import stock_delivery_planner
diff --git a/stock_delivery_planner/wizard/stock_delivery_planner.py b/stock_delivery_planner/wizard/stock_delivery_planner.py
deleted file mode 100644
index 866c443f..00000000
--- a/stock_delivery_planner/wizard/stock_delivery_planner.py
+++ /dev/null
@@ -1,139 +0,0 @@
-# Part of Hibou Suite Professional. See LICENSE_PROFESSIONAL file for full copyright and licensing details.
-
-from odoo import api, fields, models, _
-from odoo.exceptions import UserError, ValidationError
-import logging
-_logger = logging.getLogger(__name__)
-
-
-class StockDeliveryPlanner(models.TransientModel):
- _name = 'stock.delivery.planner'
- _description = 'Stock Delivery Planner Wizard'
-
- picking_id = fields.Many2one('stock.picking', 'Transfer')
- plan_option_ids = fields.One2many('stock.delivery.planner.option', 'plan_id', 'Options')
- packages_planned = fields.Boolean(compute='_compute_packages_planned')
-
- @api.depends('plan_option_ids.selection')
- def _compute_packages_planned(self):
- for wiz in self:
- packages = wiz.picking_id.package_ids
- if not packages:
- wiz.packages_planned = False
- selected_options = wiz.plan_option_ids.filtered(lambda p: p.selection == 'selected')
- wiz.packages_planned = len(selected_options) == len(packages)
-
- def _get_carriers(self):
- self.ensure_one()
- base_carriers = self.picking_id.picking_type_id.warehouse_id.delivery_planner_carrier_ids
- if not base_carriers:
- carrier_ids = self.env['ir.config_parameter'].sudo().get_param('stock.delivery.planner.carrier_ids.%s' % (self.env.user.company_id.id, ))
- if carrier_ids:
- try:
- carrier_ids = [int(c) for c in carrier_ids.split(',')]
- base_carriers = base_carriers.browse(carrier_ids)
- except:
- pass
- return base_carriers.sudo()
-
- def create(self, values):
- planner = super(StockDeliveryPlanner, self).create(values)
- base_carriers = planner._get_carriers()
-
- for carrier in base_carriers:
- try:
- rates = carrier.rate_shipment_multi(picking=planner.picking_id)
- for rate in filter(lambda r: not r.get('success'), rates):
- _logger.warning(rate.get('error_message'))
- for rate in filter(lambda r: r.get('success'), rates):
- rate = self.calculate_delivery_window(rate)
- # added late in API dev cycle
- package = rate.get('package') or self.env['stock.quant.package'].browse()
- planner.plan_option_ids |= planner.plan_option_ids.create({
- 'plan_id': self.id,
- 'carrier_id': rate['carrier'].id,
- 'package_id': package.id,
- 'price': rate['price'],
- 'date_planned': rate['date_planned'],
- 'requested_date': rate.get('date_delivered', False),
- 'transit_days': rate.get('transit_days', 0),
- })
- except (UserError, ValidationError) as e:
- _logger.warning('Exception during delivery planning. %s' % str(e))
- return planner
-
- @api.model
- def calculate_delivery_window(self, rate):
- carrier = rate['carrier']
- date_planned = rate['date_planned']
- if rate.get('date_delivered'):
- date_delivered = rate['date_delivered']
- transit_days = carrier.calculate_transit_days(date_planned, date_delivered)
- if not rate.get('transit_days') or transit_days < rate.get('transit_days'):
- rate['transit_days'] = transit_days
- elif rate.get('transit_days'):
- rate['date_delivered'] = carrier.calculate_date_delivered(date_planned, rate.get('transit_days'))
- return rate
-
- def action_plan(self):
- self.ensure_one()
- selected_package_options = self.plan_option_ids.filtered(lambda o: o.package_id and o.selection == 'selected')
- selected_package_options._plan()
- return {"type": "ir.actions.act_window_close"}
-
-
-class StockDeliveryOption(models.TransientModel):
- _name = 'stock.delivery.planner.option'
- _description = 'Stock Delivery Planner Option'
-
- plan_id = fields.Many2one('stock.delivery.planner', 'Plan', ondelete='cascade')
- carrier_id = fields.Many2one('delivery.carrier', 'Delivery Method')
- package_id = fields.Many2one('stock.quant.package', 'Package')
- price = fields.Float('Shipping Price')
- date_planned = fields.Datetime('Planned Date')
- requested_date = fields.Datetime('Expected Delivery Date')
- transit_days = fields.Integer('Transit Days')
- sale_requested_date = fields.Datetime('Sale Order Delivery Date', related='plan_id.picking_id.sale_id.requested_date')
- days_different = fields.Float('Days Different', compute='_compute_days_different') # use carrier calendar
- selection = fields.Selection([
- ('', 'None'),
- ('selected', 'Selected'),
- ('deselected', 'De-selected')
- ])
-
- def _plan(self):
- # this is intended to be used during selecting a whole plan
- for option in self:
- option.package_id.write({
- 'carrier_id': option.carrier_id.id,
- })
-
- def select_plan(self):
- self.ensure_one()
- self.selection = 'selected'
- if self.package_id:
- # need to deselect other options for this package
- deselected = self.plan_id.plan_option_ids.filtered(lambda o: o.package_id == self.package_id and o != self)
- deselected.write({'selection': 'deselected'})
- return {
- 'name': _('Delivery Rate Planner'),
- 'type': 'ir.actions.act_window',
- 'view_mode': 'form',
- 'res_model': 'stock.delivery.planner',
- 'res_id': self.plan_id.id,
- 'target': 'new',
- }
- else:
- # Select plan for whole shipment
- self.plan_id.picking_id.carrier_id = self.carrier_id
- return {"type": "ir.actions.act_window_close"}
-
- @api.depends('requested_date', 'sale_requested_date', 'carrier_id')
- def _compute_days_different(self):
- for option in self:
- if not option.requested_date or not option.sale_requested_date or option.requested_date.date() == option.sale_requested_date.date():
- option.days_different = 0
- elif option.requested_date < option.sale_requested_date:
- option.days_different = -1 * option.carrier_id.calculate_transit_days(option.requested_date, option.sale_requested_date)
- else:
- option.days_different = option.carrier_id.calculate_transit_days(option.sale_requested_date, option.requested_date)
diff --git a/stock_delivery_planner/wizard/stock_delivery_planner_views.xml b/stock_delivery_planner/wizard/stock_delivery_planner_views.xml
deleted file mode 100644
index 06e9ac5c..00000000
--- a/stock_delivery_planner/wizard/stock_delivery_planner_views.xml
+++ /dev/null
@@ -1,40 +0,0 @@
-
-
-
- view.stock.delivery.planner
- stock.delivery.planner
- form
-
-
-
-
-