Add support for importing product last sold from CORE API

This commit is contained in:
Lance Edgar 2020-07-15 21:19:27 -05:00
parent 9f3cfa0d8e
commit 8037de7efe

View file

@ -37,6 +37,7 @@ from rattail import importing
from rattail.db import model from rattail.db import model
from rattail.gpc import GPC from rattail.gpc import GPC
from rattail.util import OrderedDict from rattail.util import OrderedDict
from rattail.time import localtime, make_utc
from rattail.db.util import normalize_full_name from rattail.db.util import normalize_full_name
from rattail_corepos import importing as corepos_importing from rattail_corepos import importing as corepos_importing
from rattail_corepos.corepos.util import get_core_members from rattail_corepos.corepos.util import get_core_members
@ -61,8 +62,15 @@ class FromCOREPOSToRattail(importing.ToRattailHandler):
importers['Subdepartment'] = SubdepartmentImporter importers['Subdepartment'] = SubdepartmentImporter
importers['Vendor'] = VendorImporter importers['Vendor'] = VendorImporter
importers['Product'] = ProductImporter importers['Product'] = ProductImporter
importers['ProductMovement'] = ProductMovementImporter
return importers return importers
def get_default_keys(self):
keys = super(FromCOREPOSToRattail, self).get_default_keys()
if 'ProductMovement' in keys:
keys.remove('ProductMovement')
return keys
class FromCOREPOSAPI(importing.Importer): class FromCOREPOSAPI(importing.Importer):
""" """
@ -488,6 +496,35 @@ class ProductImporter(FromCOREPOSAPI, corepos_importing.model.ProductImporter):
} }
class ProductMovementImporter(FromCOREPOSAPI, corepos_importing.model.ProductImporter):
"""
Importer for product movement data from CORE POS API.
"""
key = 'corepos_id'
supported_fields = [
'corepos_id',
'last_sold',
]
allow_create = False
allow_delete = False
def get_host_objects(self):
return self.api.get_products()
def normalize_host_object(self, product):
last_sold = None
if 'last_sold' in product:
last_sold = datetime.datetime.strptime(product['last_sold'], '%Y-%m-%d %H:%M:%S')
last_sold = localtime(self.config, last_sold)
last_sold = make_utc(last_sold)
return {
'corepos_id': int(product['id']),
'last_sold': last_sold,
}
class MemberImporter(FromCOREPOSAPI, corepos_importing.model.MemberImporter): class MemberImporter(FromCOREPOSAPI, corepos_importing.model.MemberImporter):
""" """
Importer for member data from CORE POS API. Importer for member data from CORE POS API.