fix: add Employee support for CORE API -> Rattail import/datasync
This commit is contained in:
parent
4752409a45
commit
1b04b4097c
|
@ -38,6 +38,7 @@ class CoreTriggerHandler(GenericHandler):
|
||||||
supported_triggers = [
|
supported_triggers = [
|
||||||
'custdata',
|
'custdata',
|
||||||
'meminfo',
|
'meminfo',
|
||||||
|
'employees',
|
||||||
'departments',
|
'departments',
|
||||||
'subdepts',
|
'subdepts',
|
||||||
'vendors',
|
'vendors',
|
||||||
|
@ -224,6 +225,26 @@ class CoreTriggerHandler(GenericHandler):
|
||||||
FOR EACH ROW INSERT INTO {changes_table} (object_type, object_key, deleted) VALUES ('Member', CONVERT(OLD.card_no, CHAR));
|
FOR EACH ROW INSERT INTO {changes_table} (object_type, object_key, deleted) VALUES ('Member', CONVERT(OLD.card_no, CHAR));
|
||||||
"""))
|
"""))
|
||||||
|
|
||||||
|
def create_triggers_employees(self, op_session, changes_table):
|
||||||
|
|
||||||
|
op_session.execute(sa.text(f"""
|
||||||
|
CREATE TRIGGER record_employees_create
|
||||||
|
AFTER INSERT ON employees
|
||||||
|
FOR EACH ROW INSERT INTO {changes_table} (object_type, object_key, deleted) VALUES ('Employee', CONVERT(NEW.emp_no, CHAR), 0);
|
||||||
|
"""))
|
||||||
|
|
||||||
|
op_session.execute(sa.text(f"""
|
||||||
|
CREATE TRIGGER record_employees_update
|
||||||
|
AFTER UPDATE ON employees
|
||||||
|
FOR EACH ROW INSERT INTO {changes_table} (object_type, object_key, deleted) VALUES ('Employee', CONVERT(NEW.emp_no, CHAR), 0);
|
||||||
|
"""))
|
||||||
|
|
||||||
|
op_session.execute(sa.text(f"""
|
||||||
|
CREATE TRIGGER record_employees_delete
|
||||||
|
AFTER DELETE ON employees
|
||||||
|
FOR EACH ROW INSERT INTO {changes_table} (object_type, object_key, deleted) VALUES ('Employee', CONVERT(OLD.emp_no, CHAR));
|
||||||
|
"""))
|
||||||
|
|
||||||
def create_triggers_departments(self, op_session, changes_table):
|
def create_triggers_departments(self, op_session, changes_table):
|
||||||
|
|
||||||
op_session.execute(sa.text(f"""
|
op_session.execute(sa.text(f"""
|
||||||
|
|
|
@ -78,6 +78,14 @@ class FromCOREAPIToRattail(DataSyncImportConsumer):
|
||||||
self.process_change(session, self.importers['Member'],
|
self.process_change(session, self.importers['Member'],
|
||||||
host_object=member)
|
host_object=member)
|
||||||
|
|
||||||
|
# sync all Employee-related changes
|
||||||
|
types = [
|
||||||
|
'Employee',
|
||||||
|
]
|
||||||
|
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 meta" changes
|
# sync all "product meta" changes
|
||||||
types = [
|
types = [
|
||||||
'Department',
|
'Department',
|
||||||
|
@ -118,6 +126,8 @@ class FromCOREAPIToRattail(DataSyncImportConsumer):
|
||||||
def get_host_object(self, session, change):
|
def get_host_object(self, session, change):
|
||||||
if change.payload_type == 'Member':
|
if change.payload_type == 'Member':
|
||||||
return self.api.get_member(change.payload_key)
|
return self.api.get_member(change.payload_key)
|
||||||
|
if change.payload_type == 'Employee':
|
||||||
|
return self.api.get_employee(change.payload_key)
|
||||||
if change.payload_type == 'Department':
|
if change.payload_type == 'Department':
|
||||||
return self.api.get_department(change.payload_key)
|
return self.api.get_department(change.payload_key)
|
||||||
if change.payload_type == 'Subdepartment':
|
if change.payload_type == 'Subdepartment':
|
||||||
|
|
|
@ -56,6 +56,7 @@ class FromCOREPOSToRattail(importing.ToRattailHandler):
|
||||||
importers['CustomerShopper'] = CustomerShopperImporter
|
importers['CustomerShopper'] = CustomerShopperImporter
|
||||||
importers['MembershipType'] = MembershipTypeImporter
|
importers['MembershipType'] = MembershipTypeImporter
|
||||||
importers['Member'] = MemberImporter
|
importers['Member'] = MemberImporter
|
||||||
|
importers['Employee'] = EmployeeImporter
|
||||||
importers['Store'] = StoreImporter
|
importers['Store'] = StoreImporter
|
||||||
importers['Department'] = DepartmentImporter
|
importers['Department'] = DepartmentImporter
|
||||||
importers['Subdepartment'] = SubdepartmentImporter
|
importers['Subdepartment'] = SubdepartmentImporter
|
||||||
|
@ -341,6 +342,34 @@ class CustomerShopperImporter(FromCOREPOSAPI, corepos_importing.model.CustomerSh
|
||||||
return data
|
return data
|
||||||
|
|
||||||
|
|
||||||
|
class EmployeeImporter(FromCOREPOSAPI, corepos_importing.model.EmployeeImporter):
|
||||||
|
"""
|
||||||
|
Importer for employee data from CORE POS API.
|
||||||
|
"""
|
||||||
|
key = 'corepos_number'
|
||||||
|
supported_fields = [
|
||||||
|
'corepos_number',
|
||||||
|
'id',
|
||||||
|
'first_name',
|
||||||
|
'last_name',
|
||||||
|
'full_name',
|
||||||
|
'status',
|
||||||
|
]
|
||||||
|
|
||||||
|
def get_host_objects(self):
|
||||||
|
return self.api.get_employees()
|
||||||
|
|
||||||
|
def normalize_host_object(self, employee):
|
||||||
|
return {
|
||||||
|
'corepos_number': int(employee['emp_no']),
|
||||||
|
'id': int(employee['emp_no']),
|
||||||
|
'first_name': employee['FirstName'],
|
||||||
|
'last_name': employee['LastName'],
|
||||||
|
'full_name': normalize_full_name(employee['FirstName'], employee['LastName']),
|
||||||
|
'status': self.enum.EMPLOYEE_STATUS_CURRENT if employee['EmpActive'] else self.enum.EMPLOYEE_STATUS_FORMER,
|
||||||
|
}
|
||||||
|
|
||||||
|
|
||||||
class StoreImporter(FromCOREPOSAPI, corepos_importing.model.StoreImporter):
|
class StoreImporter(FromCOREPOSAPI, corepos_importing.model.StoreImporter):
|
||||||
"""
|
"""
|
||||||
Importer for store data from CORE POS API.
|
Importer for store data from CORE POS API.
|
||||||
|
|
Loading…
Reference in a new issue