[IMP] connector_opencart: Add option on backend to require all SO products to not have checkpoints before importing order.

Additionally, allow users to re-bind product templates (understandably risky).
This commit is contained in:
Jared Kipe
2020-07-14 14:01:23 -07:00
parent ac29c1ed07
commit 3d2de4e80a
5 changed files with 37 additions and 3 deletions

View File

@@ -73,6 +73,9 @@ class OpencartBackend(models.Model):
string='Import sale orders after id',
)
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.')
@contextmanager
@api.multi
def work_on(self, model_name, **kwargs):
@@ -89,6 +92,20 @@ class OpencartBackend(models.Model):
return add_checkpoint(self.env, record._name, record.id,
self._name, self.id)
@api.multi
def find_checkpoint(self, record):
self.ensure_one()
record.ensure_one()
checkpoint_model = self.env['connector.checkpoint']
model_model = self.env['ir.model']
model = model_model.search([('model', '=', record._name)], limit=1)
return checkpoint_model.search([
('backend_id', '=', '%s,%s' % (self._name, self.id)),
('model_id', '=', model.id),
('record_id', '=', record.id),
('state', '=', 'need_review'),
], limit=1)
@api.multi
def synchronize_metadata(self):
try:

View File

@@ -8,6 +8,7 @@ from odoo import fields, _
from odoo.addons.component.core import Component
from odoo.addons.connector.components.mapper import mapping
from odoo.exceptions import ValidationError
from odoo.addons.queue_job.exception import RetryableJobError
class SaleOrderBatchImporter(Component):
@@ -363,9 +364,16 @@ class SaleOrderImporter(Component):
def _import_dependencies(self):
record = self.opencart_record
self._import_addresses()
products_need_setup = []
for product in record.get('products', []):
if 'product_id' in product and product['product_id']:
self._import_dependency(product['product_id'], 'opencart.product.template')
needs_product_setup = self._import_dependency(product['product_id'], 'opencart.product.template')
if needs_product_setup:
products_need_setup.append(product['product_id'])
if products_need_setup and self.backend_record.so_require_product_setup:
# There are products that were either just imported, or
raise RetryableJobError('Products need setup. OpenCart Product IDs:' + str(products_need_setup), seconds=3600)
class SaleOrderLineImportMapper(Component):