From d54fb338cf82aefa6021a426dbef72d5ac27f94f Mon Sep 17 00:00:00 2001 From: Jared Kipe Date: Wed, 28 Apr 2021 11:07:37 -0700 Subject: [PATCH] [IMP] connector_opencart: fields to opt backends into auto import, per-store --- connector_opencart/__manifest__.py | 2 +- connector_opencart/models/opencart/backend.py | 15 ++++++++++++--- connector_opencart/models/opencart/store.py | 2 ++ connector_opencart/models/sale_order/importer.py | 15 +++++++++++---- .../views/opencart_backend_views.xml | 9 +++++++++ 5 files changed, 35 insertions(+), 8 deletions(-) diff --git a/connector_opencart/__manifest__.py b/connector_opencart/__manifest__.py index ddd2c9bc..af9c90e5 100644 --- a/connector_opencart/__manifest__.py +++ b/connector_opencart/__manifest__.py @@ -3,7 +3,7 @@ { 'name': 'Opencart Connector', - 'version': '12.0.1.1.0', + 'version': '12.0.1.2.0', 'category': 'Connector', 'depends': [ 'account', diff --git a/connector_opencart/models/opencart/backend.py b/connector_opencart/models/opencart/backend.py index 42cd62ad..0f0aff12 100644 --- a/connector_opencart/models/opencart/backend.py +++ b/connector_opencart/models/opencart/backend.py @@ -76,6 +76,17 @@ class OpencartBackend(models.Model): so_require_product_setup = fields.Boolean(string='SO Require Product Setup', help='Prevents SO from being confirmed (failed queue job), if one or more products has an open checkpoint.') + scheduler_order_import_running = fields.Boolean(string='Auctomatic Sale Order Import is Running', + compute='_compute_scheduler_order_import_running', + compute_sudo=True) + scheduler_order_import = fields.Boolean(string='Automatic Sale Order Import', + help='Individual stores should also be enabled for import.') + + def _compute_scheduler_order_import_running(self): + sched_action = self.env.ref('connector_opencart.ir_cron_import_sale_orders', raise_if_not_found=False) + for backend in self: + backend.scheduler_order_import_running = bool(sched_action.active) + @contextmanager @api.multi def work_on(self, model_name, **kwargs): @@ -124,6 +135,7 @@ class OpencartBackend(models.Model): ('base_url', '!=', False), ('restadmin_token', '!=', False), ('import_orders_after_id', '!=', False), + ('scheduler_order_import', '=', True), ]) return backends.import_sale_orders() @@ -140,6 +152,3 @@ class OpencartBackend(models.Model): backend, filters={'after_id': after_id} ) - # TODO !!!!! - # cannot update the ID because we don't know what Ids would be returned. - # this MUST be updated by the SO importer. diff --git a/connector_opencart/models/opencart/store.py b/connector_opencart/models/opencart/store.py index 4444b16f..33b97625 100644 --- a/connector_opencart/models/opencart/store.py +++ b/connector_opencart/models/opencart/store.py @@ -52,6 +52,8 @@ class OpencartStore(models.Model): ) coupon_product_id = fields.Many2one(comodel_name='product.product', string='Coupon Product', help='Product to represent coupon discounts.') + enable_order_import = fields.Boolean(string='Enable Sale Order Import', default=True, + help='If not enabled, then stores will be skipped during order imiport.') class OpencartStoreAdapter(Component): diff --git a/connector_opencart/models/sale_order/importer.py b/connector_opencart/models/sale_order/importer.py index 79e19595..dcbe500b 100644 --- a/connector_opencart/models/sale_order/importer.py +++ b/connector_opencart/models/sale_order/importer.py @@ -1,8 +1,9 @@ # © 2019 Hibou Corp. # License AGPL-3.0 or later (http://www.gnu.org/licenses/agpl). -from copy import deepcopy, copy +from copy import copy from html import unescape +import logging from odoo import fields, _ from odoo.addons.component.core import Component @@ -11,6 +12,9 @@ from odoo.exceptions import ValidationError from odoo.addons.queue_job.exception import RetryableJobError +_logger = logging.getLogger(__name__) + + class SaleOrderBatchImporter(Component): _name = 'opencart.sale.order.batch.importer' _inherit = 'opencart.delayed.batch.importer' @@ -24,10 +28,13 @@ class SaleOrderBatchImporter(Component): } if store_id is not None: store_binder = self.binder_for('opencart.store') - store = store_binder.to_internal(store_id) - user = store.sudo().warehouse_id.company_id.user_tech_id + store = store_binder.to_internal(store_id).sudo() + if not store.enable_order_import: + _logger.warning('Store (%s) is not enabled for Sale Order import (%s).' % (store.name, external_id)) + return + user = store.warehouse_id.company_id.user_tech_id if user and user != self.env.user: - # Note that this is a component, which has an env through it's 'colletion' + # Note that this is a component, which has an env through it's 'collection' # however, when importing the 'model' is actually what runs the delayed job env = self.env(user=user) self.collection.env = env diff --git a/connector_opencart/views/opencart_backend_views.xml b/connector_opencart/views/opencart_backend_views.xml index d60fda7b..1b9138fe 100644 --- a/connector_opencart/views/opencart_backend_views.xml +++ b/connector_opencart/views/opencart_backend_views.xml @@ -34,6 +34,14 @@ + + +

+ The automatic scheduler is not currently enabled. +

+

+ The automatic scheduler is enabled. +

@@ -128,6 +136,7 @@ +