Add 2-way sync for basic Member data, CORE <-> Rattail
This commit is contained in:
parent
9dbdb81f07
commit
8917316a21
5 changed files with 158 additions and 14 deletions
|
@ -92,8 +92,8 @@ class MemberImporter(ToCoreAPI):
|
|||
# 'chargeBalance',
|
||||
# 'chargeLimit',
|
||||
# 'idCardUPC',
|
||||
# 'startDate',
|
||||
# 'endDate',
|
||||
'startDate',
|
||||
'endDate',
|
||||
'addressFirstLine',
|
||||
'addressSecondLine',
|
||||
'city',
|
||||
|
@ -123,6 +123,8 @@ class MemberImporter(ToCoreAPI):
|
|||
# 'modified',
|
||||
]
|
||||
|
||||
empty_date_value = '0000-00-00 00:00:00'
|
||||
|
||||
def get_local_objects(self, host_data=None):
|
||||
return get_core_members(self.api, progress=self.progress)
|
||||
|
||||
|
@ -144,6 +146,15 @@ 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')
|
||||
|
||||
return diffs
|
||||
|
||||
def customer_data_differs(self, local_data, host_data):
|
||||
|
@ -211,6 +222,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')
|
||||
member = self.api.set_member(cardNo, **data)
|
||||
return member
|
||||
|
||||
|
|
|
@ -78,6 +78,8 @@ class MemberImporter(FromRattail, corepos_importing.model.MemberImporter):
|
|||
'city',
|
||||
'state',
|
||||
'zip',
|
||||
'startDate',
|
||||
'endDate',
|
||||
]
|
||||
supported_customer_fields = [
|
||||
'customerID',
|
||||
|
@ -120,6 +122,20 @@ class MemberImporter(FromRattail, corepos_importing.model.MemberImporter):
|
|||
'email': email.address if email else '',
|
||||
})
|
||||
|
||||
member = customer.only_member(require=False)
|
||||
if member:
|
||||
if member.joined:
|
||||
start_date = member.joined.strftime('%Y-%m-%d 00:00:00')
|
||||
else:
|
||||
start_date = self.empty_date_value
|
||||
if member.withdrew:
|
||||
end_date = member.withdrew.strftime('%Y-%m-%d 00:00:00')
|
||||
else:
|
||||
end_date = self.empty_date_value
|
||||
else:
|
||||
start_date = '__omit__'
|
||||
end_date = '__omit__'
|
||||
|
||||
return {
|
||||
'cardNo': customer.number,
|
||||
'customerAccountID': customer.id,
|
||||
|
@ -128,6 +144,8 @@ class MemberImporter(FromRattail, corepos_importing.model.MemberImporter):
|
|||
'city': address.city if address else '',
|
||||
'state': address.state if address else '',
|
||||
'zip': address.zipcode if address else '',
|
||||
'startDate': start_date,
|
||||
'endDate': end_date,
|
||||
'customers': people,
|
||||
}
|
||||
|
||||
|
|
Loading…
Add table
Add a link
Reference in a new issue