Add CustomerShopper.corepos_customer_id and refactor importers

removes phone/email support for now..also change how we handle
default/empty values for member start/end date..
This commit is contained in:
Lance Edgar 2023-06-10 14:35:08 -05:00
parent 86a8e2d241
commit 660637522d
7 changed files with 150 additions and 37 deletions

View file

@ -2,7 +2,7 @@
################################################################################
#
# Rattail -- Retail Software Framework
# Copyright © 2010-2021 Lance Edgar
# Copyright © 2010-2023 Lance Edgar
#
# This file is part of Rattail.
#
@ -121,7 +121,8 @@ class MemberImporter(ToCoreAPI):
# 'modified',
]
empty_date_value = '0000-00-00 00:00:00'
#empty_date_value = '0000-00-00 00:00:00'
empty_date_value = '1900-01-01 00:00:00'
def get_local_objects(self, host_data=None):
return get_core_members(self.config, self.api, progress=self.progress)
@ -144,14 +145,14 @@ class MemberImporter(ToCoreAPI):
if not self.customer_data_differs(local_data, host_data):
diffs.remove('customers')
# also the start/end dates should be looked at more closely. if they
# contain the special '__omit__' value then we won't ever count as diff
if 'startDate' in self.fields and 'startDate' in diffs:
if host_data['startDate'] == '__omit__':
diffs.remove('startDate')
if 'endDate' in self.fields and 'endDate' in diffs:
if host_data['endDate'] == '__omit__':
diffs.remove('endDate')
# # also the start/end dates should be looked at more closely. if they
# # contain the special '__omit__' value then we won't ever count as diff
# if 'startDate' in self.fields and 'startDate' in diffs:
# if host_data['startDate'] == '__omit__':
# diffs.remove('startDate')
# if 'endDate' in self.fields and 'endDate' in diffs:
# if host_data['endDate'] == '__omit__':
# diffs.remove('endDate')
return diffs
@ -220,11 +221,11 @@ class MemberImporter(ToCoreAPI):
return data
cardNo = data.pop('cardNo')
data = dict(data)
if data.get('startDate') == '__omit__':
data.pop('startDate')
if data.get('endDate') == '__omit__':
data.pop('endDate')
# data = dict(data)
# if data.get('startDate') == '__omit__':
# data.pop('startDate')
# if data.get('endDate') == '__omit__':
# data.pop('endDate')
member = self.api.set_member(cardNo, **data)
return member

View file

@ -97,9 +97,9 @@ class MemberImporter(FromRattail, corepos_importing.model.MemberImporter):
'firstName',
'lastName',
'accountHolder',
'phone',
'altPhone',
'email',
# 'phone',
# 'altPhone',
# 'email',
]
def query(self):
@ -117,23 +117,24 @@ class MemberImporter(FromRattail, corepos_importing.model.MemberImporter):
address = customer.addresses[0] if customer.addresses else None
people = []
for i, person in enumerate(customer.people, 1):
phones = person.phones
phone1 = phones[0] if phones else None
phone2 = phones[1] if len(phones) > 1 else None
email = person.emails[0] if person.emails else None
people.append({
'customerID': str(person.corepos_customer_id),
shoppers = []
for shopper in customer.shoppers:
person = shopper.person
# phones = person.phones
# phone1 = phones[0] if phones else None
# phone2 = phones[1] if len(phones) > 1 else None
# email = person.emails[0] if person.emails else None
shoppers.append({
'customerID': str(shopper.corepos_customer_id),
'firstName': person.first_name,
'lastName': person.last_name,
'accountHolder': i == 1,
'phone': phone1.number if phone1 else '',
'altPhone': phone2.number if phone2 else '',
'email': email.address if email else '',
'accountHolder': shopper.shopper_number == 1,
# 'phone': phone1.number if phone1 else '',
# 'altPhone': phone2.number if phone2 else '',
# 'email': email.address if email else '',
})
member = customer.only_member(require=False)
member = self.app.get_member(customer)
if member:
if member.joined:
start_date = member.joined.strftime('%Y-%m-%d 00:00:00')
@ -144,12 +145,14 @@ class MemberImporter(FromRattail, corepos_importing.model.MemberImporter):
else:
end_date = self.empty_date_value
else:
start_date = '__omit__'
end_date = '__omit__'
# start_date = '__omit__'
# end_date = '__omit__'
start_date = self.empty_date_value
end_date = self.empty_date_value
return {
'cardNo': customer.number,
'customerAccountID': customer.id,
'customerAccountID': str(customer.corepos_account_id or ''),
'addressFirstLine': address.street if address else '',
'addressSecondLine': address.street2 if address else '',
'city': address.city if address else '',
@ -157,7 +160,7 @@ class MemberImporter(FromRattail, corepos_importing.model.MemberImporter):
'zip': address.zipcode if address else '',
'startDate': start_date,
'endDate': end_date,
'customers': people,
'customers': shoppers,
}