diff --git a/bahmni_address_mapping/models/address_mapping_service.py b/bahmni_address_mapping/models/address_mapping_service.py index 093538f..7681326 100644 --- a/bahmni_address_mapping/models/address_mapping_service.py +++ b/bahmni_address_mapping/models/address_mapping_service.py @@ -13,7 +13,8 @@ class AddressMappingService(models.Model): @api.model def _map_address_fields(self, address): - mapped_result = {} + mapped_result = {'country_id': None, 'state_id': None, 'district_id': None, 'subdistrict_id': None, + 'village_id': None, 'zip': None, 'street': None, 'street2': None} address_field_for_country = self._get_openmrs_address_field('country') address_field_for_state = self._get_openmrs_address_field('state') address_field_for_district = self._get_openmrs_address_field('district') @@ -101,7 +102,6 @@ def _map_address_fields(self, address): else: _logger.warning('Village value not passed in address with field %s', address_field_for_village) - mapped_result = self.clean_up_address(mapped_result) _logger.info('Input address: %s', str(address)) _logger.info('Mapped address: %s', str(mapped_result)) return mapped_result @@ -110,8 +110,6 @@ def _get_openmrs_address_field(self, odoo_field_name): return self.env['address.mapping.table'].search([('odoo_address_field', '=', odoo_field_name)], limit=1).openmrs_address_field - def clean_up_address(self, address): - return {key: value for key, value in address.items() if value} @api.model def _find_country(self, country_name): diff --git a/bahmni_api_feed/models/api_event_worker.py b/bahmni_api_feed/models/api_event_worker.py index 976fcc2..4353b82 100644 --- a/bahmni_api_feed/models/api_event_worker.py +++ b/bahmni_api_feed/models/api_event_worker.py @@ -50,6 +50,12 @@ def _create_or_update_customer(self, vals): for rec in customer_vals.keys(): if not customer_vals[rec]: del customer_vals[rec] + address_data = vals.get('preferredAddress') + # get validated address details + address_details = self.env['address.mapping.service']._map_address_fields(address_data) + # update address details + customer_vals.update(address_details) + _logger.info("Customer vals: %s", customer_vals) existing_customer = self.env['res.partner'].search([('ref', '=', patient_ref)]) if existing_customer: existing_customer.write(customer_vals) @@ -65,11 +71,6 @@ def _get_customer_vals(self, vals): 'local_name': vals.get('local_name') if vals.get('local_name') else False, 'uuid': vals.get('uuid'), 'customer_rank': 1}) - address_data = vals.get('preferredAddress') - # get validated address details - address_details = self.env['address.mapping.service']._map_address_fields(address_data) - # update address details - res.update(address_details) # update other details : for now there is only scope of updating contact. if vals.get('primaryContact'): res.update({'phone': vals['primaryContact']})