Be sure to update Rattail Product, when VendorItem changes in CORE
b/c of the `Product.case_size` field
This commit is contained in:
parent
5b1305ddbd
commit
9b00de26c6
|
@ -79,16 +79,34 @@ class FromCOREAPIToRattail(NewDataSyncImportConsumer):
|
||||||
self.process_change(session, self.importers['Member'],
|
self.process_change(session, self.importers['Member'],
|
||||||
host_object=member)
|
host_object=member)
|
||||||
|
|
||||||
# process all remaining supported models with typical logic
|
# sync all "product meta" changes
|
||||||
types = [
|
types = [
|
||||||
'Department',
|
'Department',
|
||||||
'Subdepartment',
|
'Subdepartment',
|
||||||
'Vendor',
|
'Vendor',
|
||||||
|
]
|
||||||
|
for change in [c for c in changes if c.payload_type in types]:
|
||||||
|
# normal logic works fine here
|
||||||
|
self.invoke_importer(session, change)
|
||||||
|
|
||||||
|
# sync all Product-related changes
|
||||||
|
types = [
|
||||||
'Product',
|
'Product',
|
||||||
'VendorItem',
|
'VendorItem',
|
||||||
]
|
]
|
||||||
for change in [c for c in changes if c.payload_type in types]:
|
for change in [c for c in changes if c.payload_type in types]:
|
||||||
self.invoke_importer(session, change)
|
|
||||||
|
# process deletion per usual logic
|
||||||
|
if change.deletion:
|
||||||
|
self.invoke_importer(session, change)
|
||||||
|
if change.payload_type == 'Product':
|
||||||
|
continue # stop here if we just deleted a Product
|
||||||
|
|
||||||
|
# try to process change for Product
|
||||||
|
product = self.get_product(change)
|
||||||
|
if product:
|
||||||
|
self.process_change(session, self.importers['Product'],
|
||||||
|
host_object=product)
|
||||||
|
|
||||||
def get_host_object(self, session, change):
|
def get_host_object(self, session, change):
|
||||||
if change.payload_type == 'Member':
|
if change.payload_type == 'Member':
|
||||||
|
@ -108,6 +126,16 @@ class FromCOREAPIToRattail(NewDataSyncImportConsumer):
|
||||||
if vendorID.isdigit():
|
if vendorID.isdigit():
|
||||||
return self.api.get_vendor_item(upc, int(vendorID))
|
return self.api.get_vendor_item(upc, int(vendorID))
|
||||||
|
|
||||||
|
def get_product(self, change):
|
||||||
|
if change.payload_type == 'Product':
|
||||||
|
return self.api.get_product(change.payload_key)
|
||||||
|
if change.payload_type == 'VendorItem':
|
||||||
|
fields = change.payload_key.split('|')
|
||||||
|
if len(fields) == 2:
|
||||||
|
upc, vendorID = fields
|
||||||
|
if upc:
|
||||||
|
return self.api.get_product(upc)
|
||||||
|
|
||||||
|
|
||||||
class FromCOREPOSToRattailBase(NewDataSyncImportConsumer):
|
class FromCOREPOSToRattailBase(NewDataSyncImportConsumer):
|
||||||
"""
|
"""
|
||||||
|
|
Loading…
Reference in a new issue